Aller au contenu principal

Architecture RAG

Corrective RAG (CRAG)

Un évaluateur filtre les documents récupérés et déclenche une correction automatique (web search, raffinement) quand les sources internes sont insuffisantes.

Mis à jour en avril 2026 - Yan et al. (arXiv:2401.15884, 2024)

Corrective RAG - verification et correction automatique des documents

Qu'est-ce que le Corrective RAG ?

Corrective RAG (Yan et al., 2024) part d'un constat : le retriever ne récupère pas toujours les bons documents. Plutôt que de faire confiance aveuglément aux résultats du retrieval, CRAG insère un retrieval evaluator entre le retriever et le générateur. Cet évaluateur classe chaque document en trois catégories : correct, incorrect ou ambigu.

Selon le verdict, CRAG déclenche une action corrective différente. Documents corrects ? Ils sont raffinés pour extraire l'essentiel. Documents incorrects ? Ils sont rejetés et remplacés par une recherche web ciblée. Documents ambigus ? CRAG combine les deux approches. Cette stratégie de triage élimine les sources non pertinentes avant qu'elles n'atteignent le LLM, réduisant les hallucinations à la source.

Contrairement au Self-RAG qui nécessite un fine-tuning du modèle, CRAG fonctionne comme un plug-in compatible avec n'importe quel LLM. C'est une approche pragmatique qui s'intègre dans un pipeline existant sans modifier le générateur.

Outils interactifs

Testez le pipeline CRAG et comparez-le à Self-RAG.

Simulateur de pipeline CRAG

Voyez comment Corrective RAG évalue, corrige ou rejette les documents récupérés selon 3 scénarios.

Requête

Correct

Quelle est la durée maximale d'un CDD en France ?

Retrieval
Évaluation
Action : conserver
Génération

Simulation pédagogique basée sur Yan et al. (arXiv:2401.15884, 2024). Les scores et décisions sont illustratifs.

Comparateur Self-RAG vs CRAG

Comparez les deux approches sur 8 critères pour choisir celle qui convient à votre cas d'usage.

Égalité : 4
ApprocheÉgal

Self-RAG

Le modèle décide lui-même quand retriever via des reflection tokens appris pendant le fine-tuning.

CRAG

Un evaluator externe évalue les documents après le retrieval et décide de les garder, raffiner ou rejeter.

GranularitéSelf-RAG

Self-RAG

Segment par segment - chaque portion de la réponse est évaluée individuellement ([IsSup], [IsUse]).

CRAG

Document entier - l'évaluation porte sur l'ensemble du passage récupéré (correct/ambiguous/incorrect).

FallbackCRAG

Self-RAG

Pas de fallback externe. Si le retrieval est jugé inutile, le modèle génère sans source.

CRAG

Recherche web automatique quand les documents internes sont jugés incorrects ou ambigus.

Fine-tuning requisCRAG

Self-RAG

Oui - le modèle doit être fine-tuné pour apprendre les reflection tokens. Coût d'entraînement significatif.

CRAG

Non - fonctionne avec n'importe quel LLM. L'evaluator est un composant séparé (lightweight).

LatenceÉgal

Self-RAG

Variable - skip le retrieval pour les questions triviales (plus rapide), mais multi-étapes pour les complexes.

CRAG

Constante pour les cas corrects. Ajout de latence significatif pour les cas ambigus/incorrects (web search).

Couverture des sourcesCRAG

Self-RAG

Limitée au corpus interne. Pas d'accès à des sources externes en cas de lacune.

CRAG

Étendue - peut compléter avec le web quand le corpus interne est insuffisant.

HallucinationsÉgal

Self-RAG

-20 à 30 % sur PubHealth et FactScore grâce à la vérification segment par segment.

CRAG

Réduction significative sur PopQA (+5,5 points) et Biography grâce au filtrage strict des sources.

Cas d'usage idéalÉgal

Self-RAG

Corpus stable et complet (médical, juridique interne). Questions variées en complexité.

CRAG

Corpus potentiellement lacunaire ou évolutif. Besoin de fraîcheur (actualités, réglementation).

Basé sur Asai et al. (NeurIPS 2023) pour Self-RAG et Yan et al. (arXiv:2401.15884, 2024) pour CRAG.

Les 4 composants du pipeline CRAG

CRAG s'articule autour de quatre composants qui forment un pipeline de correction. Chaque composant a un rôle précis dans le processus d'évaluation et de filtrage des sources.

Retrieval Evaluator

Évaluer la pertinence des documents récupérés.

Un modèle léger (T5-large fine-tuné ou LLM via prompt) attribue à chaque document un verdict : correct, incorrect ou ambiguous. Le seuil de confiance est configurable (par défaut > 0,7 pour correct, < 0,3 pour incorrect).

Knowledge Refinement

Extraire et restructurer les informations pertinentes.

Méthode decompose-then-recompose : les passages sont découpés en unités de connaissance atomiques, filtrés par pertinence, puis recomposés en un contexte optimisé pour le LLM. Élimine le bruit sans perdre l'information clé.

Web Search Fallback

Compléter le corpus quand les sources internes sont insuffisantes.

Déclenché pour les verdicts incorrect (remplacement total) et ambiguous (complément). La requête web est reformulée par le LLM pour maximiser la précision. Les résultats web passent ensuite par le knowledge refinement.

Generator

Produire la réponse finale à partir du contexte corrigé.

Le LLM génère à partir des passages filtrés et raffinés. Contrairement à Self-RAG, le générateur n'a pas besoin de fine-tuning spécifique - n'importe quel LLM peut être utilisé (GPT-4, Claude, Llama).

L'arbre de décision CRAG

Le retrieval evaluator produit un verdict pour chaque document. Ce verdict détermine l'action corrective appliquée. Voici les trois branches du pipeline.

CorrectConserver et raffiner

Les documents sont pertinents. Le knowledge refinement extrait les segments clés et élimine le bruit pour optimiser le contexte du LLM.

AmbiguRaffiner + recherche web

Documents partiellement pertinents. CRAG combine le knowledge refinement des passages internes avec une recherche web ciblée pour compléter les lacunes.

IncorrectRejeter et rechercher

Documents non pertinents. CRAG les rejette entièrement et déclenche une recherche web avec une requête reformulée. Seules les sources web alimentent le générateur.

Benchmarks CRAG

Yan et al. évaluent CRAG sur 4 datasets couvrant le QA court, la génération longue, la vérification de faits et le QA à choix multiples. Le gain le plus significatif est sur PopQA (+5,5 points d'accuracy).

DatasetTypeCRAGRAG standardDelta
PopQAShort-form QA54,9 %49,4 %+5,5 pts
BiographyLong-form generationScore FactScore élevéBaseline+significatif
PubHealthFact verificationAccuracy amélioréeBaseline+mesuré
ARC-ChallengeMulti-choice QAAccuracy amélioréeBaseline+mesuré

Knowledge Refinement : decompose-then-recompose

Le knowledge refinement est le coeur du pipeline CRAG. Plutôt que de passer les documents bruts au LLM, CRAG les décompose en unités de connaissance atomiques. Chaque unité est une affirmation factuelle autonome extraite du passage original.

Ces unités sont ensuite filtrées par pertinence vis-à-vis de la requête. Les segments non pertinents (contexte historique, digressions, informations connexes mais hors sujet) sont éliminés. Les segments pertinents sont recomposés en un contexte optimisé - plus court, plus dense, plus ciblé.

Ce processus réduit le bruit de 40 à 60 % selon les datasets (Yan et al., 2024). Le LLM reçoit un contexte épuré où chaque phrase contribue directement à la réponse, ce qui diminue le risque de distraction et d'hallucination par association.

1. Décomposer

Chaque passage est segmenté en unités de connaissance atomiques (1 fait = 1 unité).

2. Filtrer

Les unités non pertinentes vis-à-vis de la requête sont éliminées par scoring.

3. Recomposer

Les unités pertinentes sont assemblées en un contexte optimisé pour le LLM.

Implémenter CRAG

CRAG étant un pipeline de composants (pas un modèle fine-tuné), il s'implémente avec les frameworks RAG existants. Voici trois approches courantes.

LangGraph

Implémentation native avec un graph de décision. Chaque nœud (retrieve → evaluate → refine/search → generate) est un step du graph. Idéal pour visualiser et débugger le flux.

  • Graph de décision explicite
  • Conditional edges pour le routing
  • Intégration Tavily pour le web search
  • Visualisation du flux dans LangSmith

LlamaIndex

Utilise le QueryPipeline avec un RetrieverEvaluator custom. Le ConditionModule route vers le refinement ou le web search selon le verdict.

  • QueryPipeline modulaire
  • RetrieverEvaluator pluggable
  • WebSearchRetriever intégré
  • Compatible avec tous les LLM providers

Custom (Python)

Pipeline Python pur avec un evaluator basé sur un LLM (prompt zero-shot ou few-shot). Plus flexible mais nécessite plus de code de plomberie.

  • Contrôle total sur le routing
  • Evaluator via prompt engineering
  • API web search au choix (Serper, Tavily, Brave)
  • Facilement testable unitairement

5 limites à connaître

CRAG apporte une correction significative au retrieval, mais introduit ses propres compromis. Voici les limites à évaluer avant adoption.

1. Dépendance au web search

Pour les cas incorrect et ambiguous, CRAG repose sur la disponibilité et la qualité des résultats web. En environnement air-gapped (défense, santé), ce fallback est inutilisable.

2. Latence variable

Un verdict correct ajoute ~100 ms (évaluation seule). Un verdict incorrect peut ajouter 2-5 secondes (recherche web + filtrage). L'expérience utilisateur est imprévisible.

3. Évaluateur imparfait

Le retrieval evaluator a un taux d'erreur propre. Un faux positif (incorrect classé correct) laisse passer un document non pertinent. Un faux négatif (correct classé incorrect) déclenche une recherche web inutile.

4. Pas de vérification segment par segment

Contrairement à Self-RAG, CRAG ne vérifie pas si chaque segment de la réponse est supporté par les sources. L'hallucination peut survenir à la génération malgré des sources correctes.

5. Qualité du knowledge refinement

La décomposition en unités de connaissance atomiques dépend de la qualité du prompt ou du modèle utilisé. Un mauvais découpage peut perdre du contexte ou introduire des fragments incohérents.

CRAG : la correction pragmatique du RAG

Corrective RAG s'insère entre le retriever et le générateur pour filtrer les sources non pertinentes. Son approche plug-and-play (pas de fine-tuning) et son fallback web en font une solution pragmatique pour les équipes qui veulent réduire les hallucinations sans modifier leur LLM.

Pour les cas où le corpus est complet et le contrôle segment par segment est critique, le Self-RAG reste plus granulaire. Pour une orchestration dynamique avec agents, explorez l'Agentic RAG dans le guide des 12 architectures.