RAG 2.0 : Combinaison des Agents RAG et des Graphes de Connaissances (Modèle GRATUIT)
Ces derniers mois, j’ai exploré en profondeur pratiquement toutes les stratégies RAG (Retrieval Augmented Generation) existantes. Mon objectif était simple : trouver la meilleure façon possible de donner à mes agents IA la capacité de rechercher efficacement dans ma base de connaissances. Parmi toutes ces stratégies, deux approches se sont démarquées et continuent de retenir mon attention : les agents RAG et les graphes de connaissances. C’est pourquoi j’en parle si souvent sur ma chaîne dernièrement.
Le plus intéressant, c’est qu’il est en réalité très facile de combiner ces deux stratégies pour créer des systèmes de récupération d’informations extrêmement puissants pour nos agents IA. Et c’est précisément ce que nous allons explorer aujourd’hui.
Préparez-vous, car j’ai consacré beaucoup de temps à la création d’un modèle d’agent parfaitement structuré, qui vous montre la puissance de l’utilisation conjointe des bases de données vectorielles et des graphes de connaissances pour le RAG.
Dans cette article, nous verrons comment tout cela fonctionne. Nous commencerons par une démonstration immédiate, puis nous explorerons pourquoi et quand utiliser les agents RAG avec des graphes de connaissances. Je vous montrerai comment l’agent fonctionne et je vous expliquerai même comment j’ai utilisé Claude Code pour créer ce modèle.
Démonstration de la puissance du système d’agents RAG
Pour vous montrer rapidement la puissance de ce système basé sur des agents, j’ai préparé une démonstration en ligne de commande. J’ai créé une interface simple qui communique avec mon agent hébergé via un point d’accès API. Cet agent RAG a accès à la fois à une base de données vectorielle et à un graphe de connaissances grâce à des outils d’agent. Il peut donc choisir comment explorer les informations que j’ai intégrées dans ma base de connaissances.
Voici comment cela fonctionne concrètement :
Infrastructure technique
J’utilise PostgreSQL comme base de données vectorielle, en tirant parti de l’extension PG Vector. Plus précisément, j’utilise la plateforme Neon pour PostgreSQL. Il s’agit d’une base de données SQL complète, bien plus qu’une simple base de données vectorielle, mais l’extension PG Vector me permet de stocker et d’interroger des vecteurs.
Pour cette démonstration simple, j’ai un seul document dans ma base de connaissances, qui traite des initiatives IA des grandes entreprises technologiques comme OpenAI et Microsoft. Ce document est découpé en morceaux, transformé en embeddings et stocké dans ma base de connaissances Neon.
Mais j’ai également intégré ces informations dans mon graphe de connaissances, ce qui me permet de représenter les informations de manière relationnelle et donne à l’agent la possibilité d’explorer les connaissances différemment. C’est l’essence même de l’approche par agents RAG.
Visualisation du graphe de connaissances
En zoomant sur le graphe, on peut voir des exemples comme la relation entre Amazon et Anthropic, car Amazon a investi dans Anthropic. En fait, toute l’infrastructure d’Anthropic fonctionne sur AWS. On peut également voir comment Microsoft et OpenAI sont partenaires, puisqu’OpenAI utilise exclusivement Azure pour héberger ses modèles.
Cet exemple illustre parfaitement quand il est judicieux d’utiliser à la fois une base de données vectorielle et un graphe de connaissances. Lorsque nous nous intéressons aux initiatives IA des grandes entreprises, nous voulons examiner comment les entreprises collaborent (comme Amazon et Anthropic, ou OpenAI et Microsoft), mais nous pourrions aussi vouloir rechercher des informations spécifiques sur des entreprises individuelles, auquel cas la base de données vectorielle serait plus appropriée.
C’est précisément ce type de raisonnement que nous voulons permettre à notre agent d’effectuer lorsqu’il répond à nos questions.
Démonstration pratique
Posons quelques questions à notre agent :
Question 1 : Quelles sont les initiatives IA de Google ?
Dans ce cas, l’agent utilise simplement la recherche vectorielle pour interroger les initiatives IA de Google. Il n’a pas besoin d’utiliser le graphe de connaissances.
Question 2 : Comment OpenAI et Microsoft sont-ils liés ?
Cette fois, l’agent utilise la recherche dans le graphe de connaissances avec la requête « relation OpenAI Microsoft » au lieu d’aller dans notre base de données vectorielle. La réponse mentionne Azure comme fournisseur exclusif pour les modèles OpenAI, exactement comme nous l’avons vu dans notre visualisation du graphe.
Question 3 : Quelles sont les initiatives de Microsoft ? Comment cela se rapporte-t-il à Anthropic ?
Ici, j’ai explicitement demandé à l’agent d’utiliser les deux types de recherche. L’agent utilise à la fois la recherche vectorielle et la recherche dans le graphe. Il commence par rechercher les initiatives IA de Microsoft, puis affine sa recherche en comparant Microsoft et Anthropic.
Dans un système réel, vous définiriez dans l’invite système quand utiliser les différentes stratégies de recherche en fonction des données spécifiques de votre base de connaissances, plutôt que de demander explicitement à l’utilisateur de spécifier la méthode de recherche.
Stack technologique utilisée
Voici les technologies que j’ai utilisées pour construire cet agent RAG avec graphe de connaissances :
- Pydantic AI : pour le framework de base de l’agent IA
- Graffiti : pour notre bibliothèque de graphe de connaissances, fonctionnant avec Neo4j
- Neo4j : le moteur de graphe de connaissances sous-jacent
- PostgreSQL avec extension PG Vector : pour transformer une base de données SQL en base de données vectorielle
- FastAPI : pour créer notre API d’agent en Python
- Claude Code : l’assistant de codage IA utilisé pour construire l’agent
Comprendre le RAG basé sur des agents
Avant d’entrer dans les détails du modèle d’agent, examinons comment le RAG a évolué jusqu’à ce point et pourquoi les graphes de connaissances s’intègrent si bien dans cette approche.
RAG traditionnel vs RAG basé sur des agents
Le RAG traditionnel (ou « vanilla RAG ») suit un processus simple :
- Les documents sont divisés en petits morceaux adaptés à un grand modèle de langage
- Un modèle d’embedding crée une représentation vectorielle de toutes ces informations
- Ces vecteurs sont stockés dans une base de données vectorielle
- Lorsqu’une requête utilisateur arrive, elle est également transformée en vecteur
- On récupère les morceaux de documents les plus similaires à la question
- Ces morceaux sont fournis comme contexte supplémentaire au modèle de langage
- Le modèle génère une réponse augmentée par ce contexte
Cette approche est extrêmement rigide : la requête arrive, on récupère le contexte, on le donne au modèle. L’agent n’a pas d’autre choix que d’utiliser ce contexte pour répondre à la question. Il ne peut pas affiner sa recherche, approfondir certains aspects, ou réfléchir à la meilleure façon d’explorer la base de connaissances.
C’est là qu’intervient le RAG basé sur des agents. Cette approche donne à l’agent la capacité de raisonner sur la façon d’explorer la base de connaissances, au lieu de lui imposer un contexte prédéfini. L’agent peut formuler ses propres requêtes, explorer différentes bases de données vectorielles, utiliser d’autres outils comme la recherche web, etc.
Dans notre cas, nous stockons les mêmes données à la fois dans une base de données vectorielle et dans un graphe de connaissances, les représentant de manière très différente. L’agent peut ainsi raisonner : « Pour cette question sur Google uniquement, je devrais faire une recherche dans la base de données vectorielle. Mais pour cette question sur la relation entre Microsoft et OpenAI, je devrais explorer le graphe de connaissances. »
C’est cette flexibilité qui rend le RAG basé sur des agents si puissant.
Configuration du modèle d’agent
Voici comment configurer le modèle d’agent RAG avec graphe de connaissances :
Prérequis
Vous aurez besoin de :
– Python
– Une base de données PostgreSQL (comme Neon)
– Une base de données Neo4j
– Une clé API pour votre fournisseur de LLM
Le modèle est configuré pour fonctionner avec différents fournisseurs compatibles avec l’API OpenAI, comme OpenAI lui-même, Ollama pour les LLM locaux, ou encore Gemini.
Installation et configuration
-
Créez un environnement virtuel et installez les dépendances :
bash
python -m venv venv
source venv/bin/activate # Sur Windows : venv\Scripts\activate
pip install -r requirements.txt -
Configurez votre base de données SQL pour qu’elle fonctionne comme stockage vectoriel :
- Utilisez le fichier SQL fourni dans le dossier SQL
- Si vous utilisez un modèle d’embedding différent de text-embed-3-small d’OpenAI, assurez-vous de mettre à jour les dimensions vectorielles
-
Exécutez ce SQL dans votre base de données PostgreSQL (par exemple, dans l’éditeur SQL de Neon)
-
Configurez Neo4j :
- Utilisez soit le package Local AI, soit installez Neo4j Desktop
-
Notez les informations de connexion (nom d’utilisateur et mot de passe)
-
Configurez les variables d’environnement :
- Copiez le fichier .env.example et renommez-le en .env
- Définissez l’URL de la base de données PostgreSQL
- Configurez les paramètres de connexion à Neo4j
- Définissez votre fournisseur de LLM, l’URL de base, la clé API et le modèle
- Configurez de même votre fournisseur d’embeddings
- Vous pouvez laisser les autres variables avec leurs valeurs par défaut
Préparation de la base de connaissances
- Créez un dossier « documents » et placez-y vos documents Markdown
-
Le dépôt contient des exemples de documents sur les initiatives IA des grandes entreprises technologiques
-
Exécutez le script d’ingestion :
bash
python -m ingestion.test --clean - Cela va effacer votre graphe de connaissances et les tables de la base de données vectorielle pour repartir de zéro
- Le processus d’insertion dans la base de données vectorielle est rapide
- La création du graphe de connaissances prend plus de temps car elle utilise des LLM pour définir les entités et les relations
Configuration du comportement de l’agent
Vous devez définir quand l’agent doit utiliser la base de données vectorielle, le graphe de connaissances, ou les deux. Pour cela, modifiez le fichier agent/prompts.py qui contient l’invite système principale.
Par exemple, vous pourriez indiquer :
– Utiliser l’outil de graphe de connaissances uniquement lorsque l’utilisateur pose une question sur deux entreprises dans la même requête
– Sinon, utiliser l’outil de base de données vectorielle
– Combiner les deux approches uniquement lorsque cela est explicitement demandé
Adaptez cette invite système en fonction de vos besoins et de la nature de votre base de connaissances.
Démarrage de l’agent
-
Lancez le serveur API :
bash
python -m agent.api -
Dans un second terminal, lancez l’interface en ligne de commande :
bash
python CLI.py -
Vous pouvez maintenant poser des questions à votre agent :
- « Quelles sont les initiatives IA de Google ? » (utilisera la base de données vectorielle)
- « Comment Amazon et Anthropic sont-ils liés ? » (utilisera le graphe de connaissances)
- « Quelles sont les initiatives de Microsoft ? Comment cela se rapporte-t-il à Anthropic ? » (pourrait utiliser les deux)
Comment j’ai utilisé Claude Code pour construire cet agent
La création de cet agent RAG avec graphe de connaissances a été grandement facilitée par Claude Code, un assistant de codage IA extrêmement puissant. Voici comment j’ai procédé :
Configuration des serveurs MCP
J’ai configuré deux serveurs MCP (Multi-Context Processing) pour aider à la construction :
-
Crawl for RAG MCP : pour ajouter de la documentation externe à mon assistant de codage IA, lui permettant de comprendre comment construire avec des outils comme Pydantic AI
-
Neon MCP : permettant à l’assistant de codage de créer directement le projet dans Neon, d’exécuter des requêtes SQL, de gérer les tables et de valider les résultats
Cette configuration permet à Claude Code d’être véritablement agentique – il peut planifier, créer une liste de tâches, les exécuter une par une, configurer la base de données automatiquement, écrire des tests et itérer sur ces tests, le tout sans intervention humaine significative.
Processus de planification
J’ai utilisé le mode de planification de Claude Code (accessible en appuyant deux fois sur Shift+Tab) pour créer un plan complet avant de commencer à coder. Cela a généré trois documents clés :
-
claw.md : contient les règles globales pour l’assistant de codage, similaires aux règles Cursor ou Windsurf
-
planning.md : décrit le projet à haut niveau – architecture, composants principaux, stack technologique, bibliothèques clés et principes de conception
-
task.md : liste détaillée des tâches que Claude Code doit accomplir, qu’il coche au fur et à mesure
Une fois ces documents créés, j’ai quitté le mode de planification et demandé à Claude Code d’exécuter le plan. L’assistant a alors travaillé pendant environ 35 minutes, créant automatiquement le projet dans Neon, exécutant du SQL, et construisant progressivement l’agent.
Utilisation d’exemples
J’ai également fourni à Claude Code des exemples de scripts Python issus de projets précédents, pour qu’il s’en inspire lors de la construction de l’agent. Ces exemples montrent comment j’ai configuré Graffiti pour le graphe de connaissances ou construit mes agents Pydantic AI pour prendre en charge différents LLM.
Ces exemples, combinés aux documents de planification, ont permis à Claude Code de construire l’agent complet avec très peu d’intervention de ma part.
Conclusion
La combinaison des agents RAG et des graphes de connaissances offre une approche puissante pour donner à vos agents IA la capacité d’explorer intelligemment votre base de connaissances. En représentant les mêmes informations de différentes manières – vectoriellement et relationnellement – et en permettant à l’agent de raisonner sur la meilleure façon d’accéder à ces informations, vous obtenez des réponses plus précises et plus nuancées.
Le modèle que j’ai partagé vous permet de mettre en place facilement cette approche, avec une configuration simple et une flexibilité maximale. Vous pouvez l’adapter à vos propres données et cas d’usage, en définissant quand et comment l’agent doit utiliser chaque source de connaissances.
Je vous encourage à explorer ce modèle, à l’adapter à vos besoins, et à découvrir par vous-même la puissance de cette approche combinée. Et si vous souhaitez approfondir davantage, n’hésitez pas à rejoindre la communauté Dynamis AI, où nous explorons ces technologies en profondeur.
Merci à Neon pour leur partenariat dans la création de cette ressource, et restez à l’écoute pour plus de contenu sur les agents RAG, les graphes de connaissances et Claude Code !
Featured image by Gabrielle Henderson on Unsplash

