La Retrieval-Augmented Generation (RAG) è una tecnica per costruire sistemi di IA che consente a un modello linguistico di consultare documenti esterni prima di rispondere a una domanda. Invece di affidarsi solo a ciò che è stato appreso durante l'addestramento, una pipeline RAG cerca prima in una base di conoscenza i passaggi rilevanti per la query dell'utente, poi fornisce quei passaggi al modello come contesto. Il risultato è una risposta generata ancorata a fonti specifiche e citabili, anziché puramente ai pesi interni del modello.
Come funziona la Retrieval-Augmented Generation
Un sistema RAG tipico ha due componenti principali: un retriever e un generator. Il retriever è di solito un indice di ricerca vettoriale costruito a partire da un corpus di documenti. Quando ogni documento viene aggiunto all'indice, un modello di embedding converte i suoi chunk in vettori numerici; lo stesso modello crea l'embedding della query in arrivo dell'utente, e una ricerca per similarità (comunemente una lookup nearest-neighbor che usa la distanza coseno o prodotto scalare) restituisce i chunk i cui vettori sono più vicini alla query. I chunk con il punteggio più alto vengono quindi inseriti nel prompt inviato al grande modello linguistico, spesso insieme a istruzioni come "rispondi usando solo il contesto fornito".
Ad esempio, se un utente chiede a un assistente aziendale interno "Qual è la nostra politica di congedo parentale?", il retriever trova la sezione rilevante del manuale del dipendente, e il modello linguistico usa quei passaggi per comporre una risposta precisa che cita la politica. Questo pattern, introdotto nel paper del 2020 di Lewis et al. presso Facebook AI Research, separa la conoscenza (memorizzata nell'indice) dal ragionamento (eseguito dal modello), ed è per questo che l'approccio scala bene quando il materiale sorgente cambia.
Perché è importante
La RAG affronta tre problemi persistenti dei modelli linguistici standalone. Primo, riduce le allucinazioni perché il modello è ancorato al testo recuperato anziché improvvisare. Secondo, consente a un sistema di riflettere informazioni che non esistevano, o che sono cambiate, dal cutoff di addestramento del modello, semplicemente aggiornando l'indice. Terzo, rende le risposte del modello più verificabili: sviluppatori e utenti possono ispezionare i chunk recuperati, citarli e ricondurre qualsiasi affermazione a un documento sorgente.
Queste proprietà rendono la RAG il pattern predefinito per il question answering aziendale, i copiloti per il customer support, la ricerca legale e di compliance, e gli assistenti IA che devono operare su dati privati o proprietari senza dover riaddestrare il modello sottostante.
Tipi e pattern chiave
- Naive (o "Retrieve-and-Read") RAG: una singola fase di retrieval inserisce direttamente i top-k chunk nel prompt del generator.
- Advanced RAG: aggiunge riscrittura delle query, re-ranking e filtraggio a livello di chunk prima della generazione, per migliorare la precisione.
- Modular RAG: compone la pipeline a partire da componenti intercambiabili come web search, lookup SQL o chiamate API, e può iterare tra retrieval e generazione.
- Graph RAG: costruisce un knowledge graph a partire dal corpus e recupera subgraph di entità correlate, il che può produrre risposte più contestuali su dati connessi.
- Agentic RAG: lascia che sia il modello linguistico a decidere quando e cosa recuperare, spesso attraverso più strumenti, prima di produrre una risposta finale.
Disaccoppiando l'archiviazione della conoscenza dal motore di ragionamento, la RAG è diventata un building block fondamentale per le applicazioni IA in produzione che devono essere accurate, aggiornate e verificabili. La ricerca originale è descritta in Lewis et al., "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks" (2020), e le best practice attuali sono documentate in framework come LlamaIndex e LangChain.