Confronto

Knowledge graph vs RAG: differenze, GraphRAG e quando combinarli

Il team di Kopik8 min di lettura

Un knowledge graph e un sistema RAG rispondono a bisogni diversi. Il RAG classico recupera i passaggi di testo più pertinenti a una domanda e li passa a un modello linguistico, mentre un knowledge graph modella entità e relazioni in una struttura navigabile fatta di nodi e archi. GraphRAG combina le due cose: usa un grafo costruito dai documenti per orientare il recupero quando le domande richiedono di collegare informazioni sparse in più punti del corpus. La scelta giusta dipende dal tipo di domande che riceve davvero, non da quanto è di moda l'approccio.

Cos'è un knowledge graph (e perché non è un database vettoriale)

Un knowledge graph rappresenta la conoscenza come triple soggetto-predicato-oggetto: «Azienda X» «ha sede in» «Milano», «Contratto Y» «è firmato da» «Fornitore Z». Ogni entità diventa un nodo, ogni relazione un arco etichettato. Il grafo si interroga con linguaggi dedicati come Cypher o SPARQL, oppure navigando le connessioni programmaticamente: partendo da un nodo si seguono gli archi per trovare tutto ciò che è collegato, anche a più salti di distanza.

Questo è esattamente ciò che un database vettoriale o un indice full-text non fanno bene: un motore di ricerca semantica trova i passaggi più simili a una domanda, ma non ragiona esplicitamente su «chi è collegato a chi» attraverso più passaggi. Se la domanda è «quali fornitori condividono lo stesso stabilimento del fornitore principale di un certo prodotto», un grafo risponde percorrendo gli archi; un retrieval su passaggi deve sperare che l'informazione completa si trovi tutta in un unico chunk, cosa rara.

Come funziona il RAG "classico": recupero di passaggi

Nel RAG tradizionale i documenti vengono divisi in porzioni (chunk), trasformati in embedding e indicizzati. Alla domanda dell'utente corrisponde una ricerca che combina corrispondenza lessicale e similarità semantica, quella che su Kopik si chiama ricerca ibrida: full-text più espansione semantica delle parole chiave, in modo da recuperare i passaggi più pertinenti anche quando la domanda non usa esattamente le stesse parole del documento. I passaggi trovati vengono passati al modello linguistico insieme alla domanda, e la risposta cita le fonti da cui proviene.

Questo approccio funziona benissimo quando la risposta sta, interamente o quasi, in uno o due passaggi vicini tra loro: una clausola contrattuale, una procedura, un articolo di legge, una FAQ. Il punto debole emerge quando la risposta richiede di mettere insieme fatti distribuiti in documenti diversi, collegati da relazioni che il testo non esprime in modo esplicito e ravvicinato. Qui il retrieval per similarità rischia di trovare passaggi rilevanti singolarmente, ma di non ricostruire la catena di relazioni che li unisce.

GraphRAG: quando il recupero ha bisogno di una mappa

GraphRAG nasce per colmare questo divario. L'idea, resa popolare anche da progetti di ricerca come quello di Microsoft, è in due fasi: prima si costruisce un grafo di conoscenza estraendo automaticamente entità e relazioni dai chunk dei documenti (con un modello linguistico o con pipeline NLP dedicate), poi, al momento della domanda, si naviga il grafo per trovare entità correlate e passaggi associati prima di generare la risposta.

I due passaggi: costruzione e interrogazione

La costruzione è il lavoro pesante: per ogni documento si identificano le entità (persone, organizzazioni, prodotti, date, importi), si estraggono le relazioni tra loro e si deduplicano le entità che compaiono con nomi leggermente diversi (entity resolution: «ACME Srl», «ACME S.r.l.», «Acme» devono diventare lo stesso nodo). L'interrogazione, invece, parte dalla domanda, identifica le entità coinvolte, naviga il grafo per raccogliere il contesto rilevante e lo combina con i passaggi di testo originali prima di passare tutto al modello.

Ricerca locale e globale

Le implementazioni più mature distinguono due modalità. La ricerca locale parte da un'entità precisa e ne esplora i vicini diretti, utile per domande puntuali tipo «chi riporta a questo manager». La ricerca globale lavora invece su riassunti di «comunità» di nodi fortemente collegati tra loro, utile per domande di sintesi tipo «quali sono i temi ricorrenti nei verbali del comitato rischi dell'ultimo anno». Questa seconda modalità è difficile da ottenere con un RAG puramente basato su similarità, perché nessun singolo chunk contiene la sintesi: serve aggregare informazioni sparse in decine di documenti.

Quando conviene ciascun approccio

RAG classico vs knowledge graph puro vs GraphRAG

DimensioneRAG classico (passaggi)Knowledge graph puroGraphRAG
Tipo di domande idealiPuntuali, risposta in 1-2 passaggiStrutturali, navigazione tra entità noteMulti-hop, sintesi su più documenti
Costo di costruzioneBasso: chunking e indicizzazioneAlto: schema, estrazione, modellazione relazioniMolto alto: estrazione entità + indicizzazione passaggi
Aggiornamento con nuovi documentiIncrementale e rapidoRichiede ri-estrazione e deduplica entitàRichiede ri-estrazione del grafo e reindicizzazione
Competenze richiesteNessuna oltre all'uso dello strumentoModellazione dati, query graph (Cypher/SPARQL)Entrambe, più tuning del pipeline di estrazione
Citazione delle fontiNaturale, passaggio per passaggioDipende dal sistema, spesso assente di defaultPossibile ma richiede collegamento nodo-passaggio
Caso d'uso tipicoPolicy interne, contratti, FAQ di prodottoOrganigrammi, catene di fornitura, compliance normativaDue diligence, ricerca su corpus regolatori ampi

Combinare knowledge graph e RAG in pratica

Nella maggior parte delle organizzazioni italiane, PMI comprese, la domanda non è «grafo o RAG» ma «quanta parte del grafo serve davvero». Una ricerca ibrida che combina BM25 e vettori copre già una fetta sorprendentemente ampia delle domande multi-entità, perché l'espansione semantica recupera passaggi collegati concettualmente anche senza un grafo esplicito. Costruire e mantenere un knowledge graph completo ha un costo ricorrente non trascurabile: ogni nuovo documento va ri-processato per estrarne entità e relazioni, e gli errori di deduplica delle entità (due nomi diversi per la stessa persona o azienda) degradano silenziosamente la qualità delle risposte.

Un pattern pragmatico è quello ibrido a due livelli: si mantiene un RAG con citazioni per tutte le domande ordinarie, e si aggiunge un livello di metadati strutturati (non necessariamente un grafo completo) per le relazioni che contano davvero per il proprio dominio, per esempio collegare ogni clausola contrattuale al fornitore e alla data di scadenza, o ogni policy HR al CCNL di riferimento come descritto nella guida su assistente IA per le policy HR. Questo livello intermedio dà gran parte del valore di un grafo senza il costo di una pipeline di estrazione entità su tutto il corpus.

Prima di investire in un grafo, misuri il problema reale

Raccolga per due settimane le domande reali che ricevono gli utenti e classifichi quante richiedono davvero di collegare fatti da documenti diversi. Se sono sotto il 10-15%, un RAG ibrido ben fatto, con chunking curato e citazioni verificabili, probabilmente basta e costa una frazione di un progetto GraphRAG.

Chi vuole partire senza impegnare un team di data engineering può caricare i documenti su una base di conoscenza su Kopik: l'indicizzazione ibrida gestisce automaticamente full-text ed espansione semantica, e ogni risposta arriva con i passaggi citati, utile anche solo per capire, osservando dove il sistema fatica, se il proprio caso d'uso ha davvero bisogno di un grafo o se il problema è altrove, per esempio un chunking troppo grossolano o documenti disorganizzati.

Checklist per decidere l'approccio

  • Le domande tipiche richiedono di collegare informazioni presenti in più documenti distinti, o stanno quasi sempre in un singolo passaggio?
  • Ha già dati strutturati disponibili altrove (CRM, ERP, organigramma) che potrebbero essere collegati ai documenti invece di essere estratti da zero?
  • Il team ha competenze per mantenere un database a grafo e una pipeline di estrazione entità nel tempo, o rischia di diventare un progetto abbandonato dopo il primo rilascio?
  • Serve tracciabilità delle fonti per ogni affermazione (per esempio per motivi di conformità)? Un grafo puro spesso perde questo collegamento se non progettato apposta.
  • Il volume e la frequenza di aggiornamento dei documenti permettono una ri-estrazione periodica del grafo senza costi insostenibili?
  • Ha già provato un RAG ibrido e misurato dove fallisce, con metriche concrete come descritto in come valutare un sistema RAG?

Se la maggior parte delle risposte punta verso «serve collegare molte entità, abbiamo dati strutturati, abbiamo competenze e il volume lo giustifica», GraphRAG o un grafo dedicato hanno senso. Se le risposte sono più tiepide, conviene partire da un RAG solido e aggiungere struttura solo dove serve, piuttosto che costruire un'infrastruttura a grafo che pochi useranno davvero. Vale anche la pena confrontare l'alternativa dei modelli a contesto lungo, discussa in RAG vs modelli a contesto lungo, per i casi in cui il corpus è piccolo abbastanza da stare quasi interamente nel prompt.

Provi prima il RAG ibrido, poi valuti se serve un grafo

Crei una base di conoscenza gratuita, carichi i Suoi documenti e veda con domande reali dove il retrieval per passaggi funziona e dove invece servirebbe collegare più fonti tra loro.

Domande frequenti

Domande frequenti

GraphRAG sostituisce completamente il RAG classico?

No. GraphRAG aggiunge un livello di navigazione tra entità sopra (o accanto a) un retrieval su passaggi di testo. La maggior parte delle implementazioni usa comunque i chunk originali per generare la risposta finale, il grafo serve a trovare il contesto giusto da recuperare quando le relazioni tra entità contano più della semplice similarità testuale.

Una PMI italiana ha davvero bisogno di un knowledge graph?

Raramente, almeno all'inizio. La maggior parte delle domande su contratti, policy interne o documentazione di prodotto trova risposta in un singolo passaggio ben indicizzato. Un grafo diventa utile quando si gestiscono reti complesse di relazioni, per esempio catene di fornitura con molti livelli o corpus normativi molto ampi con rimandi incrociati.

Quanto costa mantenere un knowledge graph aggiornato?

Il costo ricorrente riguarda soprattutto l'estrazione di entità e relazioni da ogni nuovo documento e la deduplica delle entità nel tempo. A differenza di un RAG, dove aggiungere un documento significa solo indicizzarlo, in un grafo serve ri-processare e collegare correttamente le nuove informazioni a quelle esistenti, un lavoro che cresce con la dimensione del corpus.

Quali strumenti si usano per costruire un knowledge graph da documenti?

Database a grafo come Neo4j o database multi-modello con supporto a grafo, combinati con pipeline di estrazione entità basate su modelli linguistici o su librerie NLP dedicate. Progetti di ricerca pubblici, come GraphRAG di Microsoft, descrivono un'architettura di riferimento per la fase di costruzione e le due modalità di interrogazione locale e globale.

Un RAG ibrido con citazioni può bastare senza grafo?

Per la maggior parte dei casi d'uso aziendali sì, soprattutto se il chunking è curato e la ricerca combina corrispondenza lessicale ed espansione semantica. Il limite emerge solo con domande che richiedono di collegare esplicitamente fatti sparsi in molti documenti diversi, scenario meno comune di quanto si pensi nella pratica quotidiana.

Si possono citare le fonti anche con un approccio GraphRAG?

Sì, ma richiede progettazione esplicita: ogni nodo del grafo va collegato al passaggio di testo da cui è stato estratto, in modo che la risposta finale possa riportare sia la relazione trovata nel grafo sia il passaggio originale che la supporta, altrimenti si perde la tracciabilità tipica di un buon sistema RAG.

Riceva la newsletter di Kopik

Nuove basi di conoscenza, guide sul RAG e novità del prodotto. Un'email ogni una o due settimane, disiscrizione con un clic.

Iscrivendosi accetta di ricevere la nostra newsletter. Il Suo indirizzo non viene mai condiviso.