Aller au contenu
Cercle IA Tech · RAG Un site du réseau Cercle IA Tech

Guide

GraphRAG : quand un graphe de connaissances aide le RAG

GraphRAG : principe, indexation en graphe et communautés, recherche globale ou locale, coût d'indexation et quand l'envisager.

Mis à jour le

GraphRAG est une approche du RAG proposée par Microsoft Research, avec un dépôt de code public, qui construit un graphe de connaissances à partir de vos textes (entités, relations, groupes d'entités liées) et s'en sert pour répondre. Sa documentation la présente comme une approche « structurée et hiérarchique » du RAG, par opposition à la recherche de simples extraits de texte. Elle vise deux faiblesses du RAG classique : relier des informations dispersées, et répondre à des questions sur l'ensemble d'un corpus.

Les deux faiblesses du RAG classique qu'il vise

D'après la documentation, le RAG de base :

  • peine à « relier les points » quand la réponse demande de rapprocher des informations éparses à travers leurs attributs communs ;
  • répond mal aux questions d'ensemble, qui demandent de comprendre des thèmes résumés sur une grande collection ou un grand document.

Exemple illustratif : « Quels sont les principaux sujets de réclamation de nos clients depuis deux ans ? » Aucun passage isolé ne contient la réponse ; il faudrait les lire tous. Un RAG classique ramène quelques extraits et répond sur ces seuls extraits.

Comment GraphRAG indexe

Étape Ce qui se passe
Unités de texte le corpus est découpé en TextUnits, qui servent aussi de références fines
Extraction un modèle de langage extrait entités, relations et affirmations clés
Communautés le graphe est regroupé de façon hiérarchique par la méthode de Leiden
Résumés un résumé est produit pour chaque communauté, du bas vers le haut

La page de présentation de l'indexation décrit cette chaîne comme une extraction de données structurées à partir de texte non structuré à l'aide de modèles de langage.

Les modes de recherche

Mode Pour quelles questions Ce qu'il utilise
Global Search questions d'ensemble sur le corpus les résumés de communautés
Local Search questions sur une entité précise l'entité, ses voisines et les concepts associés
DRIFT Search questions sur une entité, avec plus de contexte recherche locale enrichie des informations de communauté
Basic Search questions auxquelles un RAG simple répond bien recherche vectorielle classique (les k plus proches)

Démarrer, d'après la documentation

La page de démarrage indique Python 3.10 à 3.12, une clé d'interface d'un fournisseur de modèles (elle mentionne OpenAI et Azure OpenAI), et ces commandes :

python -m pip install graphrag
graphrag init
graphrag index
graphrag query "What are the top themes in this story?"

La recherche locale se choisit avec --method local. La documentation recommande aussi d'adapter les consignes d'extraction (prompt tuning) à votre corpus, et prévient que graphrag init --force écrase votre configuration et vos consignes : sauvegardez-les avant.

Le coût, à anticiper

La documentation le dit en toutes lettres : GraphRAG peut consommer beaucoup de ressources de modèle de langage. L'extraction des entités et des relations passe en effet par un modèle de langage pour chaque unité de texte. Elle conseille d'essayer d'abord avec des modèles rapides et peu coûteux avant de lancer une grosse indexation. Faites un essai sur un échantillon représentatif, mesurez la consommation, puis extrapolez avant de traiter tout le corpus (voir Coût d'un RAG).

Quand l'envisager

Oui, probablement, si vos questions portent sur des tendances, des thèmes ou des relations dans un grand ensemble de documents : retours clients, rapports d'audit, comptes rendus, veille.

Non, pas d'abord, si vos questions trouvent leur réponse dans un ou deux passages : « Quel est le délai de garantie de tel produit ? » Un RAG classique bien réglé (hybride et retri) fera aussi bien, pour bien moins cher. GraphRAG le reconnaît en gardant un mode Basic Search.

Entre les deux, un RAG agentique, qui enchaîne plusieurs recherches, peut couvrir une partie des questions qui demandent de relier des informations, sans indexation en graphe.

Méthode de décision

  1. Classez cinquante questions réelles : réponse dans un passage, dans plusieurs passages, ou dans l'ensemble du corpus.
  2. Si la troisième catégorie est marginale, restez sur un RAG classique.
  3. Sinon, indexez un échantillon avec GraphRAG, comparez sur ces questions (voir Évaluer un RAG) et chiffrez le coût d'indexation.

Questions fréquentes

GraphRAG remplace-t-il un RAG classique ?

Non. GraphRAG propose lui-même un mode Basic Search, recherche vectorielle classique, pour les questions auxquelles un RAG simple répond bien. Le graphe sert aux questions globales ou qui demandent de relier des informations dispersées.

GraphRAG coûte-t-il cher ?

La documentation prévient que GraphRAG peut consommer beaucoup de ressources de modèle de langage, et conseille d'essayer d'abord des modèles rapides et peu coûteux avant un gros travail d'indexation.

Sources

Pages consultées pour écrire cet article :

  1. https://microsoft.github.io/graphrag/
  2. https://microsoft.github.io/graphrag/get_started/
  3. https://microsoft.github.io/graphrag/index/overview/

À lire aussi