Dalla generalità alla specificità: cos'è e come funziona la RAG

RAG sta per Retrieval Augmented Generation, cioè generazione aumentata dal recupero di informazioni. È l'ennesimo acronimo del mondo dell'intelligenza artificiale, ma vale la pena capirlo bene: il termine circola sempre più spesso e spiega molto di come si costruisce un'applicazione AI per un'azienda.

La RAG è infatti il meccanismo che permette a un modello linguistico generalista di ragionare sulle informazioni specifiche di un'organizzazione. Rappresenta un'opportunità, ma ha anche limiti precisi. Per capirli conviene partire dalla materia prima su cui lavora: la Knowledge base.

La Knowledge Base: la conoscenza da portare in dote

La Knowledge Base è l'insieme delle fonti di informazione che si ritiene utile mettere a disposizione dell'applicazione AI.

Le fonti possono essere poco strutturate, come file di testo, PDF e documenti Word, oppure più strutturate, come fogli Excel e database, fino a includere fonti esterne come i siti web.

Anche immagini e video possono entrarvi, ma per un modello linguistico un'immagine è rappresentata dalla sua descrizione e un video dalla trascrizione del parlato.

Semplificando, la base di conoscenza di un progetto di questo tipo è fatta soprattutto di parole.

Un modello che sa molto, ma non di noi

Ogni modello linguistico, qualunque sia, possiede una conoscenza del mondo finita e chiusa, quella acquisita durante l'addestramento. Di questa conoscenza a un'azienda interessa soprattutto una cosa: la capacità di ragionare. Il punto è farla lavorare sui propri temi e sulle proprie informazioni.

Qui si apre un bivio. La prima strada è addestrare un modello proprio, una rete neurale costruita sulla propria conoscenza. È un progetto molto oneroso: per un modello come GPT-4 le stime parlano di decine di milioni di dollari. Progetti più piccoli costano meno, ma restano su ordini di grandezza complessi e non sono alla portata di tutti. La seconda strada è la RAG, più semplice e rapidamente attivabile.

Gli ingredienti di un sistema RAG

Un'applicazione basata sulla RAG mette insieme tre elementi:

  1. un modello linguistico dotato di un proprio Mental Model, cioè l'insieme di istruzioni che ne definiscono ruolo, comportamento e regole
  2. la Knowledge Base
  3. un framework applicativo che sta tra i due e li collega, eseguendo una sequenza di operazioni.

Quando l'utente scrive una richiesta, il framework la sottopone al modello per coglierne la sostanza, cioè l'intento. In base all'intento attiva l'agente specializzato più adatto: se la richiesta è trovare un video, interviene l'agente che cerca i video; se è generare un'immagine, quello dedicato alle immagini.

Nella maggior parte dei casi, però, l'utente chiede un'informazione che si trova nella base di conoscenza aziendale, o vuole discuterne. È qui che entra in gioco la RAG vera e propria.

Come lavora la RAG, passo dopo passo

Il primo passo è ripulire la domanda. L'applicazione elimina gli orpelli del linguaggio e isola le parole fondamentali, quelle che servono a trovare la risposta. Poi le usa per cercare dentro la Knowledge base.

Non si tratta però di una ricerca classica, come quella di Google o di un motore che cerca parole all'interno dei documenti. È una ricerca matematica. Per renderla possibile, la Knowledge base viene prima trasformata in un database vettoriale: i testi diventano vettori, frecce con una posizione e una direzione in uno spazio a molte dimensioni, dove i contenuti di significato simile si trovano vicini.

La scelta di questa forma non è casuale: è la più vicina possibile al modo in cui i modelli linguistici rappresentano il linguaggio al proprio interno.

La ricerca di vicinanza

Nel database vettoriale si esegue una ricerca di vicinanza. Le parole chiave della domanda vengono collocate nel punto corrispondente dello spazio e il sistema raccoglie i frammenti di testo che si trovano lì intorno: cinque, sette, dodici blocchi, di una dimensione che si può controllare. Sono paragrafi presi qua e là nei documenti, non ordinati come li ordinerebbe una persona.

Questi frammenti vengono inviati al modello insieme alla domanda. È come dirgli: spiegami come si costruisce la borraccia, e tieni conto che nella documentazione ho trovato questi passaggi che ne parlano. Il modello li legge e costruisce la risposta ragionando in un contesto molto locale, quello della domanda posta in quel momento.

Il prompt si arricchisce al volo

In pratica la RAG modifica il prompt in tempo reale, aggiungendo alla domanda le informazioni della Knowledge base, anche molto ampia, che sono utili in quel preciso contesto. Il contesto che il modello riceve è composto da quattro elementi: il Mental Model, la storia della conversazione fino a quel momento, la domanda e i frammenti di testo pertinenti. È un contesto molto ricco, ed è per questo che la risposta risulta spesso sorprendente per precisione e pertinenza.

Da qui il significato dell'acronimo: retrieval è il recupero dei frammenti pertinenti, augmented generation è la generazione di una risposta nuova, arricchita da ciò che è stato recuperato.

Uno stack tecnologico, non una singola funzione

La RAG è un approccio tecnologico e richiede uno stack dedicato. Serve un'infrastruttura in cui la Knowledge base viene trasformata in forma vettoriale e mantenuta aggiornata nel tempo. Servono gli strumenti che permettono all'applicazione di interrogarla ed estrarne il contesto. E serve la capacità di comporre tutti i pezzi, cioè Mental Model, storia della conversazione, domanda e risultati della ricerca, inviarli al modello e usare la risposta per i passaggi successivi, in una vera e propria catena di ragionamento.

Quando usare la RAG e quando no

La RAG non interviene in modo sistematico, ma solo quando serve. Un'applicazione AI ben progettata riconosce l'intento di ogni richiesta e attiva l'agente corrispondente. Nello scenario più semplice c'è un solo intento e un solo agente RAG. In scenari più articolati si possono avere più Knowledge base interrogate da agenti diversi, oppure utenti con permessi differenti: l'utente A accede alla prima base di conoscenza, l'utente B solo alla seconda. Ci possono poi essere agenti che non usano affatto la RAG: se l'intento è conoscere la giacenza a magazzino di un codice prodotto, l'agente esegue una query SQL in tempo reale sul database e aggiunge il risultato al contesto della conversazione.

Il criterio di scelta è la natura delle informazioni. La RAG ha senso quando la base di conoscenza è fatta di parole, cioè di documenti. Quando i dati sono strutturati è più efficace un tool specifico che interroga direttamente il database, perché una query non lavora per vicinanza vettoriale. I casi misti, per esempio un database strutturato con alcuni campi testuali, sono i più delicati e richiedono soluzioni su misura.

Per questo la RAG va intesa come una tecnica e non come una soluzione. Serve a ottenere una parte del risultato: portare dentro l'applicazione AI le informazioni aziendali necessarie in quel momento e in quel contesto. È anche un approccio recente. I database vettoriali esistevano già, ma erano usati per altri scopi. Esisteva la ricerca, che però non ha una componente generativa: cerca e trova. La ricerca della RAG ha un obiettivo diverso: non restituire un risultato, ma dare al modello il contesto per rispondere.

Il controllo dei dati: un vantaggio decisivo

Il vantaggio forse più importante riguarda i dati. Con la RAG l'azienda non consegna la propria base di conoscenza al modello: i contenuti restano nel proprio perimetro e al modello arriva solo il frammento di informazione necessario a rispondere a quella domanda, in quella conversazione.

Molto dipende dal motore utilizzato e dalle sue condizioni contrattuali. Le condizioni d'uso delle API di OpenAI, per esempio, escludono l'uso dei dati inviati per addestrare i modelli. La conversazione con il modello, inoltre, è stateless: il modello non conserva memoria degli scambi precedenti, tanto che a ogni richiesta occorre inviargli anche la storia della conversazione. La comunicazione tra applicazione e modello è crittografata e i frammenti servono solo a generare la risposta, senza entrare nella conoscenza del modello. La base di conoscenza resta di proprietà dell'azienda e sotto il suo pieno controllo, un requisito irrinunciabile per qualunque applicazione AI aziendale. Lo stesso principio, se previsto dal design dell'applicazione, tutela anche la riservatezza delle conversazioni di chi la utilizza.

Una risposta concreta a un timore diffuso

Questo approccio risponde a un timore che emerge spesso nel confronto con i vertici aziendali: l'intelligenza artificiale è interessante, ma consegnarle la propria base di conoscenza significa perderne il controllo. È una preoccupazione legittima, che si affronta in modo serio con uno stack tecnologico proprio e con la RAG: tutto resta dentro il perimetro aziendale, mentre il modello linguistico lavora dall'esterno, senza memoria e senza usare le informazioni per addestrarsi.

Diverso è il caso delle versioni gratuite dei chatbot, le cui condizioni d'uso possono prevedere l'impiego dei contenuti per migliorare il modello: ciò che si condivide entra a far parte del modello e non è più soltanto dell'azienda. Anche i tool SaaS che offrono RAG o chatbot pronti all'uso possono essere una scorciatoia rapida, ma occorre verificare con attenzione cosa si sta dando in pasto alla macchina e se se ne mantiene la proprietà.

L'alternativa è che l'azienda costruisca il proprio stack AI, ne mantenga il pieno controllo e usi i motori linguistici disponibili, come GPT, Claude, Gemini o Llama, perché ragionino sulle sue informazioni in un ambito protetto, chiuso e regolato da contratto.

È questo il passaggio dalla generalità alla specificità: un modello generalista che, grazie alla RAG, diventa capace di rispondere sulla conoscenza specifica di un'azienda.