AI-agenter · leksjon

Gjenfinning med flere vektorer (ColBERT)

Indekser flere vektorer per dokument (én per token eller del) for detaljert matching.

Leksjon 3 av 414 trinn

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.

Gratis å komme i gang

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

  1. Omrangering med krysskodere
  2. HyDE: hypotetiske dokumentembedding-er
  3. Gjenfinning med flere vektorer (ColBERT)
  4. RAG-evaluering (RAGAS, Recall@K)
← Tilbake til AI-agenter