Aller au contenu principal

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​

AspectRAGAjustement fin
Mises à jour des donnéesEn temps réelNécessite un réentraînement
CoûtMoindrePlus élevé
Idéal pourConnaissances dynamiquesChangements de comportement
TransparencePeut citer des sourcesBoîte noire
Complexité de configurationModéréePlus élevée

RAG vs Ingénierie de prompt​

AspectRAGIngénierie de prompt
Taille du contextePeut gérer de grandes bases de connaissancesLimité par la fenêtre de contexte
PrécisionPlus élevée pour les requêtes factuellesDépend des connaissances du modèle
Cas d'utilisationTâches nécessitant des connaissancesTâ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é​

TermeDéfinition
RécupérationLe processus de recherche de documents pertinents
AugmentationAjouter le contexte récupéré au prompt
GénérationLLM produisant une réponse
Base de connaissancesCollection de documents à rechercher
EmbeddingReprésentation vectorielle du texte
Recherche sémantiqueTrouver 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.