دورة

GraphRAG léger : entités, relations et questions multi-sauts

Extraire entités et relations avec une sortie structurée Gemini, les ranger dans un graphe networkx, détecter et résumer des communautés, puis répondre aux questions relationnelles (« qui est lié à… ») mieux qu'un RAG vectoriel, mesuré sur 15 questions de 1 à 3 sauts.

خبير 4 دروس 3h30
ابدأ الدورة
التقدّم 0% · 0/4

هذا المحتوى غير مترجم بعد. تُعرض النسخة الأصلية.

« Qui dirige les projets qui intègrent les cartes NC-7 ? » Pour répondre, il faut lire un document qui dit que les cartes NC-7 sont dans les projets Lynx et Altaïr, puis deux autres documents qui disent qui dirige Lynx et qui dirige Altaïr. Un RAG vectoriel classique cherche les passages qui ressemblent à la question : il trouve le premier document, rarement les deux autres, et répond « l'information n'est pas présente ».

Un GraphRAG (RAG sur graphe de connaissances) extrait d'abord des documents les entités (personnes, projets, entreprises…) et les relations entre elles (« dirige », « fournit », « filiale de »). Au moment de la question, il part des entités citées et suit les relations, de proche en proche. Ce lab en construit une version légère, en Python et networkx, et la compare chiffres à l'appui à un RAG vectoriel.

Pour qui ?

  • Vous avez déjà construit un RAG vectoriel et vous savez obtenir une sortie JSON d'un LLM.
  • Vous connaissez les bases de Python ; aucune connaissance préalable en théorie des graphes n'est nécessaire.
  • Vos questions métier portent sur des liens : organigrammes, fournisseurs, dépendances, enquêtes, conformité.

Ce que vous construisez

flowchart LR
  D["24 documents"] -->|"Gemini, sortie structurée"| X["entités + relations<br/>(avec doc source)"]
  X --> G["graphe networkx<br/>27 nœuds, 35 arêtes"]
  G --> C["communautés Louvain<br/>+ résumés Gemini"]
  Q["Question"] --> L["entités citées"]
  L --> V["voisinage à 2 sauts"]
  G --> V
  V --> R["réponse avec [doc_id]"]
  C --> R

Le corpus décrit une organisation fictive (projets Héron, Lynx, Corail, Altaïr ; fournisseurs Ilex Capteurs, Nordhaven Composants… ; tous les noms sont inventés).

Le résultat, en un tableau

Mesuré le 2026-10-15 avec python evaluate.py sur 15 questions de 1 à 3 sauts (détails et limites dans la leçon 4) :

MéthodeScore moyen1 saut2 sauts3 sautsRéponses complètes
RAG vectoriel (top 4)0.631.000.670.179/15
GraphRAG léger1.001.001.001.0015/15

Prérequis

  • Python 3.10 ou plus récent, une clé d'API Gemini dans GOOGLE_API_KEY (ou .env, voir .env.example).
  • pip install -r requirements.txt (requirements.txt) : google-genai, networkx, numpy, pydantic.

Programme

ModuleLeçonCe que vous faites
1. Cas d'usage et architectureLes questions relationnellescomprendre les sauts, le corpus, l'architecture
2. Construire pas à pasExtraire entités et relationsschéma Pydantic, extraction par lots, résolution d'entités
Graphe, communautés et réponsesnetworkx, Louvain, voisinage, recherche locale et globale
3. Évaluer et exploiterGraphRAG contre RAG vectorielévaluation chiffrée, échecs corrigés, coûts, limites

En local ou sur GCP ?

En local (ce lab)Sur Google Cloud
Graphenetworkx en mémoire (quelques milliers de nœuds)Spanner Graph, ou Neo4j sur GCP
ExtractionGemini via clé d'API, cache JSONGemini sur Vertex AI en lot (batch)
VecteursNumPyVertex AI Vector Search

Code complet : graphrag.py, evaluate.py, corpus.jsonl, questions.json, test_graphrag.py.

الموارد

تنزيل الكل (.zip)

المراجع