KINDLE HOME

I knowledge graph, spiegati per capire una scelta

Cosa sono i knowledge graph, la scelta co-occorrenza di Faibrick, e i livelli superiori (GLiNER, OpenIE/REBEL, GraphRAG, schema-first) con i nomi che contano.

Nello stesso sistema di memoria AI esaminato prima, Memory Vault di Faibrick, accanto alla ricerca vettoriale c'è una seconda promessa: un knowledge graph "integrato". È una parola che evoca molto, e mantiene poco, se non si guarda cosa c'è davvero sotto. Questo scritto serve a capire che cos'è un knowledge graph, come lo si costruisce a diversi livelli di ambizione, quale livello ha scelto Faibrick, e perché gli altri livelli sono migliori. E, per inciso, perché un brain fatto di file curati a mano possa essere un grafo più ricco di uno estratto automaticamente.

Che cos'è un knowledge graph

Un knowledge graph è una rete: dei nodi, che sono entità del mondo (persone, aziende, progetti, strumenti, concetti), e degli archi, che sono le relazioni tra loro (lavora-per, si-trova-a, ha-fondato, usa). La forza del grafo rispetto alla semplice ricerca semantica è che cattura la struttura: non solo "questi due documenti parlano di cose simili", ma "questa persona ha fondato questa azienda che ha sede in questa città". Permette di rispondere a domande che il retrieval per somiglianza non tocca, come "chi sono tutte le persone collegate a questo progetto" o "attraverso quali passaggi questi due nomi sono connessi".

I tre mattoni: estrazione entità, relazioni, risoluzione

Costruire un grafo dal testo richiede tre operazioni, in ordine crescente di difficoltà. La prima è il riconoscimento delle entità, in gergo NER: individuare nel testo i nomi propri e classificarli (questo è una persona, questo un'organizzazione, questo un prodotto). La seconda è l'estrazione delle relazioni: capire che tipo di legame unisce due entità, e in che direzione. La terza, la più insidiosa e la più trascurata, è la risoluzione delle entità: capire che "Giobi", "Giobi Fasoli" e "lui" sono la stessa persona, e fondere i nodi. Senza quest'ultima, il grafo si riempie di doppioni e diventa un groviglio.

La scelta di Faibrick: NER piccolo più co-occorrenza

Il grafo di Memory Vault si costruisce così. Le entità le estrae con spaCy, usando il modello inglese piccolo, che riconosce persone, organizzazioni e prodotti. Le relazioni, invece, non le estrae affatto nel senso proprio: usa la co-occorrenza. Se due entità compaiono nello stesso frammento di testo, disegna tra loro un arco generico chiamato "related_to". Non c'è un tipo di relazione, non c'è una direzione, e non c'è risoluzione delle entità. Il codice stesso lo ammette con onestà, marcando queste come funzionalità future.

È il grado zero del knowledge graph. La co-occorrenza è la baseline che si insegna per prima proprio perché è la più semplice e la più rumorosa: due nomi nello stesso paragrafo non sono necessariamente collegati in modo significativo, e su dati reali questo produce una nuvola di archi in gran parte privi di senso. È un punto di partenza legittimo per un prodotto giovane, ma chiamarlo "knowledge graph baked in" è più marketing che sostanza.

Il livello sopra: relazioni vere

Il salto di qualità sta nel passare dalla co-occorrenza alla vera estrazione di relazioni tipizzate. Sul fronte del riconoscimento entità, modelli come GLiNER hanno reso possibile un NER a categorie aperte e a colpo singolo, molto più flessibile del modello statico di spaCy, e i grandi modelli linguistici fanno lo stesso lavoro con una comprensione contestuale nettamente superiore. Sul fronte delle relazioni, l'estrazione aperta alla Stanford OpenIE, o modelli specializzati come REBEL che generano direttamente triple soggetto-predicato-oggetto, producono archi con un tipo e una direzione: non "A è collegato a B", ma "A ha-fondato B". Un grafo così è interrogabile con senso, non è una nuvola.

Lo stato dell'arte: GraphRAG

Il riferimento più avanzato oggi si chiama GraphRAG, sviluppato da Microsoft. L'idea è usare un grande modello linguistico non per rispondere, ma per costruire il grafo: legge i documenti, estrae entità e relazioni tipizzate, e le scrive nel grafo. Poi applica un algoritmo di rilevamento delle comunità, tipicamente Leiden, per raggruppare il grafo in cluster tematici, e genera un riassunto per ciascuna comunità. Il risultato è che il sistema può rispondere anche a domande "globali", del tipo "quali sono i temi principali di tutto questo corpus", che la ricerca per somiglianza e il grafo a co-occorrenza non possono nemmeno affrontare, perché richiedono una visione d'insieme e non il recupero di qualche frammento.

La differenza tra co-occorrenza e GraphRAG non è di rifinitura: è la differenza tra disegnare una linea perché due parole si sono sfiorate e ricostruire, con un ragionamento, chi ha fatto cosa a chi.

Lo schema-first: il grafo curato a mano

C'è infine un approccio opposto all'estrazione automatica, e vale la pena nominarlo perché è quello che, senza chiamarlo così, produce spesso i grafi migliori: lo schema-first, il grafo curato a mano. È il modello di Wikidata e delle basi di conoscenza aziendali: si definisce uno schema di tipi di entità e di relazioni ammesse, e si popolano i nodi e gli archi in modo esplicito e verificato. La precisione è altissima, perché ogni legame è stato messo lì da qualcuno che sapeva cosa stava facendo. Il prezzo è la scala: non cresce da solo, richiede lavoro umano.

Vale la pena notare che un brain fatto di file markdown con collegamenti espliciti e tipizzati tra le entità è, di fatto, un knowledge graph schema-first. Un collegamento scritto a mano che dice che una certa persona lavora in una certa azienda, o che un progetto usa una certa tecnologia, è una relazione tipizzata e verificata: esattamente ciò che la co-occorrenza automatica non sa produrre. È un grafo più povero di nodi ma molto più ricco di verità. Il limite speculare è che non si estende da solo: la via di crescita naturale è affiancare alla curatela manuale un'estrazione automatica di triple che proponga nuovi archi da validare.

Un cenno ai grafi come vettori

Per completezza, esiste un filone che tratta il grafo stesso come materia da vettorializzare: tecniche come node2vec o TransE rappresentano i nodi come vettori per predire i collegamenti mancanti o misurare la vicinanza strutturale. Servono a uno scopo diverso, il completamento e l'analisi del grafo, più che la memoria conversazionale, ma è utile sapere che esistono e che confluiscono nello stesso ecosistema, insieme ai database a grafo come Neo4j e ai loro linguaggi di interrogazione.

In sintesi, con i nomi che contano

Il grafo di Faibrick è costruito con spaCy piccolo per le entità e la co-occorrenza per le relazioni: la baseline, senza tipi, senza direzione, senza risoluzione delle entità. È il livello più basso, dichiarato onestamente come lavoro in corso, ma venduto con una parola che promette molto di più.

Salendo, i nomi da conoscere sono GLiNER e i grandi modelli linguistici per un riconoscimento entità serio, OpenIE e REBEL per relazioni tipizzate, e soprattutto GraphRAG di Microsoft con il rilevamento di comunità alla Leiden per lo stato dell'arte del grafo costruito da un modello. Sull'altro versante, lo schema-first di Wikidata e dei grafi curati a mano resta imbattibile in precisione, ed è esattamente la forma che assume un brain di file con collegamenti tipizzati. Chi conosce questa scala non si fa impressionare dalle parole "knowledge graph": chiede quali tipi di relazione, con che direzione, e se qualcuno ha risolto i doppioni.

- FINE -
1