Débat audio sur l'article :
Meta description : Découvrez l'architecture "deux cerveaux" des knowledge graphs IA : KG micro pour les faits, KG macro pour le contexte. Audit réel avec 66 000 triplets et métriques de santé.
Mots-clés : graphe de connaissance IA, knowledge graph agent IA, base de connaissance agent IA, RAG architecture knowledge graph, KG micro macro IA
Comment un agent IA sait-il ce qu'il sait ? C'est une question qui paraît simple, mais dont la réponse change tout à la manière dont on conçoit un système intelligent. Un agent qui répond à vos questions ne « pense » pas dans le vide — il navigue dans une représentation structurée du monde. Et la qualité de cette représentation détermine directement la qualité de ses réponses.
Qu'est-ce qu'un graphe de connaissance IA ? Un graphe de connaissance (Knowledge Graph, KG) est une base de données qui stocke des relations entre entités sous forme de triplets : sujet → relation → objet. Appliqué à un système d'agents IA, il constitue la mémoire structurée et navigable de l'infrastructure — faits, dépendances, historique, contexte fonctionnel.
Dans mon infrastructure d'agents autonomes, j'utilise une architecture que j'appelle « deux cerveaux » : un graphe de connaissance micro pour les faits bruts, et un graphe de connaissance macro pour le contexte fonctionnel. Après un audit complet de cette architecture cette semaine, je partage les chiffres réels et ce que cette dualité change concrètement.
Avant de continuer de lire la suite de l'article, je vous invite à vous inscrire à ma newsletter, pour connaître en avant première les futurs sujets traités chaque semaine.
Le KG micro : le cerveau factuel
Un graphe de connaissance (Knowledge Graph, KG) est une base de données qui stocke des relations entre entités sous forme de triplets : sujet → relation → objet. Par exemple : mgrr-agent-code-reviewer USES_TOOL Bash ou ConfigLoader.svelte CALLS_API GET /api/contacts.
Mon KG micro contient actuellement 66 045 triplets actifs (sur 74 360 au total, soit 88,8 % d'actifs). Ce n'est pas une collection arbitraire de faits — chaque triplet a été extrait automatiquement depuis des sources réelles : dépôts git, fichiers de code, sessions d'agents, configurations.
Ce que représentent ces 66 000 triplets
La diversité est frappante : 121 types de relations différentes, 35 types de sujets, 53 types d'objets, alimentés par 52 sources d'extraction distinctes.
Les relations les plus fréquentes donnent une idée de ce que le graphe « sait » en priorité :
RELATED_TO(7 440 triplets) : similarité sémantique entre entitésOWNS(5 814) etCREATES(5 672) : attribution de code depuis l'historique gitDIR_CONTAINS(5 561) etCONTAINS(5 555) : structure des répertoiresIMPLEMENTED_IN(4 718) : lien entre entité KG et chunk de code sourceDEPENDS_ON_VERSION(1 824) : dépendances versionnées (ex :axios@1.6.0)
Concrètement : quand un agent cherche « qui est responsable de ce composant ? », il traverse la relation OWNS issue de l'historique git. Quand il cherche « quelles fonctions ce fichier importe-t-il ? », il parcourt IMPORTS_FUNCTION. Le graphe est une carte navigable de l'infrastructure.
Les hubs : les nœuds les plus connectés
Comme dans tout graphe réel, certains nœuds concentrent beaucoup de connexions. Les trois premiers hubs de mon KG micro sont :
user: 12 169 connexions (auteur git des modifications)claude/agent: 4 284 connexions (agent IA principal)svelte5/projet: 3 742 connexions (le projet frontend principal)
Ces hubs sont utiles pour la navigation — ils permettent de trouver rapidement les entités centrales — mais ils doivent être filtrés dans les visualisations pour ne pas écraser les nœuds plus spécifiques.
D'où viennent les données ?
Les quatre sources dominantes couvrent la majorité du graphe :
- git-log (25,6 %) : historique de commits, ownership, qui a créé/modifié quoi
- svelte5-parse (15,9 %) : analyse AST des composants Svelte5 (props, stores, events, appels API)
- dir-hierarchy (8,9 %) : arborescence des répertoires
- grepai-chunks (7,1 %) : liens vers les chunks de code source indexés dans GrepAI
La qualité des embeddings est à 100 % — chaque triplet est vectorisé avec bge-m3 (1024 dimensions), ce qui permet la recherche sémantique directement dans le graphe. Aucune alerte n'est levée sur la santé du KG micro.
Le KG macro : le cerveau contextuel
Le KG micro est excellent pour répondre à des questions factuelles précises. Mais il a une limite : avec 66 000 triplets et 121 types de relations, la navigation peut devenir complexe. Comment un agent sait-il dans quel domaine fonctionnel il opère ? Comment navigue-t-il de « ce composant Svelte » vers « l'équipe qui le maintient » vers « les agents IA responsables de ce domaine » ?
C'est le rôle du KG macro : une couche sémantique au-dessus du graphe micro qui organise les entités en domaines fonctionnels.
8 domaines, 1 597 ancres
Le KG macro identifie actuellement 8 domaines fonctionnels et les relie via 1 597 ancres (des liens entre une entité micro et son domaine macro).
| Domaine | Ancres | % |
|---|---|---|
| GrepAI-Frontend-Svelte | 591 | 37,0 % |
| GrepAI-AgentOrchestration | 425 | 26,6 % |
| GrepAI-DevTools | 308 | 19,3 % |
| GrepAI-Infrastructure | 124 | 7,8 % |
| GrepAI-Platform | 66 | 4,1 % |
| GrepAI-KnowledgeGraph | 39 | 2,4 % |
| GrepAI-Monitoring | 38 | 2,4 % |
| GrepAI-Frontend-KGViz | 6 | 0,4 % |
Le domaine GrepAI-Frontend-Svelte domine avec 37 % des ancres — ce qui reflète la réalité : le projet principal est une application Svelte5 conséquente. GrepAI-AgentOrchestration avec 26,6 % représente l'infrastructure d'agents IA. Ces deux domaines à eux seuls couvrent 63,6 % du système.
Les relations entre domaines : ce que le cosinus révèle
Le KG macro ne se contente pas d'organiser — il mesure les chevauchements sémantiques entre domaines via une similarité cosinus réelle (pas une heuristique, une vraie mesure vectorielle calculée sur les embeddings bge-m3).
Les résultats sont parlants :
- Frontend-Svelte ↔ Frontend-KGViz : cosinus 0,784 — les deux interfaces partagent des patterns de code très similaires
- Infrastructure ↔ Platform : 0,739 — couches techniques proches
- DevTools ↔ Platform : 0,730 — les outils de développement dépendent fortement de la plateforme
- AgentOrchestration ↔ Monitoring : 0,697 — les agents et leur monitoring sont sémantiquement liés
Ces scores permettent à un agent de raisonner : « je travaille sur un composant KGViz, le domaine Frontend-Svelte est très proche (0,784), je vais aussi charger les règles de ce domaine. »
L'audit en pratique : les métriques qui comptent
Un KG sans audit régulier devient rapidement une base de faits périmés. Voici les métriques que je surveille et ce qu'elles indiquent.
Santé du KG micro
Taux d'activité : 88,8 % des triplets sont actifs. Les 11,2 % inactifs correspondent à des entités supprimées ou obsolètes, conservées pour la traçabilité mais filtrées dans les requêtes courantes.
Couverture des embeddings : 100 %. C'est la métrique critique pour la recherche sémantique — un triplet sans embedding est invisible pour la recherche vectorielle. Un taux inférieur à 95 % devrait déclencher une alerte.
Diversité des sources : 52 sources d'extraction. Plus ce nombre est élevé, plus le graphe capture des facettes différentes du système. Un graphe alimenté par une seule source (uniquement le git-log, par exemple) manquerait toute la dimension sémantique des imports, des appels API, des dépendances versionnées.
Santé du KG macro : les 6 alertes vertes
L'audit du KG macro vérifie 6 conditions de santé. Toutes sont au vert :
- anchor_gap = 0 % : aucune entité macro sans ancres micro
- hub_concentration = 37,17 % (seuil : 40 %) : le domaine le plus dense ne concentre pas trop d'ancres — le graphe n'est pas déséquilibré
- expired anchors = 0 : aucune ancre périmée
- embedding nulls = 0 : tous les nœuds macro sont vectorisés
- jaccard uniformity : bonne répartition des entités entre domaines
- orphan anchors = 0 : aucune ancre sans domaine parent valide
Le seuil de hub_concentration à 40 % est particulièrement important. Si un seul domaine attire trop d'ancres (> 40 %), cela signifie que le découpage en domaines est mal calibré — trop d'entités s'accumulent dans un « sac » générique plutôt que d'être réparties dans des domaines spécifiques. À 37,17 %, je suis en zone de vigilance mais hors d'alerte.
Ce que cette architecture change
Pour un développeur qui construit un système RAG ou une base de connaissance pour ses agents, la distinction micro/macro n'est pas anecdotique. Elle change la manière de penser les requêtes et le routing.
Le routing sémantique par domaine
Sans KG macro, un agent qui reçoit une tâche sur un composant Svelte doit soit connaître à l'avance à quel domaine appartient ce composant, soit faire une recherche full-scan dans les 66 000 triplets. Avec le macro, la fonction kg_macro_domain_for('ConfigLoader.svelte') renvoie instantanément GrepAI-Frontend-Svelte, et l'agent sait quelles règles de domaine charger en priorité.
La bridge sémantique : traverser les deux niveaux
La fonction kg_macro_bridge('mgrr-agent-planner', 'mgrr-agent-code-reviewer') trace un chemin entre deux agents via les domaines macro. Au lieu de chercher une relation directe dans 66 000 triplets, elle monte au niveau macro, traverse les relations OVERLAPS_WITH, et redescend. C'est l'équivalent d'un GPS qui passe par les grandes routes avant de vous guider dans les petites rues.
La détection de dépendances inattendues
La force du graphe micro est de révéler des dépendances qui ne sont pas évidentes à la lecture du code. NEVER_IMPORTED (1 798 triplets) identifie des packages installés mais jamais importés. SEMANTICALLY_LINKED connecte un agent IA à des composants de code sans qu'il y ait de lien explicite dans le code source — juste une proximité sémantique calculée sur les embeddings.
Ces relations « inattendues » sont celles qui ont le plus de valeur pour un audit d'architecture.
Pour aller plus loin : les métriques de santé pour les développeurs RAG
Si vous construisez un système similaire, voici les métriques à surveiller en priorité (avec les requêtes SQL correspondantes) :
Taux d'activité des triplets : SELECT COUNT(*) FILTER (WHERE active) * 100.0 / COUNT(*) FROM rag_knowledge_graph. Cible : > 85 %.
Couverture embeddings : SELECT COUNT(*) FILTER (WHERE embedding IS NOT NULL) * 100.0 / COUNT(*) FROM rag_knowledge_graph WHERE active = true. Cible : 100 %.
Concentration des hubs : surveiller que les top-5 nœuds ne représentent pas > 50 % des connexions totales. Les super-hubs (user, claude) sont normaux dans un graphe git, mais doivent être filtrés dans les requêtes sémantiques.
Ancres macro : SELECT macro_entity, COUNT(*) as anchors, ROUND(100.0*COUNT(*)/SUM(COUNT(*)) OVER(), 1) as pct FROM kg_macro_anchors WHERE active=true GROUP BY macro_entity ORDER BY anchors DESC. Si un domaine dépasse 40 %, revoir le découpage.
Drift de versions : SELECT * FROM v_lib_version_drift WHERE drift_severity NOT ILIKE 'LOW%'. Les packages installés en plusieurs versions dans différents projets sont une source de bugs silencieux.
Imports morts : SELECT * FROM kg_dead_imports() WHERE verdict ILIKE 'ORPHAN%'. Des packages installés mais jamais importés alourdissent le bundle sans apporter de valeur.
L'audit complet (6 alertes macro + métriques micro) tourne en moins de 10 secondes sur une infrastructure modeste. Il devrait faire partie de tout pipeline CI sérieux.
Conclusion
Deux cerveaux, une seule intelligence. Le KG micro sait tout — faits, relations, dépendances, historique. Le KG macro sait où — dans quel domaine fonctionnel opère chaque entité, quelles zones se chevauchent, où sont les déséquilibres.
Un agent sans cette dualité peut fonctionner — la plupart le font. Mais il navigue à vue dans sa propre base de connaissance, sans carte à grande échelle. L'ajout du niveau macro ne multiplie pas la complexité : c'est une couche légère (1 597 ancres pour 66 000 triplets, soit 2,4 % de surcoût en stockage) qui change fondamentalement la qualité du raisonnement.
La vraie valeur de cette architecture n'est pas dans les chiffres de l'audit — elle est dans ce qu'elle permet : des agents qui savent non seulement quoi faire, mais dans quel contexte ils opèrent. C'est la différence entre un assistant qui consulte un annuaire et un expert qui comprend l'organisation.
Articles liés :
- Surveillance des agents IA : gardes-fous et mécanismes de contrôle
- Claude tokens et optimisation du contexte
- Agent tasks : observabilité multi-environnement
- Benchmark modèles IA locaux 2026
Qui suis-je ?
Je suis Mathieu GRENIER, CTO d'Easystrat une startup de Montpellier, en France. Je manage une équipe d'une dizaine d'ingénieurs (Graphistes, IA, frontend, backend, devOps, AWS) en remote depuis le Japon.
J'ai aussi mon activité de freelance, où je conseille des entrepreneurs dans leurs projets d'application.
Avec mon expérience personnelle de plus de 15 ans en ESN, j'ai pu travailler pour un large panel d'entreprises de différentes tailles. Ma compréhension des problèmes métiers est une de mes grandes forces et permet à mes clients de pouvoir se projeter plus facilement.
L'essentiel de mon travail consiste à canaliser l'énergie des entrepreneurs sur l'essence même de leur projet.
La technologie, les méthodes, le management sont le cœur de mes compétences.
Vous pouvez me faire confiance sur ces points là.
Si vous voulez me parler d'un de vos projets, n'hésitez pas à m'envoyer un email avec vos disponibilités à : contact@mathieugrenier.fr
Tous les articles de ce blog sont écrits par moi, même si je peux m'aider de l'IA pour illustrer mes propos. Mais jamais je ne fournis d'articles 100 % IA.
Graphes de connaissance IA : pourquoi votre agent a besoin de deux cerveaux (cortex et minus)