Multi-Vector-Retrieval (ColBERT)
Indexieren Sie mehrere Vektoren pro Dokument (einen pro Token oder Chunk) für eine feingranulare Zuordnung.
Multi-Vector-Retrieval (ColBERT) ist eine kostenlose AI Agents-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AI Agents-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
Ein Vektor reicht nicht aus
Standard-RAG bettet jeden Chunk in einen einzigen Vektor ein. Dieser Vektor mittelt alle Inhalte des Chunks und verliert dadurch feingranulare Signale.
Multi-Vektor-Abruf speichert MEHRERE Vektoren pro Dokument und führt präzisere Übereinstimmungen durch.
Die ColBERT-Idee
ColBERT (Khattab & Zaharia, 2020) bettet jedes TOKEN des Dokuments und jedes Token der Anfrage ein und berechnet anschließend die maximale Ähnlichkeit:
score(q, d) = sum over q_token in q: max over d_token in d: cos(q_token, d_token)Warum ColBERT einzelne Vektoren übertrifft
- Erfasst mehrere Aspekte eines Dokuments (ein Vektor kann das nicht)
- Verarbeitet lange Dokumente besser
- Erzielt eine höhere Recall-Rate bei seltenen Begriffen
Kosten von ColBERT
Wenn Sie einen Vektor pro Token statt pro Chunk speichern:
- Bei einem Chunk mit 500 Tokens benötigen Sie 500-mal mehr Speicher
- Jede Suche vergleicht deutlich mehr Paare
Quantisierung und Pruning reduzieren diesen Faktor auf das 10- bis 50-Fache, dennoch bleibt es kostspielig.
ColBERTv2
ColBERTv2 ergänzt eine Residualkomprimierung – Tokens werden zu Zentroiden gruppiert, und jedes Token wird als (centroid_id, small_residual) gespeichert. Der Speicherbedarf sinkt um den Faktor 50.
ColBERT ausführen
Die Bibliothek RAGatouille macht das einfach:
# pip install ragatouille
from ragatouille import RAGPretrainedModel
rag = RAGPretrainedModel.from_pretrained('colbert-ir/colbertv2.0')
rag.index(collection=documents, index_name='my_corpus')
results = rag.search(query='What is the refund policy?', k=5)Multi-Vektor in der Praxis
Neben ColBERT gibt es weitere Multi-Vektor-Ansätze:
- Parent-Child – kleine Chunks einbetten, große übergeordnete Chunks abrufen
- Zusammenfassung + Chunks – sowohl eine Dokumentzusammenfassung als auch einzelne Chunks einbetten
- Hypothetische Fragen – aus jedem Dokument synthetisierte Frage-Antwort-Paare einbetten
Hypothetical Questions Pattern
def index_with_hypos(doc):
# Generate 5 plausible questions this doc could answer
questions = llm.invoke(f'Write 5 questions answered by this doc:\n{doc}').content.split('\n')
for q in questions:
vector_db.add(embed(q), payload={'doc': doc, 'question': q})
# Now queries that match a stored hypothetical question retrieve the doc.Parent-Child with LangChain
from langchain.retrievers import ParentDocumentRetriever
from langchain.storage import InMemoryStore
store = InMemoryStore()
retriever = ParentDocumentRetriever(
vectorstore=child_vectorstore,
docstore=store,
child_splitter=child_splitter, # small
parent_splitter=parent_splitter # large
)
retriever.add_documents(documents)
# Indexes small chunks, returns large parents.Wann Sie ColBERT verwenden sollten
- Suche in Bereichen mit hohen Anforderungen (Recht, Medizin)
- Lange Dokumente
- Wenn Sie sich die Speicherkosten leisten können
Wann Sie darauf verzichten sollten
- Kleine Korpora
- Latenzempfindliche Pfade
- Kostenbeschränkte Projekte
Hybrid mit BM25
Für maximale Recall-Rate kombinieren Sie den Multi-Vektor-Abruf mit der klassischen BM25-Schlüsselwortsuche. Verwenden Sie Reciprocal Rank Fusion zum Zusammenführen der Ergebnisse.
Abwägung bei ColBERT
Was ist der wichtigste Nachteil des Multi-Vektor-Abrufs nach dem ColBERT-Prinzip?
Zusammenfassung
Ein Vektor pro Chunk verliert Informationen. ColBERT speichert Vektoren pro Token und erzielt dadurch eine höhere Präzision. RAGatouille macht die Verwendung einfach. Setzen Sie es ein, wenn Recall wichtig ist und die Kosten vertretbar sind.
Häufig gestellte Fragen
Ist die Lektion „Multi-Vector-Retrieval (ColBERT)“ kostenlos?
Ja — der vollständige Text von „Multi-Vector-Retrieval (ColBERT)“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AI Agents-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Multi-Vector-Retrieval (ColBERT)“?
Indexieren Sie mehrere Vektoren pro Dokument (einen pro Token oder Chunk) für eine feingranulare Zuordnung. Du übst AI Agents mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um AI Agents zu starten?
Keine Vorkenntnisse erforderlich. AI Agents auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Multi-Vector-Retrieval (ColBERT)“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser AI Agents-Lektion Code schreiben und ausführen?
Ja. Jede AI Agents-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Re-Ranking mit Cross-Encodern
- HyDE: hypothetische Dokument-Embeddings
- Multi-Vector-Retrieval (ColBERT)
- RAG-Evaluierung (RAGAS, Recall@K)