GraphRAG - L'Evoluzione del Retrieval Augmented Generation
Una guida completa su GraphRAG, la nuova frontiera del Retrieval Augmented Generation che combina Knowledge Graphs e Vector Search per applicazioni AI più accurate e comprensibili.
Introduzione
Per comprendere GraphRAG, dobbiamo prima capire l’evoluzione della ricerca web.
Lo speaker, un professionista che ha dedicato la sua carriera a sviluppare applicazioni migliori sfruttando non solo singoli data points, ma dati connessi tramite relazioni, ci accompagna in un viaggio attraverso le ere della ricerca web fino ad arrivare all’applicazione dei Knowledge Graphs nel mondo degli LLM e della GenAI.
La storia della ricerca web è la storia di come rappresentiamo e recuperiamo le informazioni. Ogni era ha portato un salto qualitativo che ha ridefinito cosa è possibile fare.
L’Evoluzione della Ricerca Web
Era AltaVista: Keyword Search
Chi riconosce questa pagina web? Negli anni ‘90, c’erano decine di motori di ricerca - 30, 40, 50 aziende diverse - e tutti usavano fondamentalmente la stessa tecnologia:
- Keyword-based text search
- Inverted index (indice invertito)
- BM25 (algoritmo di ranking)
Questa tecnologia funzionava molto bene… finché non smise di funzionare.
Il Problema: L’Effetto AltaVista
Query: "WiFi router troubleshooting"
Risultati: 1,247 pagine trovate
├─ Pagina 1: 10 risultati (alcuni rilevanti)
├─ Pagina 2: 10 risultati (meno rilevanti)
├─ Pagina 3: 10 risultati (ancora meno rilevanti)
├─ ...
└─ Pagina 125: Devi davvero cercarlo?
L’Effetto AltaVista: ricercare qualcosa e ottenere migliaia di risultati, dovendo scorrere pagina dopo pagina per trovare quello rilevante.
Questo non era un problema all’inizio di Internet. Quando lo speaker andò online per la prima volta, la maggior parte delle ricerche restituiva zero risultati - semplicemente non c’era abbastanza contenuto sul web. Ma con la crescita esponenziale dei contenuti, il problema si invertì: troppi risultati, troppo rumore.
Il vero problema dell’era AltaVista non era la mancanza di informazioni, ma l’eccesso di informazioni non rilevanti. Trovare l’ago nel pagliaio divenne impossibile.
Era PageRank: Google Risolve il Problema
Nel 2000, Google pubblicò questo comunicato stampa annunciando di aver indicizzato 1 miliardo di URL. Ma la vera innovazione non era la scala - era la tecnologia dietro le quinte.
┌──────────────────────────────────────────┐
│ "Google delivers most important │
│ search results first" │
│ │
│ Technology: PageRank │
│ - Graph algorithm │
│ - Eigenvector centrality │
│ - Applied to scale of the web │
└──────────────────────────────────────────┘
PageRank è in realtà un algoritmo di grafo chiamato eigenvector centrality. L’innovazione di Google fu applicare questo algoritmo alla scala dell’intera Internet.
Questa tecnologia portò ai famosi “Top 10 Blue Links” - i primi dieci risultati sulla prima pagina che effettivamente rispondevano alla tua domanda.
PageRank non si limitava a contare le parole chiave. Analizzava la struttura dei link tra le pagine web, trattando Internet come un enorme grafo dove le pagine sono nodi e i link sono relazioni.
L’era PageRank durò circa un decennio - 10-12 anni di dominio assoluto di Google - fino al 2012.
Era Knowledge Graph: Things Not Strings
Nel 2012, Google pubblicò un blog post fondamentale introducendo il Knowledge Graph. Il titolo diceva tutto: “Things not Strings” (Cose, non Stringhe).
Prima (Strings): Dopo (Things):
"Moscone Center" → ┌─────────────────┐
testo da cercare │ Moscone Center │
│ - Venue │
│ - Address: ... │
│ - Owner: ... │
│ - Opened: ... │
└─────────────────┘
Google annunciò:
“Abbiamo fatto il più grande upgrade alla nostra tecnologia di ricerca da quando abbiamo inventato PageRank. Ora non memorizziamo solo il testo e i link tra documenti, ma anche i concetti incorporati in quei documenti.”
Quando oggi cerchi “Moscone Center” su Google, vedi un pannello sulla destra con:
- Testo non strutturato (da Wikipedia)
- Dati strutturati: indirizzo, proprietario, anno di apertura
- Immagini, mappe, informazioni correlate
Questo è il Knowledge Graph al lavoro.
Struttura del Knowledge Graph
[Moscone Center]
|
┌───────┼───────┐
│ │ │
IS_TYPE HAS LOCATED_IN
│ │ │
[Venue] [Owner] [San Francisco]
│
[City & County]
Un Knowledge Graph è composto da:
- Nodi (cerchi): rappresentano concetti, entità
- Relazioni (frecce): connessioni tra nodi
- Properties: key-value pairs su nodi E relazioni
- Puoi avere 2, 3, 1000, 10,000 properties
- Importante: properties anche sulle relazioni, non solo sui nodi
Questa struttura dati ha dominato la ricerca web per i successivi 12 anni, fino a pochi mesi fa.
Era GraphRAG: L’Innovazione Attuale
A pochi mesi fa, al Google I/O, Google ha fatto il prossimo salto. Hanno mostrato esempi come questo classico itinerario di viaggio:
User: "Help me plan a 3-day trip to Paris"
┌─────────────────────────────────────────┐
│ Day 1: │
│ - Morning: Eiffel Tower │
│ - Afternoon: Louvre Museum │
│ - Evening: Seine River cruise │
│ │
│ Day 2: ... │
│ │
│ [Backed by LLM + Knowledge Graph] │
└─────────────────────────────────────────┘
Tutti sanno che questo è alimentato da un LLM, ma ciò che molti non sanno è che è alimentato da un LLM in combinazione con la struttura dati del Knowledge Graph.
Questa combinazione si chiama GraphRAG.
GraphRAG rappresenta la terza era di innovazione nella ricerca web: dopo PageRank (graph algorithms) e Knowledge Graph (structured data), ora abbiamo LLM + Knowledge Graphs working together.
Cos’è GraphRAG
La definizione è molto semplice:
GraphRAG è RAG dove, nel percorso di retrieval, usi un Knowledge Graph.
RAG classico:
Query → Vector Search → Retrieve Docs → LLM → Answer
GraphRAG:
Query → Vector Search → Graph Traversal → Retrieve Context → LLM → Answer
↑
Questo è il pezzo nuovo
Non dice che usi solo un Knowledge Graph - puoi combinarlo con altre tecnologie come vector search. Ma il Knowledge Graph diventa una componente fondamentale del retrieval.
Esempio Pratico: Customer Service Bot
Vediamo un esempio concreto per capire come funziona.
Scenario
Immagina di lavorare per un’azienda che produce router WiFi. Hai un mucchio di articoli di supporto tecnico memorizzati come file di testo, e devi costruire un bot che:
- Assista gli utenti finali direttamente, oppure
- Aiuti gli agenti del customer service a trovare risposte
Architettura Tradizionale RAG
Sai come fare questo perché vivi nel mondo LLM e GenAI:
1. Articoli di supporto → Testo in database
2. User query: "Le luci WiFi lampeggiano gialle e la connessione cade"
3. Vectorizzazione della query
4. Vector search → Trova articoli rilevanti
5. Pass a LLM → Genera risposta
Questo è il baseline RAG, e funziona.
GraphRAG: L’Upgrade
Ora aggiungiamo il grafo:
[Article 1]───ABOUT───[WiFi Router X]
│ │
HAS_TEXT PART_OF_FAMILY
│ │
"Fix yellow..." [WiFi Series A]
│
WRITTEN_BY
│
[Engineer Alice]
(high_rating: 4.8)
Struttura:
- Nodi articoli: contengono il testo come property
- Relazioni ABOUT: collegano articoli a prodotti specifici
- Gerarchia prodotti: router in famiglie/serie
- Autori: ingegneri che hanno scritto gli articoli
- Ratings: proprietà sulle relazioni o nodi
Flusso GraphRAG
Step 1: Vector Search (Primary Key Lookup)
User query → Embedding → Vector search → [Article 1, Article 5]
Step 2: Graph Traversal (Context Expansion)
[Article 1] ─ABOUT→ [Router X] ─FAMILY→ [Router Y, Router Z]
↓
[Other articles about similar routers]
↓
[Article 1] ─WRITTEN_BY→ [Engineer Alice]
↓
[Other high-rated articles by Alice]
Step 3 (Optional): Ranking
Graph structure → PageRank / Custom ranking → Top K results
Step 4: LLM Generation
Expanded context → LLM → High-quality answer
Il pattern core è semplice ma potente:
- Vector search → Trova il punto di ingresso (quasi come una “primary key”)
- Graph walk → Espandi e trova contenuto rilevante basato sulla struttura
- (Opzionale) Ranking → Se hai 1000-10000 nodi, usa il grafo per rankare (es. PageRank)
- LLM → Genera la risposta con contesto arricchito
Il valore aggiunto di GraphRAG è il contesto addizionale che recuperi attraverso le relazioni del grafo. Non solo l’articolo che matcha la query, ma tutto ciò che è semanticamente collegato.
Benefici di GraphRAG
Perché dovresti usare GraphRAG? Quando ha senso?
1. Accuratezza Superiore
Il beneficio più importante è direttamente correlato alla qualità della risposta.
Negli ultimi 6 mesi sono usciti moltissimi paper di ricerca su questo. Eccone tre rappresentativi:
Studio Data.world (Primo noto)
Data.world è un’azienda di catalogazione dati basata su Knowledge Graph. Nel loro studio su 43 diverse domande:
Baseline RAG (vector only): 1x (baseline)
GraphRAG (vector + graph): 3x MIGLIORAMENTO
↑
Qualità della risposta
3 volte superiore in accuratezza rispetto al solo vector search.
Paper LinkedIn
LinkedIn ha pubblicato un fantastico paper che mostra:
- 75-77% di aumento nell’accuratezza
- Ottima architettura visuale (consigliato leggere il paper)
- Combina vari componenti nel flusso
Microsoft Blog Post
Microsoft (Febbraio 2024) ha scritto un blog post seguito da due paper accademici dove dimostrano:
- Qualità superiore delle risposte
- Nuova classe di domande: GraphRAG permette di rispondere a domande che il baseline RAG non può nemmeno affrontare
GraphRAG non è solo “un po’ meglio” - è un salto qualitativo che sblocca capacità prima impossibili.
2. Sviluppo Più Facile (Con Asterisco*)
Gli utenti riportano che è più facile costruire applicazioni RAG con GraphRAG rispetto al baseline RAG.
Ma c’è un asterisco importante: una volta che hai il Knowledge Graph.
Curva di apprendimento GraphRAG:
Difficoltà
│
│ ╱────────── Facile dopo il setup
│ ╱
│ ╱
│ ╱
│ ╱ Steep learning curve
│╱ (creare il grafo)
└────────────────────────────────> Tempo
Testimonianza: Fintech Startup
Una fintech ad alta crescita, molto all’avanguardia nell’AI, ha portato un’applicazione esistente da un vector database a Neo4j (GraphRAG). Le loro osservazioni:
“La maggior parte delle operazioni produce risultati migliori. Calcolare gli embeddings a livello database. Ottenere azioni correlate è semplice come seguire le relazioni tra nodi.”
E il pezzo più prezioso:
“Il cache può essere visualizzato. Questo è uno strumento di debugging estremamente prezioso. Ho già fixato un paio di bug solo grazie a questo.”
Perché È Più Facile?
La ragione è la rappresentazione dei dati.
Esempio: “Apples and oranges are both fruit”
Rappresentiamo questa frase in due modi:
Graph Space (Esplicito):
[Apple]
│
IS_A
│
↓
[Fruit] ←─ IS_A ─ [Orange]
Chiaro, leggibile, deterministico.
Vector Space (Opaco):
[0.234, -0.891, 0.445, ..., 0.123] ← Apple embedding
[0.198, -0.834, 0.512, ..., 0.089] ← Orange embedding
Due cerchi nello spazio vettoriale, distanza calcolabile, ma completamente opaco per un umano.
Il Punto Fondamentale
Entrambe le rappresentazioni sono valide e complementari, non competitive. Ma quando ti siedi a costruire un’applicazione:
Vector Space: Graph Space:
- Opaco - Esplicito
- Non interpretabile - Deterministico
- Difficile debugging - Visuale
- "Toccabile"
- Debuggable
Questa è la citazione chiave: “Ho già fixato un paio di bug solo grazie a questo”.
La rappresentazione esplicita del grafo si traduce in:
- Sviluppo più veloce
- Debug più facile
- Manutenzione migliore
3. Explainability e Governance
La struttura dati esplicita ha effetti a catena importanti per IT e business:
Explainability:
"Perché l'AI ha dato questa risposta?"
Graph: Vector:
"Ha trovato Article 1 vs "Ha trovato documenti
↓ collegato a Product X con similarity score
↓ nella famiglia Y 0.847, 0.823, 0.801..."
↓ scritto da Engineer Z
con rating 4.8"
Auditability:
- Tracciare il percorso di decisione
- Vedere esattamente quali dati hanno influenzato la risposta
- Verificare la compliance
Governance:
- Controllo esplicito su quali dati sono accessibili
- Policy basate su relazioni (es. “nessun dato sensibile per utenti esterni”)
- Trasparenza nei processi decisionali
Per aziende enterprise che devono giustificare decisioni AI a regolatori o stakeholder, l’explainability di GraphRAG è un game-changer.
Rappresentazione: Vettori vs Grafi
Approfondiamo la differenza fondamentale tra le due rappresentazioni.
Due Modi Complementari
Vettori e grafi non sono tecnologie competitive - sono complementari. Ognuna ha i suoi punti di forza:
Vector Search:
- Eccellente per similarity semantica
- Veloce per “needle in haystack” queries
- Cattura sfumature linguistiche
Graph Search:
- Eccellente per relazioni esplicite
- Potente per queries multi-hop
- Interpretabile e debuggable
L’Affermazione Forte
Lo speaker fa un’affermazione chiara:
“Quando costruisci la tua applicazione, una rappresentazione è superiore all’altra.”
Quale? Il grafo.
Non perché il vector search sia peggiore tecnicamente, ma perché quando sviluppi, la rappresentazione grafo è:
- Più visibile
- Più chiara
- Più toccabile
- Più debuggable
Impact sul Development Time
Timeline di sviluppo:
Vector-only RAG:
├─ Build ─────────┤
├─ Debug ─────────────────────┤ ← Tempo perso a capire perché non funziona
├─ Fix ─────────┤
├─ Debug again ──────────────┤
└─ Ship ─────────────────────────────────────────────┤
GraphRAG:
├─ Build graph ────────┤ ← Learning curve iniziale
├─ Build app ─────┤
├─ Debug ──────┤ ← Veloce: visualizzi il grafo
├─ Fix ───┤
└─ Ship ─────────────────────┤
La curva di apprendimento iniziale è più ripida (devi imparare a creare il grafo), ma poi lo sviluppo accelera.
Come Iniziare con GraphRAG
Come si crea il Knowledge Graph?
Tre Tipi di Dati
Nel mondo reale ci sono tre categorie di dati:
1. Dati Strutturati
Snowflake, PostgreSQL, MySQL, Oracle
├─ Tables
├─ Rows
├─ Columns
└─ Relazioni (foreign keys)
Facilità per Knowledge Graph: ⭐⭐⭐⭐⭐
Nel mondo dei grafi è molto facile andare da database relazionali a property graph model. Gli strumenti sono maturi.
2. Dati Non Strutturati
├─ PDF files
├─ Raw text
├─ Web pages (solo testo)
└─ Documenti Word
Facilità per Knowledge Graph: ⭐
Molto difficile in teoria. Gli strumenti sono stati immaturi per molto tempo. Sta migliorando rapidamente con gli LLM.
3. Dati Misti (Semi-Strutturati)
Structured data + Long-form text fields
├─ JSON con text blobs
├─ Database con campi "description"
└─ Structured metadata + unstructured content
Facilità per Knowledge Graph: ⭐⭐⭐⭐
Questa è in realtà dove vive la maggioranza dei use case enterprise in produzione. Più facile dei dati completamente non strutturati.
Due Tipi di Grafi
Lo speaker menziona (senza approfondire) due approcci:
- Lexical Graphs: Basati sulla struttura lessicale del testo
- Domain Graphs: Basati sul dominio semantico (es. “Customer”, “Product”, “Order”)
Per approfondire la differenza tra lexical e domain graphs, il consiglio è seguire ulteriori talk dello speaker.
Tool: Neo4j Knowledge Graph Builder
Lo speaker ha appena lanciato (poche settimane prima del talk) un nuovo tool chiamato Knowledge Graph Builder.
Cosa Fa
Input: Output:
├─ PDF files
├─ YouTube links → Knowledge Graph
├─ Wikipedia pages con nodi e relazioni
├─ Cloud storage buckets auto-estratti
Demo Live
Durante il talk, lo speaker ha fatto una demo caricando:
- PDF: Newsletter “The Batch” di Andrew Ng
- Wikipedia: Pagina di OpenAI
- YouTube: Podcast “Latent Space” (episodio Four Wars)
Il tool ha automaticamente:
- Estratto i dati
- Identificato entità (persone, aziende, concetti)
- Creato nodi e relazioni
- Generato embeddings
- Costruito il grafo visualizzabile
Funzionalità
- Upload drag-and-drop o link
- Auto-extraction di entità e relazioni
- Visualizzazione interattiva del grafo
- Chat interface per interrogare il grafo
- Introspection dei risultati (vedi perché l’AI ha risposto così)
Il Knowledge Graph Builder risolve il problema della “steep learning curve” per creare grafi da dati non strutturati. È un ottimo punto di partenza per sperimentare con GraphRAG.
Pattern Architetturale GraphRAG
Ricapitoliamo il pattern core che hai imparato:
Il Pattern Base
┌─────────────────────────────────────────────────┐
│ 1. Vector Search (Primary Key) │
│ Query → Embedding → Find initial nodes │
└────────────┬────────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────┐
│ 2. Graph Traversal (Context Expansion) │
│ Walk relationships → Gather related context │
└────────────┬────────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────┐
│ 3. (Optional) Ranking │
│ Use graph structure → PageRank → Top K │
└────────────┬────────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────┐
│ 4. LLM Generation │
│ Enriched context → LLM → Answer │
└─────────────────────────────────────────────────┘
Quando Usare GraphRAG
Usa GraphRAG quando:
- Hai dati con relazioni importanti (prodotti, utenti, documenti collegati)
- Ti serve explainability (healthcare, finance, legal)
- Vuoi debugging facile durante sviluppo
- Hai bisogno di rispondere a query multi-hop (es. “articoli collegati a prodotti nella stessa famiglia scritti da autori altamente valutati”)
- L’accuratezza è critica
Non serve GraphRAG quando:
- Hai documenti completamente indipendenti
- Le relazioni tra dati non esistono o non sono rilevanti
- Hai un dataset molto piccolo e semplice
Pattern Avanzati
Lo speaker menziona che esistono pattern più sofisticati oltre a quello base, ma sono argomento per un talk futuro.
Conclusione
GraphRAG rappresenta la prossima evoluzione del Retrieval Augmented Generation, combinando la potenza semantica del vector search con la struttura esplicita e interpretabile dei Knowledge Graphs.
Key Takeaways
Evoluzione Web Search: Da keyword (AltaVista) → graph algorithms (PageRank) → structured data (Knowledge Graph) → LLM + Graphs (GraphRAG)
Definizione Semplice: GraphRAG = RAG dove usi un Knowledge Graph nel retrieval path
Pattern Core: Vector search (entry point) → Graph traversal (expansion) → Ranking (optional) → LLM
Benefici Misurati:
- 3x accuratezza (Data.world)
- 75% miglioramento (LinkedIn)
- Nuove classi di domande possibili (Microsoft)
Sviluppo Più Facile: Dopo la learning curve iniziale, il grafo è più facile da debuggare e mantenere
Explainability: Dati espliciti, visualizzabili, auditabili - fondamentale per enterprise
Complementarietà: Vettori e grafi lavorano insieme, non sono competitor
Tool Moderni: Neo4j Knowledge Graph Builder e altri strumenti rendono più facile iniziare
Il Futuro
Siamo all’inizio dell’era GraphRAG. Google lo usa in produzione per miliardi di query. Microsoft ha pubblicato paper. LinkedIn lo ha implementato. Le aziende all’avanguardia stanno sperimentando.
GraphRAG non sostituisce il RAG tradizionale - lo evolve. Se il tuo caso d’uso coinvolge relazioni complesse tra dati, accuratezza critica, o bisogno di explainability, GraphRAG potrebbe essere la risposta.
Risorse
Durante il talk, lo speaker ha mostrato un QR code con risorse per:
- Accedere al Knowledge Graph Builder
- Documentazione su GraphRAG
- Paper di ricerca citati
Per approfondire:
- Paper Data.world su GraphRAG accuracy
- LinkedIn paper con architettura dettagliata
- Microsoft blog post su GraphRAG (Febbraio 2024)
- Neo4j documentation e tutorials
Il futuro del RAG è Graph-enhanced. Inizia a sperimentare oggi.
Buon coding! 🚀