RAG : ancrer un LLM dans tes données
La génération augmentée par récupération réduit les hallucinations en donnant au modèle les bons documents.
Un LLM ne connaît que ses données d’entraînement — figées, et sans tes documents internes. Le RAG (Retrieval-Augmented Generation) comble ce vide : on récupère les passages pertinents et on les fournit au modèle au moment de répondre.
Le principe en deux temps
- Récupération : trouver, dans ta base, les morceaux de texte liés à la question.
- Génération : passer ces morceaux au LLM comme contexte, pour qu’il réponde en s’appuyant dessus.
Le pipeline d’indexation
En amont, on découpe les documents en morceaux (chunks), on les transforme en vecteurs (embeddings) et on les stocke :
for doc in documents:
for chunk in split(doc, size=500):
vector = embed(chunk)
vector_db.add(vector, metadata={"text": chunk, "source": doc.id})
La requête
q_vec = embed(question)
chunks = vector_db.search(q_vec, top_k=4) # passages les plus proches
prompt = f"Contexte:\n{chunks}\n\nQuestion: {question}"
answer = llm(prompt)
Pourquoi ça marche
Le modèle ne « devine » plus : il répond à partir de faits qu’on lui a fournis. On peut même citer les sources, ce qui rend la réponse vérifiable — un atout décisif en contexte professionnel.
Les points de vigilance
- La qualité du découpage (chunking) conditionne tout.
- Trop de contexte dilue la réponse ; trop peu la prive de l’essentiel.
- Le RAG ne corrige pas un document faux : « garbage in, garbage out ».
Bien fait, le RAG transforme un LLM généraliste en expert de tes données, sans réentraînement coûteux.
Envie d’aller plus loin avec WORKFLOW v6 ?
Découvrir WORKFLOW v6