Agentic RAG
iaDéfinition
Agentic RAG est une evolution du RAG ou le systeme de retrieval est pilote par un agent LLM autonome qui peut utiliser plusieurs outils de recherche (bases vectorielles, moteurs de recherche web, APIs specifiques, bases de donnees SQL) et decider dynamiquement de la strategie de retrieval optimale en fonction de la question. Plutot qu'un pipeline fixe 'retrieve-then-generate', l'agent planifie et execute le retrieval en plusieurs etapes. L'architecture type d'Agentic RAG : (1) Planification — l'agent decompose la question en sous-questions et decide quels outils utiliser, (2) Retrieval multi-source — execution parallele ou sequentielle des recherches selon les outils (vectorstore, web search, SQL, APIs), (3) Synthese — l'agent combine les informations de sources multiples et identifie les contradictions, (4) Auto-verification — l'agent verifie si la reponse est suffisamment supportee par les sources. Les frameworks pour Agentic RAG : LangGraph (graphe d'etats pour les agents RAG), LlamaIndex Workflows (pipeline event-driven), AutoGen (agents multi-modeles), et Haystack (pipelines declaratifs). Ces frameworks permettent de definir des workflows ou l'agent peut choisir entre differents chemins de retrieval selon la question. Les cas d'usage de l'Agentic RAG incluent : analyse financiere complexe (combiner rapports internes + news web + bases donnees), recherche medicale (PubMed + base de medicaments + guide clinique), support technique (documentation + historique tickets + base de code), et veille concurrentielle (multiples sources web + base interne). Les defis de l'Agentic RAG : la latence augmente avec chaque iteration de l'agent (10-60 secondes vs 1-3 secondes pour le RAG simple), le cout est plus eleve (plusieurs appels LLM), et la fiabilite diminue avec la complexite de la chaine. Une monitoring robuste et des timeout par etape sont essentiels.
Agentic RAG avec LangGraph
from langgraph.graph import StateGraph, END
from langchain_community.tools import TavilySearchResults
def should_retrieve(state):
if 'answer' in state and state['confidence'] > 0.8:
return END # Assez confiant, pas besoin de plus
return 'retrieve' # Besoin de retrieval
def retrieve(state):
docs = vectorstore.similarity_search(state['question'], k=5)
web_results = TavilySearchResults().run(state['question'])
return {**state, 'context': docs + web_results}
graph = StateGraph({'question': str, 'context': list, 'answer': str, 'confidence': float})
graph.add_node('plan', plan_retrieval)
graph.add_node('retrieve', retrieve)
graph.add_node('generate', generate_answer)
graph.add_conditional_edges('generate', should_retrieve)
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h