Recherche multi-vectorielle (ColBERT)
Indexez plusieurs vecteurs par document (un par jeton ou segment) pour obtenir une correspondance détaillée.
Recherche multi-vectorielle (ColBERT) est une leçon AI Agents gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Agents, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Agents comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Un seul vecteur ne suffit pas
Un RAG standard vectorise chaque segment en un seul vecteur. Ce vecteur fait la moyenne de tout ce qui se trouve dans le segment et perd ainsi les informations détaillées.
La récupération multi-vecteurs stocke MULTIPLE vecteurs par document et les met en correspondance avec davantage de précision.
Idée de ColBERT
ColBERT (Khattab et Zaharia, 2020) vectorise chaque TOKEN du document et chaque token de la requête, puis calcule la similarité maximale :
score(q, d) = sum over q_token in q: max over d_token in d: cos(q_token, d_token)Pourquoi ColBERT surpasse le vecteur unique
- Capture plusieurs aspects d’un document (un seul vecteur ne le peut pas)
- Gère mieux les documents longs
- Offre un meilleur rappel pour les termes rares
Coût de ColBERT
Stocker un vecteur par token plutôt que par segment :
- Si un segment contient 500 tokens, cela représente 500 fois plus de stockage
- Chaque recherche compare beaucoup plus de paires
La quantification et l’élagage réduisent ce facteur de 10 à 50, mais la méthode reste coûteuse.
ColBERTv2
ColBERTv2 ajoute une compression résiduelle : les tokens sont regroupés autour de centroïdes et chaque token est stocké sous la forme (identifiant_du_centroïde, petit_résidu). Le stockage est réduit d’un facteur 50.
Exécuter ColBERT
La bibliothèque RAGatouille simplifie cette opération :
# 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)Les multi-vecteurs en pratique
Au-delà de ColBERT, il existe d’autres approches multi-vecteurs :
- Parent-enfant — vectoriser de petits segments et récupérer les segments parents plus grands
- Résumé et segments — vectoriser à la fois le résumé d’un document et ses segments individuels
- Questions hypothétiques — vectoriser des paires de questions-réponses synthétisées à partir de chaque document
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.Quand utiliser ColBERT
- Recherche à forts enjeux (juridique, médicale)
- Documents longs
- Lorsque vous pouvez assumer le coût du stockage
Quand s’en passer
- Petits corpus
- Chemins d’exécution sensibles à la latence
- Projets soumis à des contraintes de coût
Hybride avec BM25
Pour maximiser le rappel, combinez la récupération multi-vecteurs avec une recherche classique par mots-clés BM25. Utilisez la fusion réciproque des rangs pour les combiner.
Compromis de ColBERT
Quel est le principal compromis lié à l’utilisation d’une récupération multi-vecteurs de type ColBERT ?
Récapitulatif
Un vecteur par segment entraîne une perte d’informations. ColBERT stocke des vecteurs par token pour obtenir une meilleure précision. RAGatouille simplifie cette opération. Utilisez-le lorsque le rappel est important et que le coût est acceptable.
Questions Fréquemment Posées
La leçon « Recherche multi-vectorielle (ColBERT) » est-elle gratuite ?
Oui — le texte complet de « Recherche multi-vectorielle (ColBERT) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Agents, passe à CoddyKit PRO. Le cours AI Agents comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Recherche multi-vectorielle (ColBERT) » ?
Indexez plusieurs vecteurs par document (un par jeton ou segment) pour obtenir une correspondance détaillée. Tu pratiques AI Agents avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer AI Agents ?
Aucune expérience préalable n'est requise. AI Agents sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Recherche multi-vectorielle (ColBERT) » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon AI Agents ?
Oui. Chaque leçon AI Agents inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Reclassement avec des encodeurs croisés
- HyDE : embeddings de documents hypothétiques
- Recherche multi-vectorielle (ColBERT)
- Évaluation de RAG (RAGAS, Recall@K)