Chapitre 2 : Pourquoi RAG ? Problèmes avec les LLM purs
Introduction
Les grands modèles de langage comme GPT-4, Claude et Llama sont incroyablement puissants, mais ils ont des limitations fondamentales qui les rendent inadaptés à de nombreuses applications d'entreprise sans augmentation. Ce chapitre explore ces limitations et montre comment RAG répond à chacune d'elles.
Les quatre principales limitations des LLM
1. Hallucinations
Le problème : Les LLM peuvent générer avec confiance de fausses informations qui semblent plausibles. Ils sont entraînés à prédire le prochain token, pas à être factuellement exacts.
Utilisateur : "Qui a gagné le Super Bowl 2024 ?"
LLM (sans RAG) : "Les Kansas City Chiefs ont gagné le Super Bowl 2024,
en battant les San Francisco 49ers 25-22."
Mais que se passe-t-il si c'est faux ? Le LLM ne "sait" pas - il prédit.
Pourquoi cela arrive :
- Les LLM sont des machines à probabilité, pas des bases de données factuelles
- Les données d'entraînement contiennent des erreurs et des contradictions
- Aucun mécanisme pour vérifier le contenu généré
Solution RAG :
# Avec RAG, nous ancrons la réponse dans des faits récupérés
retrieved_doc = "Super Bowl LVIII (2024) : Kansas City Chiefs ont battu
les San Francisco 49ers 25-22 le 11 février 2024."
# Le LLM dispose maintenant d'informations vérifiées à référencer
response = llm.generate(
f"Basé sur ce fait : {retrieved_doc}, répondez à la question..."
)
2. Limite de connaissance
Le problème : Les LLM ont une date limite de connaissance - ils ne connaissent pas les événements après la collecte de leurs données d'entraînement.
| Modèle | Limite de connaissance |
|---|---|
| GPT-4 | Septembre 2023 |
| Claude 3 | Début 2024 |
| Llama 2 | Juillet 2023 |
Impact réel :
Utilisateur : "Quel est le prix actuel du Bitcoin ?"
LLM (sans RAG) : "À la date limite de ma connaissance, le Bitcoin se négociait
autour de 30 000 $..."
❌ Cela pourrait être obsolète de plusieurs mois ou années !
Solution RAG :
# Récupérer les données actuelles d'une source en direct
current_price = retrieve_from_api("bitcoin_price")
# Résultat : {"price": 97500, "timestamp": "2024-12-23"}
# Maintenant, le LLM peut fournir des informations précises et en temps réel
response = llm.generate(
f"Le prix actuel du Bitcoin est de ${current_price['price']}..."
)
3. Pas d'accès aux données privées
Le problème : Les LLM sont entraînés sur des données publiques. Ils n'ont aucune connaissance de :
- Les documents internes de votre entreprise
- Les données privées des clients
- La recherche propriétaire
- Les politiques et procédures internes
Impact commercial :
Employé : "Quelle est notre politique de vacances pour les employés avec plus de 5 ans ?"
LLM (sans RAG) : "Je n'ai pas accès aux politiques spécifiques de votre entreprise..."
❌ Le LLM est inutile pour les requêtes internes !
Solution RAG :
# Indexer les documents de l'entreprise dans la base de connaissances
knowledge_base.add_documents([
"Manuel de l'employé 2024.pdf",
"Politiques RH.docx",
"Guide des avantages.pdf"
])
# Maintenant, les requêtes peuvent être répondues à partir de données privées
retrieved = knowledge_base.search("politique de vacances 5 ans d'ancienneté")
# Renvoie : "Les employés avec plus de 5 ans reçoivent 25 jours de congés payés..."
response = llm.generate(f"Basé sur la politique de l'entreprise : {retrieved}...")
4. Limites de tokens / Fenêtres de contexte
Le problème : Les LLM ont des fenêtres de contexte limitées. Même GPT-4 avec 128K tokens ne peut pas traiter :
- Une base de données complète de contrats juridiques
- Des années de tickets de support client
- Un code source entier
Comparaison des fenêtres de contexte :
| Modèle | Fenêtre de contexte | ~Pages de texte |
|---|---|---|
| GPT-3.5 | 4K tokens | ~3 pages |
| GPT-4 | 8K-128K tokens | 6-100 pages |
| Claude 3 | 200K tokens | ~150 pages |
Le problème mathématique :
Votre base de connaissances : 10 000 documents
Document moyen : 5 000 tokens
Total : 50 000 000 tokens
Même le contexte de 200K de Claude 3 ne peut contenir que 0,4 % de vos données !
Solution RAG :
# Au lieu de tout charger, récupérer uniquement les documents pertinents
def smart_retrieval(query, knowledge_base):
# Ne récupérer que les 5 documents les plus pertinents
relevant_docs = knowledge_base.similarity_search(
query,
top_k=5 # ~25 000 tokens au lieu de 50M
)
return relevant_docs
# Maintenant, nous utilisons efficacement la fenêtre de contexte
retrieved = smart_retrieval("politique de vacances", kb) # ~5 docs
response = llm.generate(f"Contexte : {retrieved}\n\nQuestion : ...")
Comparaison côte à côte
Sans RAG
Problèmes :
- Peut halluciner
- Limité aux données d'entraînement
- Pas d'accès aux données privées
- Risque de débordement de contexte
Avec RAG
Avantages :
- Fondé sur des faits
- Informations en temps réel
- Accès aux données privées
- Utilisation efficace du contexte
Comparaison des coûts
| Approche | Coût mensuel* | Précision | Fraîcheur |
|---|---|---|---|
| LLM pur | 500 $ | 70-80% | Statique |
| RAG | 700 $ | 90-95% | En temps réel |
| Ajustement fin | 5 000 $+ | 85-90% | Statique |
*Estimé pour un cas d'utilisation d'entreprise avec 10K requêtes/jour
Quand RAG échoue
RAG n'est pas parfait. Soyez conscient de ces scénarios :
1. Échecs de récupération
Problème : Documents récupérés incorrects
Exemple : L'utilisateur demande des informations sur "l'action Apple" mais récupère des documents sur les pommes (fruit)
Solution : Meilleurs embeddings, filtrage des métadonnées, recherche hybride
2. Mauvaise utilisation du contexte
Problème : Le LLM ignore ou interprète mal le contexte récupéré
Exemple : La politique récupérée dit "30 jours" mais le LLM dit "60 jours"
Solution : Meilleur prompt, contexte plus petit, instructions explicites
3. Base de connaissances obsolète
Problème : La base de connaissances n'est pas mise à jour
Exemple : Les documents ont 6 mois, l'information est obsolète
Solution : Synchronisation régulière, mises à jour automatisées, indicateurs de fraîcheur
Tableau récapitulatif
| Problème | Impact | Solution RAG |
|---|---|---|
| Hallucinations | Informations fausses | Ancrer dans des faits récupérés |
| Limite de connaissance | Réponses obsolètes | Connecter à des données fraîches |
| Pas de données privées | Ne peut pas répondre aux requêtes internes | Indexer les documents de l'entreprise |
| Limites de tokens | Ne peut pas traiter de grands ensembles de données | Récupération intelligente |
Points clés à retenir
- Les LLM ont des limitations fondamentales qui empêchent leur adoption en entreprise
- RAG résout les plus gros problèmes : hallucinations, limite de connaissance, données privées, échelle
- RAG est rentable comparé à l'ajustement fin
- RAG n'est pas parfait mais apporte des améliorations significatives
- Comprendre les limitations aide à concevoir de meilleurs systèmes
Prochaines étapes
Continuez vers Chapitre 3 : Architecture RAG pour en savoir plus sur les trois phases de RAG.