01
📖 RAG et graphes de connaissances : une alliance gagnante
Le RAG (Retrieval-Augmented Generation) est une architecture d'IA qui combine la recherche d'information avec la génération de texte par LLM. Lorsqu'on y intègre un graphe de connaissances, on obtient une IA plus fiable, plus précise et plus explicable.
💡 À retenir : Le RAG traditionnel utilise une base vectorielle. Le GraphRAG utilise un graphe de connaissances pour la recherche contextuelle. Le résultat est une réduction drastique des hallucinations.
📊 GraphRAG en une image :
[Question] → [Graphe de connaissances] → [Contexte structuré] → [LLM] → [Réponse sourcée]
02
🔍 Qu'est-ce que le RAG ?
Le Retrieval-Augmented Generation est une architecture qui résout le problème fondamental des LLM : leur connaissance est figée à la date de leur entraînement.
Fonctionnement
- 🔎 Retrieval (recherche) : Une requête est utilisée pour chercher des documents pertinents dans une base de connaissances
- 📄 Augmentation : Les documents trouvés sont ajoutés au prompt comme contexte
- 🤖 Generation : Le LLM génère une réponse basée sur le contexte fourni
📝 Exemple :
Question : "Que dit Charles de Gaulle dans l'Appel du 18 juin ?"
→ Recherche du discours "Appel du 18 juin"
→ Contexte ajouté : texte intégral du discours
→ Réponse générée : résumé précis du discours
Avantages du RAG
- ✅ Connaissance à jour (la base peut être mise à jour sans réentraînement)
- ✅ Transparence : les sources sont citées
- ✅ Spécialisation : adapté à un domaine spécifique
- ✅ Réduction des hallucinations : le LLM s'appuie sur des faits
03
🕸️ GraphRAG : l'apport des graphes de connaissances
Le GraphRAG (Graph-based RAG) remplace la base vectorielle classique par un graphe de connaissances. Pourquoi ? Parce qu'un graphe capture les relations entre les entités.
📊 RAG vectoriel
Trouve des documents similaires par similarité sémantique.
Exemple : "discours sur la liberté" → trouve l'Appel du 18 juin (similarité de sens)
🕸️ GraphRAG
Navigue dans les relations explicites du graphe.
Exemple : "discours prononcés par Charles de Gaulle sur la résistance" → suit les relations aPrononce et concerne
Avantages spécifiques du GraphRAG
- ✅ Précision relationnelle : interroge des relations comme "aPrononce", "concerne", "cite"
- ✅ Inférence : déduit des connaissances implicites (ex: transitivité)
- ✅ Explicabilité : le chemin dans le graphe explique la réponse
- ✅ Interopérabilité : standards RDF/SPARQL
💡 Idéal pour : Questions relationnelles complexes, bases de connaissances structurées, domaines avec des ontologies riches.
04
🏗️ Architecture GraphRAG détaillée
📊 Architecture complète :
┌─────────────────────────────────────────────────────────────────────┐
│ 1. Question utilisateur │
│ "Quels discours de Charles de Gaulle parlent de la résistance ?" │
└─────────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────────┐
│ 2. Traduction en requête SPARQL/Cypher │
│ SELECT ?discours WHERE { │
│ :CharlesDeGaulle :aPrononce ?discours . │
│ ?discours :concerne :Resistance . │
│ } │
└─────────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────────┐
│ 3. Exécution sur le graphe de connaissances │
│ → Trouve "Appel du 18 juin", "Appel du 22 juin" │
└─────────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────────┐
│ 4. Construction du contexte │
│ "Charles de Gaulle a prononcé l'Appel du 18 juin..." │
└─────────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────────┐
│ 5. Génération par LLM + sources │
│ "Charles de Gaulle a prononcé deux discours majeurs..." │
│ Sources : Appel du 18 juin, Appel du 22 juin │
└─────────────────────────────────────────────────────────────────────┘
Composants clés
- 🔍 Query Translator : Convertit le langage naturel en SPARQL/Cypher
- 🕸️ Graph Database : Triple Store (RDF) ou Neo4j
- 📄 Context Builder : Transforme les résultats en prompt
- 🤖 LLM : Génère la réponse finale
05
⚖️ RAG vectoriel vs GraphRAG
| Critère | RAG vectoriel | GraphRAG |
| Type de recherche
| Similarité sémantique
| Navigation relationnelle
|
| Forces
| Trouve des documents par sens, flou toléré
| Requêtes précises, relations explicites, inférences
|
| Faiblesses
| Difficulté avec les relations complexes
| Nécessite une ontologie bien définie
|
| Cas d'usage
| Recherche documentaire, similarité
| Questions relationnelles, KB structurées
|
💡 Meilleure approche : Hybride ! Combinez recherche vectorielle (similarité) + requêtes graphe (relations) pour le meilleur des deux mondes.
06
💻 Implémentation pratique
Avec LangChain et Neo4j
from langchain.chains import GraphCypherQAChain
from langchain_community.graphs import Neo4jGraph
from langchain_openai import ChatOpenAI
# Connexion au graphe Neo4j
graph = Neo4jGraph(
url="bolt://localhost:7687",
username="neo4j",
password="password"
)
# Chaîne RAG sur graphe
chain = GraphCypherQAChain.from_llm(
graph=graph,
llm=ChatOpenAI(model="gpt-4"),
verbose=True
)
# Question
result = chain.invoke(
"Quels discours Charles de Gaulle a-t-il prononcés sur la résistance ?"
)
print(result["result"])
Avec RDF et SPARQL
from langchain.chains import GraphSparqlQAChain
from langchain_community.graphs import RdfGraph
from langchain_openai import ChatOpenAI
# Connexion au triple store RDF
graph = RdfGraph(
query_endpoint="http://localhost:3030/ds/sparql",
update_endpoint="http://localhost:3030/ds/update"
)
# Chaîne RAG SPARQL
chain = GraphSparqlQAChain.from_llm(
graph=graph,
llm=ChatOpenAI(model="gpt-4")
)
result = chain.invoke("Qui a prononcé l'Appel du 18 juin ?")
🚀 Chez Le Monde Sémantique
Nous développons une API RAG complète combinant recherche vectorielle et requêtes graphe pour interroger notre corpus de discours.
📡 Découvrir notre API RAG →
07
🎯 Cas d'usage du GraphRAG
1. Support client intelligent
Un chatbot qui interroge une KB produit (relations produits, compatibilités, alternatives).
2. Recherche juridique
Navigation dans les lois, arrêts, jurisprudences avec leurs relations (abroge, cite, modifie).
3. Patrimoine et archives
Notre cas : interrogation des discours, orateurs, événements historiques.
4. Gestion des connaissances d'entreprise
Cartographie des expertises, projets, documents et relations entre collaborateurs.
📝 Exemple concret :
Question : "Quels employés travaillent sur un projet lié à l'IA et connaissent Python ?"
→ Le graphe relie Employés → Projets → Technologies → Réponse précise.