GraphRAG di Microsoft: Una Nuova Frontiera per il Recupero e la Generazione di Informazioni
Già da mesi una delle nostre sfide principali è quella di migliorare la capacità degli LLM di comprendere e generare risposte accurate e contestualmente rilevanti.
Ovviamente non ci siamo fatti scapare il fatto che Microsoft ha recentemente rilasciato un sistema innovativo chiamato GraphRAG (Graph Retrieval-Augmented Generation), che combina l’utilizzo dei grafi con la RAG per superare alcune delle limitazioni dei sistemi RAG tradizionali.
Motivazione Dietro GraphRAG di Microsoft
Prima di addentrarci nei dettagli di GraphRAG, è utile capire il contesto e le motivazioni dietro questa tecnologia. Il metodo tradizionale di RAG consiste nel recuperare documenti rilevanti da un ampio corpus per generare risposte più accurate e contestuali.
Questo approccio segue tre fasi principali:
- Indicizzazione dei Documenti:
I documenti vengono suddivisi in sotto-documenti tramite una strategia di suddivisione (chunking) e vengono calcolati gli embedding per ciascun frammento, che vengono poi memorizzati in un database vettoriale. - Fase di Query:
L’utente pone una domanda e vengono calcolati gli embedding per la query. Successivamente, si esegue una ricerca di similarità per recuperare i frammenti più rilevanti dal database vettoriale. - Generazione della Risposta:
La query, insieme al contesto recuperato, viene fornita a un modello di linguaggio per generare una risposta finale.

Nonostante la sua efficacia, il RAG tradizionale presenta tre principali limitazioni:
- Comprensione Contestuale Limitata:
La capacità del sistema di cogliere tutte le sfumature e i dettagli presenti nei dati può essere limitata, poiché si basa esclusivamente sui documenti recuperati, senza un contesto più ampio. - Scalabilità:
Con l’aumento del corpus di dati, la Retrieval-Augmented Generation (RAG) può diventare meno efficiente, richiedendo maggiori risorse computazionali e tempi di elaborazione più lunghi per mantenere le prestazioni. - Complessità:
Integrare fonti di conoscenza esterne nel sistema può risultare complesso e costoso, richiedendo un notevole sforzo in termini di configurazione, manutenzione e aggiornamento per garantire la coerenza e l’accuratezza delle informazioni fornite.
Introduzione a
GraphRAG è progettato per affrontare queste limitazioni combinando l’approccio RAG tramite l’utilizzo dei grafi, che rappresentano entità e relazioni tra di esse. Questo sistema introduce due fasi principali, simili al RAG tradizionale, ma con alcune importanti differenze:
- Fase di Indicizzazione:
- Suddivisione e Estrazione di Entità:
I documenti vengono suddivisi in sotto-documenti e, all’interno di ciascun frammento, vengono identificate diverse entità (persone, luoghi, aziende, ecc.) e le relazioni tra di esse. - Creazione del Grafo di Conoscenza:
Utilizzando le entità e le relazioni estratte, viene creato un grafo di conoscenza.
Questo grafo rappresenta le connessioni tra le entità e permette di avere una visione globale del contenuto dei documenti. - Formazione di Comunità:
Utilizzando algoritmi di rilevamento delle comunità, il grafo viene suddiviso in comunità di entità strettamente correlate. Queste comunità vengono ulteriormente riassunte a diversi livelli di dettaglio.
- Suddivisione e Estrazione di Entità:
- Fase di Query:
- Selezione del Livello di Comunità:
In base alla query dell’utente, si seleziona il livello di dettaglio desiderato e si esegue un processo di recupero sui sommari delle comunità. - Generazione della Risposta:
Le risposte parziali delle comunità vengono combinate per formare una risposta finale coerente e completa.
- Selezione del Livello di Comunità:

Esempio di Implementazione
Per illustrare come GraphRAG può essere implementato, consideriamo il seguente flusso di lavoro:
2.1 Documenti di Origine → Frammenti di Testo
Un passo cruciale nel processo GraphRAG è decidere come suddividere i testi dei documenti sorgente in frammenti di testo gestibili. La scelta della suddivisione influisce sull’efficacia e l’efficienza del modello di linguaggio (LLM) nel successivo processo di estrazione. Frammenti più lunghi riducono il numero di chiamate al modello (riducendo anche i costi), ma possono compromettere la precisione a causa dei limiti delle context window degli LLM.
2.2 Frammenti di Testo → Istanza di Elementi
In questo passaggio, l’obiettivo è identificare ed estrarre le istanze di nodi e archi del grafo da ciascun frammento di testo. Questo avviene tramite multipart LLM prompt che prima identificano tutte le entità nel testo (nome, tipo, descrizione) e poi le relazioni tra le entità correlate (entità sorgente e target, descrizione della relazione).
Le istanze estratte vengono organizzate in una lista di tuple delimitate. L’approccio può essere adattato a domini specifici (ad esempio, scienza, medicina, legge) usando esempi few-shot appropriati per il prompt dell’LLM. Inoltre, un prompt secondario può estrarre ulteriori covariate come affermazioni legate alle entità rilevate (soggetto, oggetto, tipo, descrizione, intervallo di testo, date di inizio e fine).
2.3 Istanza di Elementi → Sommari degli Elementi
La descrizione delle entità, relazioni e affermazioni estratte dai testi è una forma di riassunto astrattivo. Per creare blocchi di testo descrittivi per ciascun elemento del grafo (nodo entità, arco di relazione, covariate di affermazioni), si utilizza una fase aggiuntiva di riassunto con l’LLM. Una sfida è garantire la coerenza nell’estrazione delle referenze alle stesse entità, per evitare duplicati.
2.4 Sommari degli Elementi → Comunità di Grafo
L’indice creato viene modellato come un grafo omogeneo non orientato e pesato, dove i nodi entità sono connessi da archi di relazione, con pesi degli archi che rappresentano i conteggi normalizzati delle istanze di relazione rilevate. Algoritmi di rilevazione delle comunità, come Leiden, sono utilizzati per partizionare il grafo in comunità di nodi più fortemente connessi tra loro rispetto agli altri nodi del grafo. Questo approccio permette di rilevare strutture gerarchiche delle comunità in modo efficiente e di supportare la sintesi globale del grafo.
2.5 Comunità di Grafo → Sommari delle Comunità
Si generano riassunti reportistici delle comunità identificate, utili sia per comprendere la struttura globale del dataset sia per rispondere a domande generali. I riassunti delle comunità sono creati iterativamente, aggiungendo descrizioni dei nodi e degli archi in ordine di importanza fino a raggiungere il limite dei token del contesto dell’LLM.

Query-Focused Summarization
2.6 Sommari delle Comunità → Risposte delle Comunità → Risposta Globale
In risposta a una query dell’utente, i riassunti delle comunità vengono utilizzati per generare risposte parziali, che poi vengono combinate per fornire una risposta globale esaustiva. Il processo prevede la preparazione dei riassunti delle comunità, la generazione di risposte intermedie per ciascun frammento e la loro combinazione basata su un punteggio di utilità. Le risposte intermedie con punteggio più alto sono combinate fino a raggiungere il limite dei token, generando così la risposta finale fornita all’utente.
Vantaggi e Limitazioni di GraphRAG di Microsoft
GraphRAG offre numerosi vantaggi rispetto ai metodi tradizionali. Fornisce una comprensione contestuale più approfondita grazie alla rappresentazione grafica delle relazioni e migliora l’efficienza del recupero su grandi corpora. Tuttavia, questo approccio comporta anche un aumento dei costi computazionali, specialmente durante la fase di creazione e gestione del grafo di conoscenza. Con il nuovo GPT-4o-mini anche i costi inferiori a 30 volte a GPT-4o potrebbero non essere più un problema!




