Service auto-hébergé
axoviq-ai/synthadoc avatar
axoviq-ai/synthadoc

Synthadoc : un compilateur de wiki propulsé par LLM qui travaille à l'ingestion

Synthadoc : un moteur de compilation de connaissances LLM open source qui transforme les documents bruts en wikis structurés et locaux. Une alternative transparente et lisible par l'homme au RAG traditionnel, qui peut être autogérée et auto-améliorée sans utiliser d'outils.

1 226 étoiles123 forksPythonAGPL-3.0
GitHub

En bref

De quoi s’agit-il ?
Un moteur Python local d'abord qui transforme des PDF, des pages Web et d'autres sources brutes en un wiki Markdown structuré avec citations, détection de contradictions et un cycle de vie à cinq états.
À qui s’adresse-t-il ?
Synthadoc est un paquet Python qui compile des documents bruts en un wiki structuré et local d'abord au moment de l'ingestion, le wiki lui-même étant l'artefact. Le README le présente comme une alternative au RAG pour les équipes qui veulent des bases de connaissances lisibles, éditables et auditable.
Puis-je l’utiliser commercialement ?
Oui, sous conditions strictes. AGPL-3.0 est une licence à copyleft réseau : si des personnes utilisent une version modifiée via un réseau, par exemple comme service hébergé, vous devez leur proposer son code source sous la même licence.
Est-il encore maintenu ?
Oui. Le dépôt a reçu de nouveaux commits au cours des dernières 24 heures.
En quel langage est-il écrit ?
Principalement Python, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 19 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Synthèse à l'ingestion plutôt qu'à la requête

Synthadoc est un moteur open source de compilation de connaissances basé sur Python. Il lit des documents sources bruts, notamment des PDF, des feuilles de calcul, des présentations, des pages Web, des images, des vidéos, des fichiers Word, des fichiers texte et des transcriptions de sessions IA, et utilise un LLM pour les synthétiser en un wiki structuré et persistant. L'affirmation centrale du README est qu'il compile les connaissances au moment de l'ingestion, plutôt que de récupérer et résumer des fragments au moment de la requête comme le font les systèmes RAG typiques. La sortie est un ensemble de pages Markdown avec un frontmatter YAML, des wikiliens automatiques, des citations en ligne et un état de cycle de vie de page. Comme le wiki est en Markdown brut, il peut être ouvert dans Obsidian ou tout autre éditeur, sauvegardé avec git, et lu sans que le serveur Synthadoc ne soit lancé. Pour synthadoc, ce point doit être lu avec la structure du dépôt et les fichiers réellement mentionnés par le README. Une vérification utile consiste à reprendre l’exemple fourni, fixer les entrées, relever la sortie obtenue et noter les écarts de version ou de plateforme. Cette méthode permet de distinguer une capacité documentée d’une hypothèse d’intégration. Elle aide aussi à décider si l’outil convient à un usage local, à une équipe ou à une chaîne automatisée. Les limites observées doivent rester attachées à ce projet précis, à ses commandes et à ses fichiers, afin que la décision soit vérifiable par un autre contributeur.

Architecture et composants principaux

Le dépôt décrit un orchestrateur qui répartit des sous-agents d'ingestion, de requête et de lint en parallèle, avec des garde-fous de coût et un backoff de relance. Un système de capacités à chargement paresseux à trois niveaux permet d'injecter des compétences et des hooks personnalisés via une interface plug-and-play. Le système inclut un assainisseur de source avant LLM qui supprime les caractères de largeur nulle, les remplacements bidirectionnels, le HTML caché et les phrases d'écrasement d'instructions avant tout appel LLM. Il possède aussi un cache à trois couches pour les embeddings, les appels LLM et les invites de fournisseur, de sorte que les passages de lint répétés sur des pages inchangées coûtent presque zéro token. Les détails complets de l'architecture sont renvoyés à docs/design.md ; le README lui-même ne quantifie pas les performances au-delà de l'affirmation sur le cache.

Cycle de vie, provenance et détection des contradictions

Chaque page passe par un cycle de vie à cinq états : brouillon, actif, contradictoire, obsolète, archivé. Les passages de lint peuvent faire transiter les pages automatiquement, et chaque transition est enregistrée dans un journal d'événements immuable. Le système détecte les contradictions à l'ingestion et marque les pages avec status: contradicted, permettant une résolution automatique ou un examen humain. Un deuxième passage LLM adversaire signale les affirmations exagérées, les superlatifs non étayés et les faits contestables par page. Chaque affirmation porte une citation de la forme ^[file:L-L] qui pointe vers les lignes source, et un lint de citations cassées valide ces références. Les pages promues au statut actif sont protégées : les sources qui les contredisent sont signalées pour examen plutôt que d'écraser le contenu relu par un humain.

Installation, démo et première exécution

L'installation en production nécessite Python 3.11 ou plus récent. Le README donne pip install synthadoc et synthadoc --version comme deux premières commandes. Node.js, Git et les étapes de construction ne sont pas nécessaires en production. Vous avez besoin d'au moins une clé API LLM, sauf si vous utilisez Claude Code ou Opencode comme fournisseur. Synthadoc utilise par défaut Gemini Flash avec un niveau gratuit. Le démarrage le plus rapide est la démo History of Computing, installée avec synthadoc install history-of-computing --target ~/wikis --demo, puis lancée avec synthadoc serve -w history-of-computing. Le serveur se lie à http://127.0.0.1:7070 et est réservé à localhost. Selon le README, les 13 pages préconstruites de la démo ne nécessitent aucune clé API LLM pour être consultées.

Développer un wiki : ingestion, échafaudage, lint et routage

Pour un nouveau wiki, le README recommande synthadoc install avec une description --domain, qui génère des fichiers de démarrage tels que index.md, purpose.md, AGENTS.md, CLAUDE.md et GEMINI.md. Après l'ingestion des sources, scaffold régénère l'index et les fichiers de directives pour agents sans toucher aux pages liées. L'ingestion par recherche Web déploie une requête comme synthadoc ingest "search for: Bank of Canada interest rate decisions 2024" en tâches URL parallèles, chacune devenant une tâche d'ingestion. Le staging permet aux pages sous un seuil de confiance d'attendre dans un dossier candidates pour examen. Le lint exécute des vérifications structurelles et un passage adverse optionnel, et le routage crée un ROUTING.md qui limite les requêtes aux branches pertinentes. Le README documente également des tâches planifiées pour l'ingestion, le lint, le scaffold et le nettoyage du routage récurrents.

Interfaces et formats de sortie

Le projet comprend plusieurs interfaces. Le plugin Obsidian ajoute une modale d'ingestion, une requête en streaming, un rapport de lint, des contrôles de cycle de vie, un visualiseur de provenance et un panneau de graphe de connaissances, ainsi qu'une surveillance de coffre en arrière-plan qui prend des instantanés à la sauvegarde de fichier. L'interface de chat Web, lancée avec synthadoc web, fournit des réponses en streaming, l'historique des sessions, des appels de lacunes de connaissances et un onglet graphe. Un serveur MCP expose 12 outils pour Claude Desktop, Claude Code, n8n et LangGraph. Les packs de contexte rassemblent des extraits de wiki cités dans un budget de tokens pour une utilisation dans des invites externes. Les formats d'exportation incluent llms.txt, llms-full.txt, GraphML, JSON avec provenance et cycle de vie, et un bundle OKF v0.1. Le README déclare que tout cela est intégré, sans modules complémentaires.

Points réunis pour synthadoc

Opérations, confiance et licence. Synthadoc est conçu pour être local d'abord. Le README dit que les documents sources ne quittent jamais votre machine, que le wiki compilé est en Markdown brut et que le serveur ne se lie qu'à localhost. Il consigne les compteurs de tokens et de coûts par tâche, prend en charge des seuils d'avertissement doux et de blocage dur, et maintient une file de tâches reprenable. La sauvegarde et la restauration sont un seul zip avec réécriture de port et de domaine, de sorte que la migration ne nécessite pas de ré-ingestion. Le projet est sous licence AGPL-3.0, qui accorde la liberté de copier, distribuer et modifier le logiciel, et exige que les opérateurs de serveurs réseau exécutant des versions modifiées fournissent le code source correspondant aux utilisateurs. Le texte de licence indique également qu'il n'y a aucune garantie pour l'œuvre. Le README ne fournit pas de garanties de sécurité indépendantes, de résultats de référence ou de données de performance en production ; ceux-ci devraient être vérifiés séparément.

Vérifier synthadoc sur un cas réel. La commande de démarrage et les fichiers de configuration indiqués dans docs/user-quick-start-guide.md constituent le premier test utile. Il faut observer les fichiers Markdown produits, les références croisées, les contradictions signalées et les pages orphelines, puis vérifier l’intégration Obsidian ou MCP selon le mode choisi.

Limites concrètes pour synthadoc. Synthadoc convient à une équipe qui veut garder une base locale lisible et inspectable. La licence AGPL-3.0 impose toutefois d’examiner les obligations de partage du code modifié dès qu’un service est distribué ou mis à disposition sur un réseau.

Conclusion éditoriale

Synthadoc est un paquet Python qui compile des documents bruts en un wiki structuré et local d'abord au moment de l'ingestion, le wiki lui-même étant l'artefact. Le README le présente comme une alternative au RAG pour les équipes qui veulent des bases de connaissances lisibles, éditables et auditable. Le README n'établit pas de benchmarks indépendants ni de garanties de sécurité, ces affirmations devraient donc être vérifiées séparément. La commande de démarrage et les fichiers de configuration indiqués dans docs/user-quick-start-guide.md constituent le premier test utile. Il faut observer les fichiers Markdown produits, les références croisées, les contradictions signalées et les pages orphelines, puis vérifier l’intégration Obsidian ou MCP selon le mode choisi.

Sources officielles

  1. Official README
  2. Project repository
  3. Release notes
Notes de la communauté

Notes de la communauté