Communitygithub.com

GraphRAG

Construisez un pipeline GraphRAG sur vos documents. À utiliser lorsque la recherche vectorielle renvoie des fragments sans connexions ou que les questions nécessitent un raisonnement multi-sauts.

Qu'est-ce que GraphRAG ?

GraphRAG (Retrieval-Augmented Generation sur graphe de connaissances) permet de répondre à des questions complexes en suivant des relations entre entités, là où la recherche vectorielle échoue car elle ne trouve que des fragments similaires mais pas leurs connexions. Ce skill extrait les entités et relations de vos documents selon un schéma déclaré, les charge dans une base graphe embarquée (Kuzu) ou serveur (Neo4j), puis exécute des requêtes Cypher pour le raisonnement multi-sauts, la synthèse globale ou la recherche locale. Il s'intègre dans des workflows d'agents IA (Claude, Cursor, Codex) pour fournir des réponses structurées avec preuves, et gère la mémoire temporelle via des timestamps sur les arêtes. Attention : ne pas l'utiliser pour des faits simples (préférez la recherche vectorielle), ne pas extraire sans schéma, et toujours vérifier manuellement la qualité de l'extraction.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/unisone/openclaw-skill-suite/tree/main/skills/graphrag

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Compétence GraphRAG

Génération augmentée de récupération sur un graphe de connaissances au lieu de fragments plats. Les entités et les relations sont extraites de vos documents, stockées dans une base de données graphe, et le LLM raisonne sur la structure du graphe au moment de la requête.

Pourquoi un graphe plutôt que des vecteurs

La recherche vectorielle trouve des fragments similaires. Elle ne peut pas suivre les connexions :

  • "Quels fournisseurs ont été affectés par la panne de l'usine X ?" nécessite Panne → affecte → Usine → fournie_par → Fournisseur — deux sauts qu'aucun fragment unique ne contient.
  • "Résume tout ce que nous savons sur le projet Y" nécessite la communauté d'entités autour de Y, pas les dix paragraphes les plus similaires.

Si vos questions sont des recherches de faits uniques, restez avec le RAG vectoriel — c'est plus simple. Utilisez GraphRAG lorsque les questions impliquent des relations.

Stack

  • Kuzu — base de données graphe embarquée (pip install kuzu), pas de serveur à lancer, langage de requête Cypher. Commencez ici.
  • Neo4j — lorsque vous dépassez l'embarqué : multi-utilisateurs, graphes plus grands, visualisation Bloom. Mêmes compétences Cypher transférables.
  • Extraction LLM — tout modèle puissant avec sortie structurée pour l'extraction d'entités/relations.

Pipeline

1. Définir le schéma d'abord

Ne laissez pas l'extracteur inventer librement les types — vous obtiendrez 40 orthographes de la même relation. Déclarez les types de nœuds et d'arêtes dès le départ :

CREATE NODE TABLE Personne(nom STRING, PRIMARY KEY(nom));
CREATE NODE TABLE Projet(nom STRING, statut STRING, PRIMARY KEY(nom));
CREATE NODE TABLE Document(titre STRING, date DATE, PRIMARY KEY(titre));
CREATE REL TABLE TRAVAILLE_SUR(DE Personne VERS Projet, role STRING);
CREATE REL TABLE MENTIONNE(DE Document VERS Personne);
CREATE REL TABLE MENTIONNE_PROJET(DE Document VERS Projet);

Gardez le schéma petit (5-10 types de nœuds). Vous pouvez l'étendre ; vous ne pouvez pas revenir en arrière d'un graphe brouillon à moindre coût.

2. Extraire les entités et les relations

Découpez les documents (500-1000 tokens, avec chevauchement), puis invitez l'extracteur :

Extrayez les entités et les relations du texte ci-dessous.

Types de nœuds autorisés : Personne, Projet, Document
Types d'arêtes autorisés : TRAVAILLE_SUR (Personne→Projet), MENTIONNE (Document→Personne),
                    MENTIONNE_PROJET (Document→Projet)

Règles :
- Normalisez les noms ("J. Dupont" et "Jean Dupont" sont la même Personne)
- Extrayez uniquement les relations énoncées ou clairement implicites dans le texte
- Renvoyez JSON : {"nodes": [...], "edges": [...]}

Texte :
<extrait>

Vérifiez manuellement 10 à 20 extraits. La qualité de l'extraction est le plafond pour tout ce qui suit — un graphe bruité donne des réponses bruitées.

3. Charger dans Kuzu

import kuzu
db = kuzu.Database("./connaissances.kz")
conn = kuzu.Connection(db)
# créer le schéma, puis MERGE/CREATE paramétré par nœud/arête extrait

Dédupliquez au chargement (MERGE sur la clé primaire) — la même entité apparaît dans de nombreux extraits.

4. Modèles de requêtes

Recherche locale — tout ce qui est connecté à une entité :

MATCH (p:Personne {nom: $nom})-[r]-(voisin)
RETURN type(r), voisin;

Raisonnement multi-sauts — suivez les relations à travers le graphe :

// Qui travaille sur des projets mentionnés dans des documents sur la panne ?
MATCH (d:Document)-[:MENTIONNE_PROJET]->(proj:Projet)<-[:TRAVAILLE_SUR]-(p:Personne)
WHERE d.titre CONTAINS 'panne'
RETURN DISTINCT p.nom, proj.nom;

Synthèse globale — détection de communautés, puis résumé de chaque communauté :

// Trouver les clusters densément connectés (exécuter une fois, stocker l'ID de communauté sur les nœuds)
CALL show_tables();  // puis utilisez la détection de communautés de votre graphe

Résumez chaque communauté avec le LLM : "ces entités se regroupent autour du sujet X." C'est la "requête globale" de GraphRAG — des questions comme "quels sont les thèmes principaux dans ces documents ?"

5. Répondre avec le LLM

Le modèle de requête qui fonctionne :

  1. L'agent traduit la question en 1 à 3 requêtes Cypher
  2. Les résultats reviennent sous forme de lignes structurées
  3. Le LLM synthétise la réponse à partir des lignes, en citant les preuves nœuds/arêtes
  4. Si une requête ne renvoie rien, l'agent reformule — il n'hallucine jamais le contenu du graphe

Connaissance temporelle (mémoire d'agent)

Pour la mémoire d'agent entre sessions, ajoutez le temps aux arêtes : horodatages VALID_FROM / VALID_TO, les faits supplantés sont marqués plutôt que supprimés. C'est le modèle de graphe de connaissances temporel (voir Graphiti/Zep) : "l'utilisateur préférait X, maintenant préfère Y" reste interrogeable au lieu d'être écrasé.

Anti-patrons

  • Extraire sans schéma. L'extraction libre produit un graphe que personne ne peut interroger.
  • GraphRAG pour tout. Recherche de fait unique sur des documents propres ? La recherche vectorielle est moins chère et meilleure. Utilisez le graphe là où les relations comptent.
  • Faire aveuglément confiance à l'extraction. Chaque pipeline a besoin d'une boucle de vérification manuelle ; les erreurs d'extraction s'accumulent silencieusement.
  • Gros extraits. L'extraction d'entités se dégrade au-delà de ~1000 tokens — le modèle commence à perdre des relations. Extraits plus petits, plus nombreux.
  • Pas de déduplication au chargement. "Jean Dupont", "J. Dupont", "Dupont" comme trois nœuds casse silencieusement les requêtes multi-sauts.

Individual skills in this repo

This repo contains 10 individual skills — each has its own dedicated page.

astra-operator

Delegate computer-use and browser tasks to OpenAI

design-inspo

Find design inspiration from curated gallery sites. Use when a user needs UI/UX references, design examples, or inspiration for specific components (navbars, CTAs, hero sections, landing pages, etc.), full websites, SaaS products, mobile apps, animations, icons, branding, or design systems. Helps select the right inspiration source and browse examples.

mundane-demos

Demo strategy that leads with mundane real-life utility instead of benchmarks. Use when presenting an AI agent or product to non-technical audiences. Covers picking tasks the viewer did this morning, showing end-to-end completion, and letting speed be the wow factor.

release-notes

Generate polished release notes from git history. Use when cutting a release, before publishing a GitHub release, or when you need a changelog from commits between two tags. Groups changes by type, surfaces breaking changes, and drafts highlights.

remotion-product-demos

Create Apple-keynote-quality product demo videos with Remotion. Covers glass phone mockups, floating 3D spheres, typing animations, card UIs, ripple effects, and smooth scene transitions. Use when asked to create product demos, app showcase videos, UI walkthrough animations, or

repo-security-scan

Scan a repository for high-signal security issues and produce a report. Use when auditing a codebase for leaked secrets or vulnerable dependencies, before a release, or when onboarding an unfamiliar repo. Runs gitleaks secret scanning and osv-scanner dependency checks.

secure-agent-design

Security architecture patterns for personal AI agents that touch real accounts. Use when designing an agent with access to inbox, calendar, finances, or shopping. Covers per-user isolated VMs, pre-action sentinel checks, least-privilege connectors, human approval gates, and single-use payment credentials.

testimonial-launch

Turn user testimonials into launch distribution. Use when launching a product or feature and you want real user proof to carry the announcement instead of marketing copy. Covers soliciting specific testimonials, curating them, and amplifying via quote-posts.

unisone/openclaw-skill-suite

Create Apple-keynote-quality product demo videos with Remotion. Covers glass phone mockups, floating 3D spheres, typing animations, card UIs, ripple effects, and smooth scene transitions. Use when asked to create product demos, app showcase videos, UI walkthrough animations, or

validator-quotes

Earn and deploy third-party validator quotes for a launch. Use when you need credibility beyond your own claims. Covers who to approach, how to get honest reactions, and how to amplify them via quote-posts, based on the founder/CEO validators behind the Muse launch.

Skills associés