GraphRAG
GraphRAG construit un graphe de connaissances à partir de documents, puis récupère des entités, des relations et des résumés de communautés pour répondre à des questions à plusieurs étapes et à des questions globales.
GraphRAG (génération augmentée par récupération sur graphe) est une forme de génération augmentée par récupération (RAG) qui récupère des informations dans un graphe de connaissances au lieu des fragments de texte trouvés par recherche vectorielle, ou en complément de ceux-ci. Un grand modèle de langage (LLM) extrait d’abord les entités d’une collection de documents — personnes, entreprises, pièces et lieux, par exemple — ainsi que leurs relations. Lorsqu’une question est posée, le système récupère des entités liées, des chemins relationnels ou des résumés de groupes entiers du graphe, puis les transmet au LLM comme contexte. Le nom est surtout associé à l’approche GraphRAG de Microsoft Research pour le résumé centré sur les requêtes, publiée en 2024 avec une implémentation open source ; il désigne aussi tout système RAG qui effectue des recherches dans un graphe.
Pourquoi le RAG vectoriel a besoin d’un graphe#
Le RAG standard convertit les fragments de documents en embeddings, les stocke dans une base de données vectorielle et récupère les quelques fragments les plus proches de la question. Cette méthode fonctionne pour les questions auxquelles un seul passage répond, mais rencontre des difficultés avec deux autres types :
- Questions à plusieurs étapes : la réponse dépend de faits répartis entre plusieurs documents, qui ne sont reliés que par des entités communes. Par exemple : quelles usines dépendent d’un fournisseur situé près d’un port fermé par une tempête ? Aucun fragment ne ressemble à l’ensemble de la question.
- Questions globales : les questions portant sur l’ensemble d’un corpus, comme « Quels sont les principaux thèmes de ces 5 000 rapports d’incident ? », nécessitent des informations provenant de chaque document, alors que la recherche vectorielle ne renvoie que quelques fragments parmi les mieux classés.
Un graphe stocke explicitement les liens entre les faits, ce qui permet à la recherche de les suivre ; les résumés des communautés du graphe couvrent l’ensemble du corpus.
Fonctionnement de GraphRAG#
GraphRAG de Microsoft construit son index en quatre étapes. Il divise les documents en unités de texte et demande à un LLM d’extraire les entités, les relations et les affirmations de chaque unité, une forme de reconnaissance d’entités nommées et d’extraction de relations pilotée par un LLM. Il fusionne ensuite en un seul nœud les descriptions des entités qui apparaissent dans de nombreuses unités. Il applique ensuite la détection hiérarchique des communautés de Leiden, qui regroupe les entités densément connectées en communautés imbriquées, puis demande au LLM de rédiger un résumé pour chaque communauté, à chaque niveau.
Les requêtes suivent ensuite l’une de ces deux voies :
- Recherche locale : part des entités mentionnées dans la question et récupère leurs voisines, leurs relations, les rapports de communauté et les unités de texte d’origine qui les mentionnent.
- Recherche globale : applique une méthode de type map-reduce aux rapports de communauté : chaque rapport produit une réponse partielle assortie d’un score de pertinence, puis les réponses partielles les plus pertinentes sont combinées pour former la réponse finale.
Sur des jeux de données d’environ un million de jetons, l’article rapporte que la recherche globale fournit des réponses nettement plus complètes et diversifiées aux questions portant sur l’ensemble du corpus qu’une référence RAG classique.
Le cœur de la recherche locale est le parcours du graphe. Cet exemple Python, qui utilise NetworkX, stocke des triplets qu’un LLM pourrait extraire de documents distincts et suit les relations à partir de l’entité mentionnée dans la question :
import networkx as nx
# Entity-relationship triples that an LLM extracted from separate documents
triples = [
("Typhoon", "closed", "Kaohsiung port"),
("Kaohsiung port", "ships parts for", "Supplier A"),
("Supplier A", "makes", "bearing B-17"),
("bearing B-17", "is used at", "Ohio plant"),
("Texas plant", "uses", "motor M-4"),
]
graph = nx.DiGraph()
for head, relation, tail in triples:
graph.add_edge(head, tail, relation=relation)
# Question: "Which plants could the typhoon disrupt?"
# Local search: follow relationships outward from the entity named in the question
edges = nx.bfs_edges(graph, "Typhoon")
context = [f"{head} {graph[head][tail]['relation']} {tail}" for head, tail in edges]
print("\n".join(context))Il affiche la chaîne de quatre sauts allant de « Le typhon a fermé le port de Kaohsiung » à « le roulement B-17 est utilisé dans l’usine de l’Ohio », une relation qu’aucun document source ne mentionne à lui seul, et omet l’usine texane sans rapport. Le LLM reçoit ces lignes comme contexte d’ancrage et peut répondre que l’usine de l’Ohio est menacée.
GraphRAG et approches associées#
- Graphes de connaissances : structure de données composée d’entités et de relations typées. GraphRAG en construit un ou en réutilise un pour récupérer du contexte destiné à un LLM.
- Recherche hybride : combine la recherche par mots-clés et la recherche vectorielle sur des segments de texte. De nombreux systèmes GraphRAG en production exécutent le parcours du graphe en parallèle de la recherche hybride.
- RAG agentique : un agent décide quoi récupérer et à quel moment, en plusieurs étapes. Les requêtes sur le graphe peuvent constituer l’un de ses outils.
- Réseaux neuronaux de graphes (GNNs) : apprennent la structure d’un graphe pendant l’entraînement, pour des tâches telles que la prédiction de liens. GraphRAG utilise le graphe au moment de la récupération, sans entraînement.
Applications concrètes#
- Découverte de médicaments : les graphes qui relient gènes, protéines, composés et maladies permettent aux chercheurs de poser des questions portant sur des milliers d’articles, par exemple quels médicaments approuvés ciblent les protéines d’une voie biologique associée à une maladie.
- Enquêtes financières : les analystes suivent les chaînes de propriété à travers des sociétés écrans et des administrateurs communs, puis demandent à un LLM de résumer le réseau derrière une transaction suspecte.
- Risques liés à la chaîne d’approvisionnement : relier fournisseurs, pièces, sites et itinéraires d’expédition permet de répondre à des questions telles que : quels produits dépendent d’une seule usine ?
- Connaissances d’entreprise : les vastes collections de rapports, de tickets et de comptes rendus de réunion deviennent consultables par thème, et des résumés communautaires répondent aux questions portant sur l’ensemble de la collection.
Les graphes peuvent aussi stocker ce que voient les caméras, ce qui constitue la base du RAG multimodal appliqué à la vidéo. La résolution d’entités, qui consiste à déterminer si deux mentions désignent la même chose, est l’étape que réalise le suivi d’objets dans une vidéo : le suivi avec Ultralytics YOLO26 attribue à chaque personne ou véhicule un ID persistant d’une image à l’autre, de sorte qu’un graphe vidéo peut stocker un nœud par objet suivi et des arêtes indiquant où et quand il est apparu à proximité d’autres objets, plutôt qu’un nœud par image.
Coûts et compromis#
L’indexation constitue le principal coût, car le LLM lit chaque unité de texte pour en extraire les entités, puis rédige chaque rapport communautaire. L’indexation de grands corpus coûte donc bien plus cher que leur vectorisation. Les erreurs d’extraction, comme la fusion de deux personnes différentes portant le même nom, se répercutent dans toutes les réponses qui les concernent, et toute modification des documents impose de réextraire les informations et de résumer à nouveau les parties concernées du graphe. Le LazyGraphRAG de Microsoft réduit ce coût en construisant son graphe conceptuel à partir de l’extraction de groupes nominaux et de statistiques sur le graphe, et en reportant toute utilisation du LLM au moment des requêtes. Son coût d’indexation est ainsi identique à celui du RAG vectoriel et représente 0,1 % de celui du GraphRAG complet.










