+180 XP

Agentic RAG : le retrieval dans la boucle de l'agent

Demandez à un chatbot « Un prestataire peut-il se faire rembourser des vols internationaux ? » : un retrieval classique récupère les trois passages de texte les plus similaires à votre question, les injecte dans le prompt, et répond. Si la vraie règle se trouve dans une section « Déplacements des prestataires » qui n'a jamais employé le mot « remboursement », vous obtenez une réponse fausse et assurée.

L'agentic RAG corrige cela en laissant l'IA se comporter comme un chercheur plutôt que comme un distributeur automatique. Elle cherche, lit ce qui remonte, constate que la réponse est mince, et cherche de nouveau avec de meilleurs termes. La même bibliothèque de politiques de 500 pages. Un résultat très différent.

D'abord, le vocabulaire

RAG signifie Retrieval-Augmented Generation. En clair : avant de répondre, l'IA va chercher des éléments dans vos documents et utilise ce qu'elle trouve. Les réponses restent ainsi ancrées dans votre contenu réel plutôt que dans la mémoire du modèle.

Ici, retrieval veut dire interroger une base vectorielle : un stockage où vos documents sont découpés en passages et indexés par sens, de sorte qu'une recherche sur « remboursement » puisse aussi faire remonter un passage sur « la prise en charge des frais engagés ».

Le RAG one-shot effectue exactement une recherche, puis répond. L'agentic RAG place le retrieval dans une boucle, de sorte que l'IA peut chercher plusieurs fois et décider quand elle en a assez.

RAG one-shot : rapide, peu coûteux, parfois faux

Voici le flux classique pour la question sur le prestataire :

  1. Convertir la question en recherche.
  2. Récupérer les 3 à 5 meilleurs passages.
  3. Les transmettre au modèle.
  4. Le modèle répond.

C'est très bien quand la réponse se trouve à un seul endroit évident. « Quel est notre taux d'acquisition de congés ? » tient presque toujours dans un paragraphe. Une recherche le trouve. Terminé. Un appel modèle, coût faible, rapide.

Le problème, ce sont les questions qui traversent plusieurs sections. Notre question sur le prestataire exige en réalité trois faits :

  • Les prestataires sont-ils éligibles au remboursement de déplacements ?
  • Quelles sont les règles pour les déplacements internationaux ?
  • Y a-t-il une obligation d'accord préalable ?

Ces éléments peuvent se trouver dans trois chapitres différents. Une recherche unique optimisée pour « prestataire remboursement vols internationaux » peut renvoyer deux passages pertinents et un troisième sur les indemnités kilométriques nationales. Le modèle répond sur la base d'éléments incomplets et paraît sûr de lui.

Agentic RAG : l'IA continue de creuser

Donnez maintenant au modèle un outil qu'il peut appeler : une fonction search_policies. Un outil, c'est simplement une action que le modèle est autorisé à déclencher, comme lancer une recherche et en récupérer les résultats. Point clé : le modèle choisit *quand* et *quoi* chercher, et il peut le faire plusieurs fois.

Voici la même question sur le prestataire, en mode agentic :

  1. Recherche : « éligibilité remboursement déplacements prestataire ». Trouve : les prestataires sont éligibles si le déplacement a reçu un accord préalable.
  2. Lecture et constat d'un manque : l'éligibilité est confirmée, mais rien encore sur les règles internationales.
  3. Nouvelle recherche : « plafonds politique voyages vols internationaux ». Trouve : les déplacements internationaux de plus de 2 000 $ nécessitent la validation d'un VP.
  4. Nouvelle recherche : « processus d'accord préalable prestataire ». Trouve le formulaire d'approbation et les délais.
  5. Réponse : « Oui, sous deux conditions… » en citant les trois passages.

L'IA a décidé qu'il lui fallait trois recherches. Personne ne l'a codé en dur. Elle a lu les résultats intermédiaires et les a jugés insuffisants. Ce jugement, c'est tout l'enjeu.

À quoi ressemble la boucle

Le pattern est indépendant du fournisseur. Chaque grand SDK d'agents (OpenAI Agents SDK, Claude Agent SDK, ADK de Google) implémente la même forme : donner un outil au modèle, le laisser l'appeler, lui renvoyer les résultats, répéter jusqu'à ce qu'il s'arrête. Voir les blocs d'approfondissement par fournisseur pour la syntaxe exacte. L'idée centrale :

python
tools = [{
    "name": "search_policies",
    "description": "Search the company policy library. Returns top passages.",
    "parameters": {"query": "string"}
}]

messages = [{"role": "user", "content": "Can a contractor expense international flights?"}]

for step in range(5):  # plafonne la boucle pour qu'elle ne tourne pas indéfiniment
    response = model.generate(messages, tools=tools)

    if response.tool_call:
        results = search_policies(response.tool_call.query)   # votre base vectorielle
        messages.append(response)
        messages.append({"role": "tool", "content": results})
        # on reboucle : le modèle lit les résultats et décide de son prochain mouvement
    else:
        print(response.text)   # le modèle a choisi de répondre, c'est terminé
        break

Lisez la boucle simplement : le modèle demande soit une recherche, soit donne une réponse finale. S'il cherche, nous lançons la recherche, lui renvoyons les résultats, et repartons pour un tour. Le range(5) est un plafond de sécurité pour qu'un agent désorienté ne cherche pas indéfiniment.

Si vous voulez une introduction solide et neutre aux concepts de RAG avant d'y ajouter la boucle d'agent, la documentation RAG de Hugging Face est gratuite et claire.

Agentic RAG Explained

Watch on YouTube

Quand la boucle supplémentaire en vaut la peine

La boucle n'est pas gratuite. Chaque recherche et chaque appel modèle coûtent du temps et de l'argent. Trois allers-retours peuvent transformer une réponse de 2 secondes à un centime en une réponse de 8 secondes à quatre centimes. Multipliez par des milliers de questions quotidiennes et cela compte.

Utilisez ce repère approximatif.

Optez pour l'agentic RAG quand :

  • La réponse traverse plusieurs sections. Les questions de politique interne, les questions juridiques et les questions « comparer A et B » sont généralement dans ce cas.
  • Les formulations correspondent rarement. Les utilisateurs disent « remboursement de vols », le document dit « transport aérien remboursable ». L'itération permet à l'agent de tester de nouvelles formulations.
  • Se tromper coûte cher. Les questions de conformité, médicales, financières ou contractuelles justifient ce surcroît de soin.
  • Vous avez besoin de citations. Un agent qui rassemble plusieurs passages peut désigner chacun d'eux.

Restez sur du RAG one-shot quand :

  • La réponse se trouve à un seul endroit. Définitions, recherches d'un fait unique, questions de type FAQ.
  • Le volume est énorme et les enjeux faibles. Un bot de support qui répond un million de fois à « quels sont vos horaires ? » ne devrait pas boucler.
  • La latence est critique. Un assistant téléphonique en direct ne peut pas s'interrompre pour quatre recherches.

Une voie intermédiaire pragmatique : exécuter du one-shot par défaut, et ne déclencher la boucle que lorsque le premier jeu de résultats paraît faible. Beaucoup d'équipes notent les passages récupérés et, si le meilleur résultat se situe sous un seuil de confiance, passent la main à l'agent pour creuser. Peu coûteux la plupart du temps, approfondi quand c'est nécessaire.

Vérification des acquis

1. Quelle est la distinction essentielle entre le RAG one-shot et l'agentic RAG ?

2. Pourquoi un retrieval one-shot classique peut-il donner une réponse assurée mais fausse à la question sur les vols du prestataire ?

3. Pour quel type de question le RAG one-shot est-il généralement le plus adapté ?

CHOIX MULTIPLES

4. Sélectionnez TOUTES les bonnes réponses. Quels avantages l'agentic RAG offre-t-il par rapport au RAG one-shot ?

Sélectionnez toutes les réponses correctes.

CHOIX MULTIPLES

5. Sélectionnez TOUTES les bonnes réponses. Quelles affirmations sur le RAG et les bases vectorielles sont exactes ?

Sélectionnez toutes les réponses correctes.

Rendre la boucle fiable

Un agent qui peut chercher librement peut aussi dériver : chercher dix fois, partir en digressions, ou boucler sur la même requête. Trois garde-fous le maintiennent utile.

1. Plafonnez les itérations

Fixez une limite stricte (le range(5) ci-dessus). Si l'agent n'a pas répondu après cinq recherches, forcez-le à répondre avec ce qu'il a et à signaler une confiance faible. Mieux vaut un « voici ce que j'ai trouvé » borné qu'une boucle infinie.

2. Dites-lui quand s'arrêter

Le system prompt doit rendre l'arrêt explicite. Quelque chose comme :

« Cherche dans la bibliothèque de politiques autant de fois que nécessaire. Après chaque résultat, décide : ai-je assez d'éléments pour répondre complètement et citer mes sources ? Si oui, réponds. Si non, cherche avec d'autres termes. Ne dépasse pas 5 recherches. Si tu as encore un doute, indique ce qui manque. »

Sans cela, certains modèles cherchent une fois et s'arrêtent ; d'autres cherchent sans fin. L'instruction façonne le comportement.

3. Faites varier la requête, ne la répétez pas

Un échec courant : l'agent lance deux fois la même recherche et obtient les mêmes résultats faibles. Un bon prompting le pousse à *reformuler* : essayer des synonymes, restreindre à une section, ou découper une question composée en parties. « Approbation vol international prestataire » devient trois recherches ciblées, pas trois fois la même.

Un avant-après concret

Question : « Un prestataire peut-il se faire rembourser des vols internationaux ? »

Réponse en RAG one-shot :

« Les prestataires peuvent être remboursés pour les déplacements ayant reçu un accord préalable. » (A totalement raté la règle de validation pour l'international. Techniquement vrai, pratiquement incomplet.)

Réponse en agentic RAG :

« Oui, sous deux conditions. Les prestataires sont éligibles au remboursement des déplacements ayant reçu un accord préalable (Politique de voyages, sec. 3.1). Les vols internationaux de plus de 2 000 $ nécessitent l'approbation d'un VP avant réservation (sec. 4.2). Déposez le formulaire d'accord préalable au moins 10 jours ouvrés à l'avance (sec. 4.5). »

La deuxième réponse a demandé trois recherches et coûté quelques centimes de plus. Pour une question sensible sur le plan de la conformité, l'arbitrage est évident. Pour « à quelle heure ouvre le bureau », ce serait du gaspillage.

Points clés à retenir

  • Agentic RAG = retrieval en boucle. Le modèle cherche, lit, et cherche encore jusqu'à ce qu'il en ait assez, au lieu de faire une seule recherche en espérant.
  • Adaptez la méthode à la question. One-shot pour les requêtes à fait unique, à fort volume, à faibles enjeux. Agentic pour les questions multi-sections, à forts enjeux, ou exigeant des citations.
  • Plafonnez toujours la boucle. Une limite stricte (par exemple 5 recherches) et une instruction claire sur « quand s'arrêter » évitent les coûts incontrôlés et les boucles infinies.
  • Prompt-le pour qu'il reformule, pas qu'il répète. Dites à l'agent de faire varier les termes de recherche pour que chaque itération apporte de nouveaux éléments.
  • Envisagez une approche hybride. Par défaut du one-shot, et escalade vers la boucle d'agent seulement quand les premiers résultats paraissent faibles. Cela maintient les coûts bas tout en protégeant la qualité là où elle compte.

Articles liés

Les articles récents du blog qui s'appuient sur cette leçon.