Retrieval Augmented Generation (RAG)
La génération augmentée par récupération (RAG) récupère des passages pertinents dans une base de connaissances externe et les ajoute au prompt d’un LLM. Les réponses s’appuient ainsi sur des sources actuelles, privées et citables.
La génération augmentée par récupération (RAG) est une technique dans laquelle un grand modèle de langage (LLM) répond à une question en utilisant des passages récupérés au moment de la requête depuis une source de connaissances externe, puis insérés dans son invite à côté de la question. Les données d’entraînement d’un LLM s’arrêtent à une date limite et ne comprennent jamais les documents internes d’une entreprise ; sans récupération, le modèle ne dispose donc pas des faits ou en invente de plausibles, ce qu’on appelle une hallucination. Le terme vient de l’article de 2020 Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks, écrit par Patrick Lewis et ses collègues de Facebook AI Research. Ceux-ci ont associé un générateur BART préentraîné à un récupérateur neuronal s’appuyant sur un index vectoriel dense de Wikipédia, et établi un nouvel état de l’art sur trois tâches de réponse à des questions en domaine ouvert. Aujourd’hui, le terme désigne tout système qui récupère d’abord des informations, puis génère une réponse.
Fonctionnement d’un pipeline RAG#
RAG s’exécute en deux étapes. L’indexation a lieu à l’avance : les documents sont divisés en passages, par exemple au moyen du découpage sémantique, chaque passage est converti en représentation vectorielle, puis les vecteurs sont stockés dans une base de données vectorielle. Au moment de la requête, la question est vectorisée avec le même modèle, la recherche vectorielle renvoie les passages les plus proches et le système construit une invite à partir d’instructions, de ces passages et de la question. Le LLM rédige alors une réponse étayée par le texte fourni et peut citer le passage à l’appui de chaque affirmation.
Les systèmes de production ajoutent des étapes autour de ce processus de base. La recherche hybride associe la similarité vectorielle à la correspondance de mots-clés pour ne pas manquer des termes exacts comme des numéros de pièce ; un réordonnanceur reclasse les principaux candidats à l’aide d’un modèle plus précis ; et la récupération contextuelle consiste à demander à un LLM d’ajouter une courte note à chaque bloc pour le situer dans son document avant l’indexation. Des frameworks comme LangChain et LlamaIndex regroupent ces composants.
Les étapes de récupération et d’augmentation tiennent en quelques lignes de Python avec la bibliothèque Sentence Transformers :
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
# Knowledge base: passages the LLM never saw during training
passages = [
"Badge access to Building C requires a safety briefing completed within the last 12 months.",
"The cafeteria in Building A serves breakfast from 7:00 to 9:30 on weekdays.",
"Forklift operators must renew their certification every three years.",
]
passage_embeddings = model.encode(passages)
# Retrieve: embed the question and keep the most similar passage
question = "How often do I need to redo forklift training?"
scores = model.similarity(model.encode(question), passage_embeddings)[0]
context = passages[int(scores.argmax())]
# Augment: put the retrieved passage in the prompt the LLM will answer from
prompt = f"Answer using only this context.\nContext: {context}\nQuestion: {question}"
print(prompt)Le code affiche une invite contenant le passage sur la certification de chariot élévateur, auquel la question correspond par le sens : elle demande s’il faut refaire la formation, tandis que le passage parle du renouvellement de la certification. N’importe quel LLM peut répondre à partir de cette invite, et les passages peuvent changer chaque jour sans réentraîner le modèle.
RAG, ajustement fin et contexte long#
- Ajustement fin : Met à jour les poids du modèle à partir de nouveaux exemples. Cette méthode modifie efficacement le comportement, le style et le format de sortie, mais elle ajoute lentement des faits qui changent souvent et ne laisse aucune source à citer. De nombreux systèmes effectuent donc un ajustement fin du format et utilisent RAG pour les connaissances.
- Fenêtres de contexte longues : les modèles qui acceptent un million de tokens peuvent lire directement un grand ensemble de documents, mais chaque requête est facturée pour chaque token, et la précision diminue à mesure que les entrées s’allongent, un effet appelé dérive du contexte. Le RAG n’envoie que les passages pertinents.
Plusieurs variantes étendent le modèle de base : GraphRAG récupère des informations à partir d’un graphe de connaissances, le RAG agentique permet à un agent de décider quand et où effectuer une recherche, et le RAG multimodal récupère aussi des images, des vidéos et de l’audio, en plus du texte.
Applications de RAG#
- Chatbots d’entreprise : Les assistants internes répondent à partir de politiques, de wikis et d’anciens tickets d’assistance, puis indiquent le paragraphe qui justifie chaque réponse.
- Assistance client : Avant de répondre, les assistants récupèrent le manuel correspondant au modèle de produit exact du client et son historique de commandes.
- Santé : Les assistants cliniques récupèrent des recommandations à jour et des références sur les médicaments, afin que leurs réponses renvoient à une source vérifiable plutôt qu’à la mémoire du modèle.
RAG répond aussi aux questions sur les vidéos. Un LLM ne peut pas regarder des heures de séquences pour chaque question ; associer RAG à la vision par ordinateur permet donc d’abord de transformer les séquences en enregistrements consultables. Ultralytics YOLO26 en mode suivi indique la classe, la boîte et l’ID de suivi persistant de chaque objet dans chaque image. Un pipeline stocke ces informations sous forme de lignes ; ainsi, à une question comme « Combien de camions sont entrés au quai 3 ce matin ? », le système récupère ces lignes plutôt que la vidéo.
Pourquoi les réponses RAG sont erronées#
RAG peut échouer à deux étapes. Un échec de récupération signifie que le passage contenant la réponse n’a jamais atteint l’invite, parce que le découpage l’a séparé, que le modèle de représentation vectorielle n’a pas reconnu un synonyme ou qu’il s’est classé juste sous le seuil des k premiers résultats ; on mesure ce phénomène par le rappel à k sur un ensemble de questions de test. Un échec de génération signifie que le bon passage a été récupéré, mais que le modèle l’a ignoré, mal interprété ou contredit. Des bibliothèques d’évaluation comme Ragas évaluent les deux étapes : le rappel du contexte pour le récupérateur et la fidélité pour le générateur, définie comme la proportion d’affirmations de la réponse étayées par le contexte récupéré.










