Chapitre 1 : Qu'est-ce que RAG ?
Introduction
La génération augmentée par récupération (RAG) est une technique qui améliore les grands modèles de langage (LLM) en leur fournissant des informations pertinentes récupérées à partir de sources de connaissances externes. Au lieu de se fier uniquement aux données d'entraînement du modèle, les systèmes RAG récupèrent des documents pertinents et les utilisent pour générer des réponses plus précises, à jour et contextuellement pertinentes.
Le concept de base
Pensez à RAG comme à un examen à livre ouvert :
- Sans RAG (Livre fermé) : Le LLM répond aux questions en utilisant uniquement ce qu'il a mémorisé pendant l'entraînement
- Avec RAG (Livre ouvert) : Le LLM peut consulter des informations pertinentes avant de répondre
Étymologie et historique
Le terme "génération augmentée par récupération" a été inventé par Lewis et al. dans leur article de 2020 "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks".
Étapes clés :
- 2020 : Publication de l'article original sur RAG par Facebook AI Research
- 2021 : Améliorations de la récupération de passages denses (DPR)
- 2022 : Les bases de données vectorielles deviennent courantes
- 2023 : LangChain et LlamaIndex popularisent les pipelines RAG
- 2024 : Techniques RAG avancées (HyDE, Multi-Query, etc.)
RAG vs autres approches
RAG vs Ajustement fin
| Aspect | RAG | Ajustement fin |
|---|---|---|
| Mises à jour des données | En temps réel | Nécessite un réentraînement |
| Coût | Moindre | Plus élevé |
| Idéal pour | Connaissances dynamiques | Changements de comportement |
| Transparence | Peut citer des sources | Boîte noire |
| Complexité de configuration | Modérée | Plus élevée |
RAG vs Ingénierie de prompt
| Aspect | RAG | Ingénierie de prompt |
|---|---|---|
| Taille du contexte | Peut gérer de grandes bases de connaissances | Limité par la fenêtre de contexte |
| Précision | Plus élevée pour les requêtes factuelles | Dépend des connaissances du modèle |
| Cas d'utilisation | Tâches nécessitant des connaissances | Tâches générales |
Les deux composants
1. Récupérateur
Le récupérateur est responsable de trouver des informations pertinentes :
# Concept simplifié de récupérateur
def retrieve(query, knowledge_base, top_k=5):
"""
Trouver les documents les plus pertinents pour une requête
"""
# Convertir la requête en embedding
query_embedding = embed(query)
# Rechercher dans la base de connaissances
results = knowledge_base.similarity_search(
query_embedding,
top_k=top_k
)
return results
2. Générateur
Le générateur utilise le contexte récupéré pour produire des réponses :
# Concept simplifié de générateur
def generate(query, retrieved_docs, llm):
"""
Générer une réponse en utilisant le contexte récupéré
"""
# Construire le prompt avec le contexte
context = "\n".join([doc.content for doc in retrieved_docs])
prompt = f"""Based on the following context, answer the question.
Context:
{context}
Question: {query}
Answer:"""
# Générer la réponse
response = llm.generate(prompt)
return response
Analogie du monde réel
Imaginez que vous êtes un agent de support client :
Sans RAG :
Vous répondez aux questions de mémoire, donnant potentiellement des informations obsolètes ou incorrectes.
Avec RAG :
Avant de répondre, vous consultez rapidement la base de connaissances de votre entreprise, trouvez le document de politique pertinent et fournissez une réponse précise avec une référence.
Quand utiliser RAG
RAG est idéal lorsque vous avez besoin de :
✅ Informations à jour - Documents d'entreprise, actualités, recherches
✅ Connaissances spécifiques au domaine - Documents médicaux, juridiques, techniques
✅ Attribution des sources - Citer d'où provient l'information
✅ Accès aux données privées - Informations internes à l'entreprise
✅ Réduction des hallucinations - Ancrer les réponses dans les faits
RAG pourrait ne pas être le meilleur choix lorsque :
❌ Écriture créative - Poésie, fiction, brainstorming
❌ Conversation générale - Une discussion informelle n'a pas besoin de récupération
❌ Changements de comportement - Enseigner au modèle un nouveau style (utiliser l'ajustement fin)
Applications industrielles
Support client
Utilisateur : "Quelle est votre politique de retour pour les produits électroniques ?"
RAG : Récupère la politique de retour actuelle → Génère une réponse précise
Recherche juridique
Utilisateur : "Trouver la jurisprudence sur la propriété intellectuelle dans le logiciel"
RAG : Récupère les cas pertinents → Résume les conclusions
Informations médicales
Utilisateur : "Quels sont les effets secondaires du médicament X ?"
RAG : Récupère les documents de la FDA → Fournit une liste précise
Recherche d'entreprise
Utilisateur : "Qu'est-ce qui a été discuté lors de la réunion du conseil du dernier trimestre ?"
RAG : Récupère les comptes rendus de réunion → Résume les points clés
Terminologie clé
| Terme | Définition |
|---|---|
| Récupération | Le processus de recherche de documents pertinents |
| Augmentation | Ajouter le contexte récupéré au prompt |
| Génération | LLM produisant une réponse |
| Base de connaissances | Collection de documents à rechercher |
| Embedding | Représentation vectorielle du texte |
| Recherche sémantique | Trouver des documents par signification, pas par mots-clés |
Résumé
- RAG combine récupération et génération pour de meilleures réponses d'IA
- Il résout les principales limitations des LLM comme les connaissances obsolètes et les hallucinations
- Deux composants principaux : Récupérateur (trouve les documents) + Générateur (produit la réponse)
- Idéal pour les tâches nécessitant des connaissances nécessitant précision et citations
- Différent de l'ajustement fin - RAG est pour les connaissances, l'ajustement fin pour le comportement
Prochaines étapes
Continuez vers Chapitre 2 : Pourquoi RAG ? pour comprendre les problèmes spécifiques que RAG résout.