Gjenfinning med flere vektorer (ColBERT)
Indekser flere vektorer per dokument (én per token eller del) for detaljert matching.
Gjenfinning med flere vektorer (ColBERT) er en gratis leksjon i AI-agenter på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i AI-agenter, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i AI-agenter inneholder totalt 4 leksjoner.
Deler av denne leksjonen er ennå ikke oversatt og vises på engelsk.
Én vektor er ikke nok
Standard RAG lager embedding av hver tekstbit i én enkelt vektor. Denne vektoren gjennomsnittliggjør alt i tekstbiten og mister detaljerte signaler.
Gjenfinning med flere vektorer lagrer FLERE vektorer per dokument og gjør samsvaringen mer presist.
ColBERT-idéen
ColBERT (Khattab & Zaharia, 2020) lager embedding av hver TOKEN i dokumentet og hver token i spørringen, og beregner deretter maks-likhet:
score(q, d) = sum over q_token in q: max over d_token in d: cos(q_token, d_token)Hvorfor ColBERT er bedre enn én vektor
- Fanger opp flere aspekter ved et dokument (én vektor kan ikke gjøre det)
- Håndterer lange dokumenter bedre
- Gir høyere dekning for sjeldne termer
Kostnaden ved ColBERT
Lagring av én vektor per token i stedet for per tekstbit:
- Hvis en tekstbit har 500 token, betyr det 500 ganger mer lagring
- Hvert søk sammenligner langt flere par
Kvantisering og beskjæring reduserer dette 10–50 ganger, men det er fortsatt kostbart.
ColBERTv2
ColBERTv2 legger til residualkomprimering – tokenene samles i sentroider, og hvert token lagres som (centroid_id, small_residual). Lagringsbehovet reduseres 50 ganger.
Kjøre ColBERT
Biblioteket RAGatouille gjør dette enkelt:
# 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)Flere vektorer i praksis
Utover ColBERT finnes det flere tilnærminger med flere vektorer:
- Parent-child – lag embedding av små tekstbiter, og hent overordnede større tekstbiter
- Sammendrag + tekstbiter – lag embedding både av et dokumentsammendrag og av de enkelte tekstbitene
- Hypotetiske spørsmål – lag embedding av Q&A-par som er syntetisert fra hvert dokument
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.Når ColBERT bør brukes
- Søk med store konsekvenser (juridisk og medisinsk)
- Lange dokumenter
- Når De har råd til lagringskostnaden
Når det bør unngås
- Små korpus
- Baner der ventetid er viktig
- Prosjekter med stramme kostnadsrammer
Hybrid med BM25
For maksimal dekning kan De kombinere gjenfinning med flere vektorer med klassisk BM25-søk etter nøkkelord. Bruk Reciprocal Rank Fusion til å slå sammen resultatene.
Avveiningen ved ColBERT
Hva er den viktigste avveiningen ved å bruke gjenfinning med flere vektorer av ColBERT-typen?
Oppsummering
Én vektor per tekstbit mister informasjon. ColBERT lagrer vektorer per token for høyere presisjon. RAGatouille gjør dette enkelt. Bruk det når dekning er viktig og kostnaden kan aksepteres.
Lær deg AI-agenter med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 60
- Leksjoner
- 239
Ofte stilte spørsmål
Er leksjonen «Gjenfinning med flere vektorer (ColBERT)» gratis?
Ja – hele teksten i «Gjenfinning med flere vektorer (ColBERT)» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av AI-agenter-kurset, kan du oppgradere til CoddyKit PRO. Kurset i AI-agenter inneholder totalt 4 leksjoner.
Hva lærer jeg i «Gjenfinning med flere vektorer (ColBERT)»?
Indekser flere vektorer per dokument (én per token eller del) for detaljert matching. Du øver på AI-agenter med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med AI-agenter?
Ingen tidligere erfaring er nødvendig. AI-agenter på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Gjenfinning med flere vektorer (ColBERT)»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne AI-agenter-leksjonen?
Ja. Alle AI-agenter-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Omrangering med krysskodere
- HyDE: hypotetiske dokumentembedding-er
- Gjenfinning med flere vektorer (ColBERT)
- RAG-evaluering (RAGAS, Recall@K)