01
📖 Introduction
Dans l'écosystème de l'IA générative et du RAG, deux technologies s'affrontent : les bases vectorielles (Vector Databases) et les graphes de connaissances. Chacune a ses forces et faiblesses.
💡 En résumé :
- ✅ Vector Database : recherche par similarité sémantique, idéale pour la similarité de documents
- ✅ Graphe de connaissances : relations précises et inférences, idéal pour la précision factuelle
- ✅ GraphRAG : combinaison des deux pour le meilleur résultat
04
🔢 Quand choisir une Vector Database ?
✅ Vector DB excelle quand :
- Recherche par similarité sémantique : "trouve des documents qui parlent de sujets proches"
- Documents non structurés : PDFs, articles, emails, conversations
- Recommandation : "les utilisateurs similaires ont aimé..."
- Dédoublonnage : trouver des documents quasi-identiques
- RAG simple : contexte pertinent pour LLM sans relations complexes
- Clustering : regrouper des documents par thème
- Recherche multimodale : texte → image, image → texte
| Vector Databases populaires |
| Pinecone, Milvus, Qdrant, Weaviate, Chroma, FAISS (Meta), LanceDB |
📝 Exemple de code RAG avec Vector DB :
from langchain.vectorstores import Pinecone
from langchain.embeddings import OpenAIEmbeddings
# Indexation des documents
embeddings = OpenAIEmbeddings()
vectorstore = Pinecone.from_documents(documents, embeddings)
# RAG : question → recherche vectorielle → contexte → LLM
question = "Quels sont les avantages du cloud ?"
docs = vectorstore.similarity_search(question, k=4)
context = "\n".join([doc.page_content for doc in docs])
response = llm.invoke(f"Contexte: {context}\nQuestion: {question}")
05
🕸️ Quand choisir un graphe de connaissances ?
✅ Graphe excelle quand :
- Précision factuelle requise : données critiques (médical, juridique, financier)
- Relations complexes et profondes : "trouve les fournisseurs des fournisseurs"
- Inférence et raisonnement : déduire des connaissances implicites
- Intégration de données hétérogènes : fusionner plusieurs sources avec mapping sémantique
- IA explicable (XAI) : tracer le raisonnement et les sources
- Données structurées interconnectées : MDM, graphe social, logistique
- Requêtes précises : "Quel est le PIB de la France en 2023 ?"
| Graphes de connaissances populaires |
| Neo4j (property graph), Apache Jena (RDF), RDF4J, GraphDB, Stardog, Amazon Neptune |
📝 Exemple de requête précise avec graphe :
# SPARQL : trouver le chiffre d'affaires des fournisseurs français
SELECT ?fournisseur ?ca WHERE {
?fournisseur rdf:type :Fournisseur .
?fournisseur :estBaseEn :France .
?fournisseur :chiffreAffaires ?ca .
}
ORDER BY DESC(?ca)
06
🔄 GraphRAG : le meilleur des deux mondes
La tendance actuelle : combiner Vector Database ET Graphe de connaissances pour le RAG (Retrieval-Augmented Generation). C'est ce qu'on appelle GraphRAG.
📊 Architecture GraphRAG :
[Question utilisateur] → [LLM analyse] → [Recherche vectorielle (similarité)] + [Requête graphe (précision)] → [Fusion des résultats] → [LLM synthèse] → [Réponse]
class GraphRAG:
def query(self, question):
# 1. Recherche vectorielle pour la similarité sémantique
vector_results = self.vectorstore.similarity_search(question, k=5)
# 2. Requête graphe pour les faits précis
graph_query = self._generate_sparql(question)
graph_results = self.graph.query(graph_query)
# 3. Fusion intelligente
context = self._merge_results(vector_results, graph_results)
# 4. Génération
return self.llm.invoke(f"Contexte: {context}\nQuestion: {question}")
💡 Avantages de GraphRAG :
- ✅ Similarité sémantique (Vector DB) + Précision factuelle (Graphe)
- ✅ Réduction des hallucinations du LLM
- ✅ Capacité à répondre à des questions complexes nécessitant plusieurs sauts de raisonnement
- ✅ Traçabilité des sources (graphe) et similarité contextuelle (vector)