La génération augmentée par récupération (Retrieval-Augmented Generation, RAG) consiste à brancher un modèle de langage sur une base de connaissances externe : plutôt que de répondre uniquement avec ce qu'il a mémorisé pendant son entraînement, le modèle va d'abord chercher les documents pertinents, puis rédige sa réponse en s'appuyant dessus. C'est l'équivalent d'un étudiant qui consulte ses notes avant de répondre, au lieu de réciter de mémoire.
Comment ça marche
Le pipeline RAG se déroule en trois temps :
- Indexation : les documents sont découpés en fragments (chunks), convertis en vecteurs (embeddings) et stockés dans une base vectorielle.
- Récupération : la question de l'utilisateur est elle aussi vectorisée, puis comparée aux fragments par similarité (souvent le cosinus).
- Génération : les fragments les plus proches sont injectés dans le prompt comme contexte, et le modèle rédige sa réponse.
La similarité entre la requête $q$ et un document $d$ se mesure typiquement par :
$$\text{sim}(q, d) = \frac{\mathbf{q} \cdot \mathbf{d}}{\lVert \mathbf{q} \rVert \, \lVert \mathbf{d} \rVert}$$
Pourquoi l'utiliser
| Critère | Modèle seul | Avec RAG |
|---|---|---|
| Connaissances à jour | figées à l'entraînement | actualisables sans réentraînement |
| Hallucinations | fréquentes | réduites (réponses ancrées) |
| Traçabilité | aucune | sources citables |
| Coût | réentraînement lourd | mise à jour de l'index |
Usages concrets
Le RAG est devenu le socle des assistants documentaires d'entreprise, des chatbots de support et des moteurs de recherche conversationnels. Il permet d'interroger des données privées et récentes sans coût de réentraînement.
Le RAG ne rend pas le modèle plus intelligent : il lui donne la bonne page au bon moment.