0Pricing
AI Agents · Lezione

Retrieval multi-vettore (ColBERT)

Indicizzi più vettori per documento, uno per token o chunk, per ottenere corrispondenze più dettagliate.

Retrieval multi-vettore (ColBERT) è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Agents, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Agents include 4 lezioni in totale.

Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.

Un solo vettore non basta

Il RAG standard inserisce ogni chunk in un singolo vettore. Quel vettore fa una media di tutto ciò che contiene il chunk, perdendo segnali dettagliati.

Il recupero multi-vettore archivia PIÙ vettori per documento e li confronta con maggiore precisione.

L'idea alla base di ColBERT

ColBERT (Khattab & Zaharia, 2020) crea un embedding per ogni TOKEN del documento e della query, quindi calcola la similarità massima:

score(q, d) = sum over q_token in q: max over d_token in d: cos(q_token, d_token)

Perché ColBERT supera il vettore singolo

  • Acquisisce più aspetti di un documento, cosa impossibile con un solo vettore
  • Gestisce meglio i documenti lunghi
  • Offre un recall maggiore per i termini rari

Il costo di ColBERT

Archiviare un vettore per token invece di uno per chunk comporta:

  • Se un chunk contiene 500 token, lo spazio di archiviazione aumenta di 500 volte
  • Ogni ricerca confronta molte più coppie

La quantizzazione e il pruning riducono questo fattore di 10-50 volte, ma il costo rimane elevato.

ColBERTv2

ColBERTv2 aggiunge la compressione residua: i token vengono raggruppati in centroidi e ogni token viene archiviato come (centroid_id, small_residual). Lo spazio di archiviazione diminuisce di 50 volte.

Eseguire ColBERT

La libreria RAGatouille semplifica l'operazione:

# 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)

Il multi-vettore nella pratica

Oltre a ColBERT, esistono altri approcci multi-vettore:

  • Parent-child — crea embedding di piccoli chunk e recupera i parent più grandi
  • Summary + chunks — crea embedding sia del riepilogo di un documento sia dei singoli chunk
  • Hypothetical questions — crea embedding di coppie di domande e risposte sintetizzate a partire da ogni documento

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.

Quando utilizzare ColBERT

  • Ricerca ad alta posta in gioco, come quella legale o medica
  • Documenti lunghi
  • Quando si può sostenere il costo di archiviazione

Quando evitarlo

  • Corpus di piccole dimensioni
  • Percorsi sensibili alla latenza
  • Progetti soggetti a vincoli di costo

Approccio ibrido con BM25

Per ottenere il massimo recall, combini il recupero multi-vettore con la ricerca classica per parole chiave BM25. Utilizzi Reciprocal Rank Fusion per unire i risultati.

Compromesso di ColBERT

Qual è il principale compromesso dell'utilizzo del recupero multi-vettore in stile ColBERT?

Riepilogo

Un vettore per chunk perde informazioni. ColBERT archivia vettori per token per ottenere una precisione maggiore. RAGatouille semplifica l'operazione. Lo utilizzi quando il recall è importante e i costi lo consentono.

Domande Frequenti

La lezione «Retrieval multi-vettore (ColBERT)» è gratuita?

Sì — il testo completo di «Retrieval multi-vettore (ColBERT)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Agents, passa a CoddyKit PRO. Il corso AI Agents include 4 lezioni in totale.

Cosa imparerò in «Retrieval multi-vettore (ColBERT)»?

Indicizzi più vettori per documento, uno per token o chunk, per ottenere corrispondenze più dettagliate. Eserciti AI Agents con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare AI Agents?

Non è richiesta alcuna esperienza precedente. AI Agents su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Retrieval multi-vettore (ColBERT)»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione AI Agents?

Sì. Ogni lezione AI Agents include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Riordinamento con cross-encoder
  2. HyDE: embedding di documenti ipotetici
  3. Retrieval multi-vettore (ColBERT)
  4. Valutazione RAG (RAGAS, Recall@K)
← Torna a AI Agents