Le RAG en une passe échoue sur les questions multi-sauts et les comparaisons. L'agentic RAG laisse un agent décomposer, récupérer en itérant et s'arrêter au bon moment — avec ses garde-fous et son coût. Quand l'utiliser, et quand s'abstenir.
Le RAG classique suit toujours le même rituel : on reçoit une question, on récupère des passages, on génère une réponse. Une question, une récupération, une réponse. C'est efficace pour les questions simples et factuelles. Mais dès que la question se complique — plusieurs sous-questions, besoin de croiser des sources, ambiguïté à lever — ce schéma rigide montre ses limites. L'agentic RAG casse ce rituel : il laisse un agent décider quoi récupérer, quand, et surtout quand s'arrêter.
Voici ce que ça change, comment ça marche concrètement tour par tour, et quand cette complexité supplémentaire en vaut le prix.
La limite du RAG en une passe
Le RAG en une seule passe fait une hypothèse forte : une seule récupération suffit à répondre. Or beaucoup de questions réelles violent cette hypothèse :
- les questions multi-sauts : « Quelle est la politique de congés du pays où se trouve notre plus gros bureau ? » exige d'abord d'identifier le bureau, puis de récupérer la politique du bon pays.
- les questions de comparaison : confronter deux contrats, deux versions, deux produits.
- les questions ambiguës : il faut parfois clarifier avant de chercher.
- les questions à large périmètre : une seule fournée de passages ne couvre pas tout.
Sur ces cas, le RAG en une passe récupère « à peu près » et génère une réponse partielle, avec aplomb. Le problème n'est pas la génération : c'est que la requête initiale ne contient pas l'information nécessaire pour récupérer les bons passages. Reprenons l'exemple des congés : aucun chunk ne parle à la fois du « plus gros bureau » et d'une « politique de congés ». L'embedding de la question pointe vers un vide sémantique. Le modèle reçoit des passages bancals et répond quand même — c'est exactement le scénario qui produit des hallucinations confiantes.
Le RAG classique répond à la question qu'il croit avoir comprise, en une seule récupération. L'agentic RAG prend le temps de décomposer, chercher, vérifier, recommencer si besoin.
Ce que fait un agent RAG
Un agent RAG dispose d'une boucle de raisonnement et d'outils (au minimum, la recherche). À chaque tour, il décide :
- Faut-il récupérer ? Certaines questions n'ont pas besoin du corpus (calcul, reformulation).
- Quoi récupérer ? Il peut reformuler la requête, la décomposer en sous-requêtes, cibler une source précise.
- L'information est-elle suffisante ? S'il manque une pièce, il relance une recherche.
- Quand s'arrêter ? Une fois le contexte assez complet pour répondre — ni trop tôt, ni en boucle infinie.
Question ─► l'agent raisonne ─► récupérer ? quoi ?
▲ │
│ récupération
assez d'info ? ◄───────────┘
│ oui
réponse vérifiée
Un exemple complet, tour par tour
Pour rendre la boucle tangible, déroulons la question multi-sauts « Quelle est la politique de congés du pays où se trouve notre plus gros bureau, et combien de jours de plus que le minimum légal local accorde-t-elle ? » Le corpus contient un annuaire RH, des fiches d'effectifs par site, et des politiques de congés par pays.
Tour 1 — décomposition. L'agent lit la question et constate qu'il ne peut pas la résoudre d'un coup. Il génère un plan : (a) trouver le bureau avec le plus d'effectifs, (b) identifier son pays, (c) récupérer la politique de congés de ce pays, (d) comparer au minimum légal. Première recherche émise : effectifs par bureau.
Tour 2 — première récupération. La recherche renvoie une fiche listant les sites : Paris 240, Lisbonne 310, Berlin 180. L'agent lit, en déduit que le plus gros bureau est Lisbonne (310), donc le pays est le Portugal. Il note ce fait intermédiaire dans son contexte de travail. Il n'a toujours pas de quoi répondre : il enchaîne avec la sous-requête politique de congés Portugal.
Tour 3 — récupération ciblée. La recherche renvoie le passage « Portugal : 25 jours ouvrés de congés payés par an ». L'agent a maintenant le cœur de la réponse. Mais la question demandait aussi l'écart au minimum légal. Il lui manque cette pièce. Nouvelle sous-requête : minimum légal congés payés Portugal.
Tour 4 — comblement de lacune. La recherche renvoie « minimum légal au Portugal : 22 jours ouvrés ». L'agent dispose désormais des trois faits : Lisbonne = plus gros bureau, politique = 25 jours, minimum légal = 22 jours.
Tour 5 — auto-vérification et réponse. Avant de livrer, l'agent confronte chaque affirmation à une source citée : 310 effectifs (fiche sites), 25 jours (politique PT), 22 jours (référence légale). L'arithmétique 25 − 22 = 3 est faite sans outil. Réponse : « Le plus gros bureau est Lisbonne (Portugal). La politique y accorde 25 jours, soit 3 de plus que le minimum légal de 22. » Le plafond de tours (disons 8) n'a pas été atteint ; l'agent s'arrête car le contexte couvre toute la question.
Notez ce qu'un RAG en une passe aurait produit : une recherche unique sur la question entière, des passages mélangeant vaguement « bureau », « congés » et « légal », et une réponse plausible mais non vérifiée — au mieux correcte par chance, au pire inventant un pays ou un nombre.
Les patterns, en détail
Décomposition. Éclater une question complexe en sous-questions traitées séquentiellement. C'est ce qui se joue au tour 1 ci-dessus. Le pattern brille quand les sous-questions sont dépendantes : le résultat de l'une conditionne la suivante (il faut le pays avant de chercher sa politique). Pour des sous-questions indépendantes (« compare les clauses de résiliation des contrats A, B et C »), on peut les récupérer en parallèle et fusionner — moins de tours, moins de latence.
Routage. Choisir la bonne source ou le bon index selon la nature de la question. Un agent peut router une question juridique vers l'index des contrats, une question produit vers la doc technique, une question chiffrée vers une base structurée interrogée en SQL. Mini-exemple de logique de routage :
si question ∈ {prix, stock, dates} → outil SQL (table produits)
sinon si question juridique → index "contrats" (hybride + rerank)
sinon → index général de connaissances
Le routage évite de noyer une requête précise dans un corpus généraliste, et réduit le bruit en amont du reranking.
Récupération itérative. Récupérer, lire, identifier ce qui manque, récupérer encore — exactement les tours 2 à 4. La clé est la détection de lacune : l'agent doit savoir reconnaître qu'il lui manque une pièce plutôt que de répondre avec ce qu'il a. Une heuristique robuste consiste à demander au modèle, à chaque tour, « peux-tu répondre intégralement et avec citations ? oui/non + ce qui manque ».
Auto-vérification. Confronter la réponse aux sources avant de la livrer. En pratique : exiger que chaque affirmation factuelle soit rattachée à un passage récupéré, et déclencher une récupération supplémentaire si une affirmation n'a pas d'appui. C'est ce filet qui rattrape les hallucinations résiduelles — au prix d'un tour LLM de plus.
Le prix à payer : latence, coût, complexité
L'agentic RAG n'est pas gratuit. Chaque tour de boucle, c'est :
- un appel LLM supplémentaire → plus de latence et de coût ;
- un risque de divergence : un agent mal cadré peut boucler, sur-récupérer, ou partir en tangente ;
- plus de surface de débogage : un parcours en plusieurs étapes est plus dur à tracer qu'une passe unique.
Pour fixer les ordres de grandeur : un tour de décision typique consomme l'historique de raisonnement plus les passages déjà lus. Comptez grossièrement 300 à 800 tokens en entrée par tour rien que pour le raisonnement, auxquels s'ajoutent les passages récupérés (souvent 1 000 à 4 000 tokens par fournée selon le top-k et la taille des chunks). Côté latence, chaque tour ajoute un aller-retour LLM, soit typiquement 0,5 à 2 s selon le modèle, plus la latence de recherche (quelques dizaines de ms en pgvector HNSW). Notre exemple à 5 tours coûte donc, en première approximation, 5 fois le budget d'une passe unique en appels LLM, et empile cinq aller-retours en latence. Une question simple traitée par erreur via l'agent paie ce surcoût pour rien.
Règle de sobriété : n'agentifiez que ce qui en a besoin. Une FAQ factuelle n'a pas besoin d'un agent ; une question multi-sauts, oui.
Quand l'utiliser : des critères chiffrés
Oui : questions multi-sauts, comparaisons, recherche exploratoire, corpus hétérogène nécessitant un routage, cas où l'auto-vérification réduit fortement les erreurs.
Non : questions factuelles simples, contraintes de latence fortes (réponse temps réel), volumétrie massive où le coût par requête doit rester minimal. Dans ces cas, un RAG en une passe bien construit (hybride + reranking) reste le meilleur choix.
Pour décider sans dogmatisme, mesurez sur votre golden set et appliquez des seuils explicites :
- si moins de ~10 % des questions sont multi-sauts ou nécessitent un croisement de sources, l'agent ne se rentabilise pas : optimisez la passe unique.
- si le RAG en une passe atteint déjà context recall élevé (disons > 0,85 sur RAGAS) sur la majorité du trafic, gardez-le par défaut et n'aiguillez vers l'agent que la minorité difficile.
- si votre budget de latence par réponse est inférieur à ~2 s, l'agentic multi-tours est de fait exclu pour le chemin synchrone ; réservez-le à l'asynchrone.
- si le gain de faithfulness mesuré (agent vs une passe) est inférieur à quelques points, le jeu n'en vaut pas la chandelle.
Une approche pragmatique : commencer simple (RAG en une passe) et n'introduire l'agent que là où la mesure prouve que les questions complexes échouent. On évite ainsi de payer la complexité partout pour un bénéfice localisé. Un bon compromis intermédiaire est le routage à l'entrée : un classifieur léger envoie 90 % du trafic vers la passe unique et ne réveille l'agent que pour les 10 % qui le justifient.
Garde-fous
- Limiter le nombre de tours — un plafond dur (par ex. 6 à 8) évite les boucles coûteuses. Au-delà, l'agent doit répondre avec ce qu'il a, en signalant l'incertitude, plutôt que de continuer indéfiniment.
- Borner les outils — un agent ne devrait accéder qu'aux sources autorisées. Les permissions s'appliquent aussi à l'agent : une question d'un utilisateur ne doit jamais déclencher une récupération dans une base à laquelle il n'a pas droit. Le filtrage par permissions se fait au niveau de l'outil de recherche, pas en post-traitement.
- Tracer chaque étape — journaliser le plan, chaque sous-requête, les sources renvoyées et la décision de continuer ou s'arrêter. Cette trace est indispensable au débogage (« pourquoi l'agent a-t-il bouclé trois fois ? ») et à l'audit (montrer d'où vient chaque affirmation), un point clé pour la conformité.
- Mesurer le surcoût — comparer le gain de qualité au coût/latence ajoutés. Si le bénéfice n'est pas net, simplifiez. Suivez en production le nombre moyen de tours par question : une dérive à la hausse est un signal d'alerte (questions mal routées, détection de lacune trop frileuse).
Conclusion
L'agentic RAG n'est pas une mode à appliquer partout, mais un outil pour une classe de problèmes que le RAG en une passe ne sait pas traiter : les questions qui demandent de raisonner, décomposer et vérifier. Bien cadré — plafonné, tracé, mesuré — il fait passer un assistant de « répond souvent juste » à « répond juste même aux questions difficiles ». Mal cadré, il ajoute du coût et de l'imprévisibilité. La maturité, c'est de savoir lequel des deux mondes votre question exige — et, le plus souvent, de faire cohabiter les deux derrière un routage qui réserve l'artillerie lourde aux seules questions qui la méritent.
Pour aller plus loin
- Architecture RAG de production : du chunking au reranking, le guide complet
- GraphRAG vs RAG vectoriel : quand le graphe de connaissances change la donne