Knowledge Graph
Un grafo della conoscenza memorizza fatti come triple entità-relazione-entità, consentendo ai sistemi di IA di consultarli, collegarli e ragionarci. RDF, GraphRAG e codice.
Un grafo della conoscenza è una rappresentazione strutturata dei fatti, in cui i nodi sono entità, come persone, luoghi, prodotti o concetti, e gli archi etichettati rappresentano le relazioni tra queste entità. Ogni fatto è una tripla composta da soggetto, predicato e oggetto, ad esempio (Marie Curie, nata a, Varsavia); uno schema o un'ontologia definisce i tipi di entità e relazioni ammessi. Poiché le relazioni sono memorizzate in modo esplicito, un sistema può rispondere alle domande seguendo i percorsi nel grafo, combinare fatti provenienti da fonti diverse sulla stessa entità e dedurre fatti mai dichiarati direttamente. Il Knowledge Graph di Google, lanciato nel 2012, fornisce i riquadri informativi accanto ai risultati di ricerca, mentre Wikidata, il grafo della conoscenza gratuito mantenuto dai volontari di Wikimedia, contiene oltre 100 milioni di elementi.
Entità, relazioni e triple#
- Entità (nodi): elementi dotati di un'identità, ciascuno tipizzato dall'ontologia, come una persona, una città o un composto chimico.
- Relazioni (archi): collegamenti diretti ed etichettati, come «nata a» o «capitale di». L'etichetta definisce il significato: (Varsavia, capitale di, Polonia) e (Polonia, capitale di, Varsavia) sono affermazioni diverse.
- Attributi: valori letterali associati a un'entità, come la data di nascita o la popolazione.
- Ontologia: lo schema di classi, tipi di relazione e regole; per esempio, stabilisce che ogni capitale è una città e permette a un motore inferenziale di dedurre nuovi fatti da quelli esistenti.
Esistono due modelli di dati predominanti. Il Resource Description Framework (RDF) del W3C identifica ogni entità e relazione con un URI web e memorizza triple semplici interrogabili con SPARQL, caratteristiche adatte ai dati aperti e collegati come Wikidata. I grafi a proprietà, usati dai database a grafo come Neo4j, permettono di associare proprietà chiave-valore ai nodi e agli archi e si interrogano con linguaggi come Cypher o GQL, pubblicato da ISO come standard nell'aprile 2024.
In questo piccolo grafo, la domanda «in quale paese è nata Marie Curie?» corrisponde a un percorso di due passaggi da Marie Curie a Varsavia e poi alla Polonia; gli archi «ha vinto» condivisi collegano entrambe le Curie al loro premio congiunto del 1903.
Creazione e interrogazione di un grafo della conoscenza#
I grafi vengono popolati con database curati, con testo elaborato tramite riconoscimento delle entità nominate (NER) ed estrazione delle relazioni, attività sempre più spesso svolte da modelli linguistici di grandi dimensioni (LLM), e con immagini. La risoluzione delle entità unisce quindi menzioni diverse della stessa cosa, come «M. Curie» e «Marie Skłodowska-Curie», in un unico nodo. Oltre alle query esplicite, gli embedding dei grafi della conoscenza, come TransE, rappresentano ogni entità e relazione come un vettore e assegnano un punteggio a una tripla candidata in base a quanto la somma della testa e della relazione si avvicina alla coda; questo permette di prevedere collegamenti mancanti. Le reti neurali a grafo apprendono direttamente dalla struttura del grafo.
La visione artificiale estrae entità e relazioni dalle immagini. L'output di un rilevatore YOLO26 diventa una serie di triple (immagine, contiene, classe); unirle ai fatti di contesto permette di rispondere a domande a cui il solo rilevatore non può rispondere, ad esempio quali tipi di veicoli compaiono in un'immagine:
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}")Grafi della conoscenza e modelli linguistici di grandi dimensioni#
Gli LLM memorizzano la conoscenza in modo implicito nei propri pesi, rendendo i fatti difficili da verificare o aggiornare ed esponendoli alle allucinazioni. I grafi della conoscenza memorizzano i fatti in modo esplicito, indicando fonti citabili e modifiche che hanno effetto immediato. GraphRAG combina i due approcci: estende la generazione aumentata dal recupero (RAG) recuperando entità collegate e percorsi di relazione, o riepiloghi di comunità del grafo, invece di blocchi di testo isolati. Questo aiuta a rispondere a domande che richiedono più passaggi, per esempio quali fornitori di un componente in ritardo servono anche un altro stabilimento. Gli LLM traducono inoltre le domande in linguaggio naturale in query SPARQL o Cypher da eseguire sui grafi esistenti.
Applicazioni nel mondo reale#
- Ricerca e assistenti: riquadri informativi, risposte dirette e assistenti vocali consultano grandi grafi curati per trovare fatti su persone, luoghi e organizzazioni.
- Scoperta di farmaci: i grafi biomedici collegano geni, proteine, composti, malattie ed effetti collaterali; la previsione dei collegamenti propone potenziali bersagli farmacologici o nuovi usi per farmaci approvati.
- Rilevamento delle frodi: gli account che condividono dispositivi, indirizzi o carte di pagamento formano reti interconnesse che emergono esplorando il grafo, anche quando ogni account, considerato singolarmente, sembra normale.
- Comprensione delle scene: i grafi di scena descrivono un'immagine mediante gli oggetti e le loro relazioni, come (persona, cavalca, cavallo). Il dataset Visual Genome annota in questo modo oltre 100,000 immagini, per addestrare modelli capaci di rispondere a domande sulle scene.
Grafi della conoscenza e archivi di dati correlati#
- Database relazionali: memorizzano record in tabelle collegate da chiavi esterne, una soluzione adatta alle transazioni con uno schema fisso. Le domande che richiedono più passaggi, come «amici degli amici che hanno acquistato questo prodotto», richiedono un join per ogni passaggio, mentre un grafo attraversa direttamente gli archi memorizzati.
- Database vettoriali: recuperano gli elementi in base alla similarità degli embedding, individuando contenuti correlati senza collegamenti espliciti. Un grafo della conoscenza registra con precisione la relazione tra due entità; i sistemi ibridi usano entrambi.
- Ontologie: un'ontologia definisce lo schema di tipi e regole, mentre un grafo della conoscenza è quello schema popolato con fatti sulle singole istanze, come i milioni di persone, luoghi e opere presenti in Wikidata.










