Knowledge Graph
Un graphe de connaissances stocke des faits sous forme de triplets entité-relation-entité, permettant aux systèmes d’IA de les interroger, de les relier et de raisonner à leur sujet. Découvre RDF, GraphRAG et le code.
Un graphe de connaissances est une représentation structurée de faits dans laquelle les nœuds sont des entités — personnes, lieux, produits ou concepts, par exemple — et les arêtes étiquetées représentent leurs relations. Chaque fait est un triplet sujet-prédicat-objet, comme (Marie Curie, née à, Varsovie), et un schéma ou une ontologie définit les types d’entités et de relations autorisés. Comme les relations sont stockées explicitement, un système peut répondre à des questions en parcourant les chemins du graphe, combiner des faits provenant de différentes sources au sujet d’une même entité et inférer des faits qui n’ont jamais été énoncés directement. Lancé en 2012, le Knowledge Graph de Google fournit les panneaux d’informations affichés à côté des résultats de recherche, tandis que Wikidata, le graphe de connaissances libre maintenu par les bénévoles de Wikimedia, compte plus de 100 millions d’éléments.
Entités, relations et triplets#
- Entités (nœuds) : Des éléments qui possèdent une identité et sont typés par l’ontologie, tels qu’une personne, une ville ou un composé chimique.
- Relations (arêtes) : Des liens orientés et étiquetés, tels que « né à » ou « capitale de ». L’étiquette porte un sens : (Varsovie, capitale de, Pologne) et (Pologne, capitale de, Varsovie) sont donc deux affirmations différentes.
- Attributs : Des valeurs littérales associées à une entité, comme une date de naissance ou une population.
- Ontologie : Le schéma des classes, des types de relations et des règles. Par exemple, le fait que chaque capitale soit une ville permet à un moteur de raisonnement de déduire de nouveaux faits à partir de ceux qui existent déjà.
Deux modèles de données dominent. Le Resource Description Framework (RDF) du W3C identifie chaque entité et chaque relation à l’aide d’un URI Web et stocke des triplets purs interrogeables avec SPARQL, ce qui convient aux données ouvertes et liées comme Wikidata. Les graphes de propriétés, utilisés par les bases de données graphes comme Neo4j, permettent aux nœuds et aux arêtes de porter des propriétés clé-valeur. On les interroge avec des langages tels que Cypher ou GQL, qu’ISO a publié comme norme en avril 2024.
Dans ce petit graphe, la question « dans quel pays Marie Curie est-elle née ? » correspond à un chemin en deux étapes allant de Marie Curie à la Pologne en passant par Varsovie ; les arêtes « remporté » communes relient les deux Curie à leur prix commun de 1903.
Construire et interroger un graphe de connaissances#
Les graphes sont alimentés par des bases de données sélectionnées, par du texte au moyen de la reconnaissance d’entités nommées (NER) et de l’extraction de relations, tâches de plus en plus effectuées par les grands modèles de langage (LLMs), ainsi que par des images. La résolution d’entités fusionne ensuite en un seul nœud les différentes mentions d’une même chose, comme « M. Curie » et « Marie Skłodowska-Curie ». Au-delà des requêtes explicites, les plongements de graphes de connaissances tels que TransE représentent chaque entité et relation par un vecteur et évaluent un triplet candidat selon la proximité entre la somme de la tête et de la relation et la queue. Ils permettent ainsi de prédire les liens manquants, tandis que les réseaux neuronaux de graphes apprennent directement à partir de la structure du graphe.
La vision par ordinateur extrait des entités et des relations à partir d’images. La sortie d’un détecteur YOLO26 devient des triplets (image, contient, classe) ; leur association à des faits contextuels permet de répondre à des questions auxquelles le détecteur seul ne peut pas répondre, comme les types de véhicules présents dans une image :
import networkx as nx
from ultralytics import YOLO
# Detect objects in an image
model = YOLO("yolo26n.pt")
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# Each detected class becomes an entity node linked to the image
graph = nx.DiGraph()
for class_id in result.boxes.cls.int().tolist():
graph.add_edge("bus.jpg", result.names[class_id], relation="contains")
# Background knowledge as (subject, relation, object) triples
for subject, relation, obj in [("bus", "is_a", "vehicle"), ("car", "is_a", "vehicle"), ("person", "is_a", "human")]:
graph.add_edge(subject, obj, relation=relation)
# Two-hop query: which detected entities are vehicles?
vehicles = [node for node in graph.successors("bus.jpg") if graph.has_edge(node, "vehicle")]
print(f"Vehicles in bus.jpg: {vehicles}")Graphes de connaissances et grands modèles de langage#
Les grands modèles de langage stockent implicitement leurs connaissances dans leurs poids, ce qui rend leurs faits difficiles à inspecter ou à mettre à jour et les expose aux hallucinations. Les graphes de connaissances stockent explicitement les faits, avec des sources que l’on peut citer et des modifications qui prennent effet immédiatement. GraphRAG combine les deux : cette approche étend la génération augmentée par récupération (RAG) en récupérant des entités liées et des chemins de relations, ou des résumés de communautés du graphe, plutôt que des segments de texte isolés. Elle aide ainsi à répondre à des questions à plusieurs étapes, comme déterminer quels fournisseurs d’une pièce retardée desservent aussi une autre usine. Les grands modèles de langage traduisent également des questions en langage naturel en requêtes SPARQL ou Cypher sur des graphes existants.
Applications concrètes#
- Recherche et assistants : Les panneaux d’entités, les réponses directes et les assistants vocaux consultent de grands graphes sélectionnés pour trouver des faits sur les personnes, les lieux et les organisations.
- Découverte de médicaments : Les graphes biomédicaux relient les gènes, les protéines, les composés, les maladies et les effets secondaires ; la prédiction de liens propose des cibles médicamenteuses candidates ou de nouvelles utilisations pour des médicaments approuvés.
- Détection des fraudes : Les comptes qui partagent des appareils, des adresses ou des cartes de paiement forment des réseaux connectés qui ressortent lors de l’exploration du graphe, même si chaque compte semble normal lorsqu’on l’examine isolément.
- Compréhension de scène : les graphes de scène décrivent une image sous forme d’objets et de leurs relations, par exemple (personne, monte, cheval). Le jeu de données Visual Genome annote ainsi plus de 100 000 images pour entraîner des modèles qui répondent à des questions sur les scènes.
Graphes de connaissances et magasins de données apparentés#
- Bases de données relationnelles : Stockent des enregistrements dans des tables liées par des clés étrangères, ce qui convient aux transactions avec un schéma fixe. Les questions en plusieurs étapes, comme « amis d’amis ayant acheté ce produit », nécessitent une jointure par étape, tandis qu’un graphe parcourt directement les arêtes stockées.
- Bases de données vectorielles : Récupèrent les éléments selon la similarité de leurs plongements, ce qui permet de trouver du contenu associé sans liens explicites. Un graphe de connaissances enregistre précisément la relation entre deux entités, et les systèmes hybrides utilisent les deux approches.
- Ontologies : Une ontologie est le schéma des types et des règles ; un graphe de connaissances est ce schéma rempli de faits portant sur des instances, comme les millions de personnes, de lieux et d’œuvres présents dans Wikidata.










