Graphify — knowledge graph depuis un folder, inspire par Karpathy¶
Resume¶
Graphify transforme un dossier de contenus mixtes (code, docs, PDFs, images, videos) en un knowledge graph requetable. 39.5K stars. Inspire par la pratique d'Andrej Karpathy de garder un dossier /raw de papiers, tweets, screenshots et notes. Architecture 3 passes : AST deterministe (tree-sitter), transcription locale (faster-whisper), extraction semantique (Claude subagents). Pas de vector DB — la similarite emerge de la topologie du graphe.
Architecture technique¶
3 passes d'extraction¶
| Passe | Methode | Scope | Donnees quittent la machine ? |
|---|---|---|---|
| 1. AST deterministe | tree-sitter (25 langages) | Code : classes, fonctions, imports, call graphs | Non |
| 2. Transcription | faster-whisper local | Video/audio → texte | Non |
| 3. Extraction semantique | Claude subagents en parallele | Docs, papers, images → concepts et relations | Oui (API LLM) |
Format du graphe¶
- NetworkX pour la construction et l'analyse
- Relations typees : EXTRACTED (confiance 1.0), INFERRED (0.0-1.0), AMBIGUOUS (a revoir humain)
- Nodes speciaux : "rationale nodes" capturant docstrings et commentaires de design
- Hyperedges pour les relations 3+ nodes
- Clustering par topologie (Leiden algorithm), pas par embeddings
Sorties¶
| Fichier | Contenu |
|---|---|
graph.html | Visualisation interactive (vis.js), filtrage par communaute |
GRAPH_REPORT.md | Resume : god nodes, connexions surprenantes, questions suggerees |
graph.json | Graphe persistant et requetable |
cache/ | Cache SHA256 pour rebuilds incrementaux |
Integrations¶
- MCP server mode : expose graph.json comme Model Context Protocol
- Obsidian : generation optionnelle de vault
- Wiki : generation de documentation Markdown par communaute
- Claude Code hooks : PreToolUse hooks pour rebuild auto post-commit
Performance revendiquee¶
"71.5x fewer tokens per query vs reading raw files" sur grands corpus mixtes.
Analyse critique¶
Ce qui est fort :
- Pas de vector DB. La similarite emerge de la topologie du graphe (Leiden clustering). C'est fondamentalement different de FAISS/MemPalace/Hindsight qui sont tous bases sur des embeddings. L'approche topologique capture des relations structurelles que les embeddings ratent.
- AST deterministe pour le code. tree-sitter est fiable, rapide, et ne necessite pas de LLM. Le code est parse structurellement, pas semantiquement. Bon choix.
- Privacy model clair. Code et audio = local. Docs et images = API. Separation explicite.
- Incremental. Cache SHA256 + rebuild sur les fichiers changes seulement. Viable pour des repos qui evoluent.
- MCP server mode. Le graphe est requetable depuis Claude Code natvement. Integration directe.
Ce qui est limite :
- L'extraction semantique (passe 3) depend de Claude. Pour des docs sensibles, ca envoie du contenu a l'API. Pas compatible avec notre contrainte RGPD sur certains documents.
- 39.5K stars en quelques jours — pattern viral classique. A voir si le projet est maintenu dans 3 mois.
- "71.5x fewer tokens" — claim marketing. Depend enormement de la taille et de la nature du corpus.
- Pas de dimension temporelle. Le graphe est un snapshot. Pas de "cette relation existait avant mais plus maintenant". C'est la meme limite que MemPalace KG pour du pilotage projet.
Pertinence ProbatioVault¶
Modere — deux angles.
1. Alternative a MemPalace pour l'indexation du code ProbatioVault¶
Graphify pourrait indexer les 7 repos ProbatioVault (4.5M tokens) en knowledge graph. L'approche topologique (vs embeddings) pourrait mieux capturer les relations structurelles entre modules, specs, et invariants. Le MCP server mode permettrait de requeter depuis Claude Code.
Mais : notre FAISS specialise (veille, clarifications, learnings) est deja cible par type. Graphify serait plus utile pour un index transversal — trouver des relations entre specs backend et app qui n'ont pas ete indexees explicitement. C'est le cas d'usage "cross-retrieval inter-repos" identifie dans la fiche Hindsight.
2. Complement au pipeline Prolog de coherence¶
Notre extracteur Prolog (thread #8) extrait des predicats depuis les besoins Markdown et detecte les contradictions. Graphify pourrait servir de pre-traitement : extraire un graphe de concepts depuis les specs, puis alimenter Prolog avec des relations plus riches que ce que notre extracteur capture aujourd'hui (~30% des implications).
Action¶
Pas d'action immediate. A tester quand le besoin de cross-retrieval inter-repos devient reel (cf. fiche Hindsight). Le MCP server mode rend l'experimentation simple : pip install graphifyy + graphify mcp.