approfondimento

RAG (Retrieval Augmented Generation): cos’è, come funziona e che benefici apporta in azienda



Indirizzo copiato

Da un punto di vista tecnologico, la Retrieval-Augmented Generation riproduce tre momenti: comprensione della domanda, ricerca delle informazioni rilevanti per rispondere, generazione della risposta

Pubblicato il 22 mar 2024

Riccardo Benaglia

Team Data Science Ammagamma

Simone Fabiole Nicoletto

Team Data Science Ammagamma

Stefano Vincenzi

Team Data Science Ammagamma



RAG

Una recente tecnologia di AI sta superando le capacità dei LLM: ecco come la Retrieval Augmented Generation (RAG) può potenziare l’efficienza dei processi in azienda, generando risposte più accurate e pertinenti, su una base dati più ampia.

Che cos’è la RAG?

RAG
Immagine generata con Dall-E 3, prompt: “Illustra la RAG con un Lama che, consultando un libro, risponde correttamente a un esame”

La RAG è spesso descritta come un “open book exam”, ovvero un esame in cui lo studente può consultare il libro di testo per rispondere. In questo tipo di esame data una domanda il candidato, in primo luogo, deve comprenderne il significato e l’obiettivo, in un secondo tempo ricerca le informazioni rilevanti per rispondere, infine produce una risposta che sia coerente con la domanda e le informazioni ritrovate.

Da un punto di vista tecnologico la “Retrieval-Augmented Generation” riproduce questi 3 momenti: comprensione della domanda, ricerca delle informazioni rilevanti per rispondere, generazione della risposta. Per fare ciò i due componenti cardine della RAG sono:

1. un motore di ricerca o un sistema di recupero delle informazioni (il libro di testo con il suo indice, continuando l’analogia con l’open book exam)

2. un modello generativo, come un Large Language Model (LLM), per comprendere (prima) la domanda e comporre (poi) la risposta (lo studente dell’open book exam)

RAG, che cos’è e come funziona?

Per capire meglio cos’è la RAG, facciamo un esempio. Consideriamo Marco, un cliente che richiede dettagli sulle politiche di restituzione di un prodotto acquistato. Senza il sostegno della tecnologia Retrieval Augmented Generation (RAG), il chatbot del negozio online su cui Marco ha effettuato l’acquisto potrebbe rispondere in modo impreciso, come un neoassunto desideroso di dimostrare impegno, con affermazioni generiche ed errate del tipo “Le restituzioni sono sempre accettate”.

La complessità delle politiche di restituzione, variabili in base al prodotto, alle condizioni di acquisto e alla legislazione locale, evidenziano l’inadeguatezza di un chatbot basato soltanto su un modello standard (un cosiddetto Large Language Model, come ChatGPT). La RAG, invece, consente al sistema di attingere da fonti affidabili, generando risposte precise ed evitando inesattezze.

Questo esempio, semplice ma realistico, mette in luce i due difetti principali dei Large Language Model:

  • la propensione ad “allucinare”, ovvero rispondere senza verificare le informazioni (il neoassunto desideroso di dimostrare impegno)
  • la limitazione della conoscenza alla data di allenamento, senza accesso a dati di pubblicazione successiva o privati (le politiche di restituzione possono variare e non sono di dominio pubblico)

In questo momento la Retrieval Augmented Generation è la soluzione più efficace ed efficiente a questi due difetti.

Come funziona la RAG?

Per capire come funziona la RAG è bene comprenderne i componenti, prima di presentare il modo in cui questi interagiscono tra loro in quella che solitamente si definisce pipeline la quale riproduce la catena descritta sopra (comprensione domanda, ricerca informazioni, generazione di risposta).

Il motore di ricerca

Il motore di ricerca è un database per salvare e ricercare informazioni. È la biblioteca colma di libri, alcuni dei quali risultano utili per rispondere alle domande dell’esame. Come in una biblioteca i libri sono categorizzati per agevolarne la ricerca.

I database che si utilizzano nelle applicazioni RAG salvano le informazioni sotto forma di numeri o vettori numerici che ne racchiudono il significato semantico: tali database vengono detti Vector DB. Per recuperare le informazioni da questi database la ricerca viene eseguita attraverso misure di similarità numerica nello spazio n-dimensionale in cui si paragonano i vettori che rappresentano la domanda con i vettori che rappresentano la richiesta.

Il modello generativo

Il modello generativo è un large language model, ChatGPT è sicuramente il più famoso tra questi. Il compito del modello generativo è duplice: permette al sistema RAG di comprendere la domanda e lo aiuta a comporre la risposta. La comprensione della domanda facilita per lo studente la ricerca dei contenuti più pertinenti all’interno della biblioteca, mentre la generazione della risposta fornisce uno strumento per scrivere una risposta dal contenuto pertinente alla domanda e alle informazioni recuperate.

La pipeline

Avendo fatto un po’ di chiarezza sui due building block tecnologici per un sistema di RAG siamo ora in grado di definire la pipeline di RAG, ovvero il sistema di dipendenze e di connessioni tra i diversi building block che permettono di creare un applicativo:

  • Indicizzazione. Come organizzare i libri in una biblioteca non è compito banale: si possono ordinare per autore, per tematica, per lingua, per anno di pubblicazione, per genere, ecc.

Per questo motivo esistono gli indici: delle convenzioni che si applicano nel momento di inserire un libro e che ne facilitano poi il suo ritrovamento nello scaffale. Così come una biblioteca anche in un Vector DB la conoscenza viene organizzata per indici per formare una Knowledge Base ben organizzata, di facile e veloce reperimento. Questo step è fondamentale in un sistema di RAG, perché è quello in cui la conoscenza da documenti proprietari viene trasformata in vettori numerici e poi archiviata.

  1. Query dell’utente: l’utente pone una domanda in linguaggio naturale. Questa domanda viene trasformata nella sua forma vettoriale
  2. Retrieval: il vettore che rappresenta la query viene paragonato a quelli presenti nel Vector DB e da questo vengono estratti i chunk (parti di documenti come, ad esempio, paragrafi) più simili. Questo è lo step cardine della RAG: la ricerca per similarità permette di estrarre le informazioni più rilevanti per rispondere alla domanda posta. Lo step di indicizzazione permette alla ricerca di essere rapida ed accurata.
  3. Augmentation: i chunk estratti insieme alla query dell’utente vengono utilizzati per costruire un template di risposta che viene passato allo step successivo
  4. Generation: in base ai fatti salienti estratti il Large Language Model genera una risposta
RAG
Schema esemplificativo del funzionamento di una pipeline

La pipeline rende evidente perché la RAG sia uno strumento estremamente efficace per risolvere entrambi i problemi citati in apertura:

  • Lo step di indicizzazione permette il continuo inserimento di conoscenza all’interno della KB, superando l’ostacolo di una conoscenza fissata nel tempo e non specifica rispetto al caso d’uso (specialmente se in ambito privato)
  • Lo step di Retrieval risolve il problema delle allucinazioni perché la risposta si basa solo sulle informazioni estratte dal Vector DB: se non ci fossero dei chunk simili alla domanda, allora la parte di Generation risponderebbe un sincero “Non lo so”

Applicare la RAG in vari settori

La RAG, rivoluzionaria nel migliorare la risposta a interrogativi complessi, trova applicazioni chiave in open question answering e fact verification. Potenzialmente adatta a settori diversi, dalla medicina all’istruzione, offre potenziali risparmi e prestazioni avanzate. La ricerca continua è fondamentale, così come sviluppare metriche dettagliate e tecniche di interpretabilità dei modelli per aumentare la sua adozione in vari settori, promuovendo fiducia e trasparenza.

La RAG mostra un notevole potenziale in diversi ambiti, migliorando le capacità dei modelli linguistici di rispondere a interrogativi complessi e dettagliati. Due delle principali applicazioni della RAG sono relative a open question answering e fact verification. È comunque fondamentale considerare che l’integrazione della RAG non solo migliora la precisione e la rilevanza, ma arricchisce e approfondisce anche le risposte.

La scalabilità e la versatilità della RAG la rendono adatta a vari settori, con un notevole potenziale in campi specializzati come medicina, legge e istruzione. In queste aree, la RAG ha il potenziale per ridurre i costi di formazione e migliorare le prestazioni rispetto ai metodi tradizionali di ottimizzazione, specialmente nella risposta a domande professionali nel campo della conoscenza di settore.

Per massimizzare l’efficacia della RAG, è necessaria una continua indagine, in particolare nel perfezionare il quadro di valutazione. Lo sviluppo di metriche dettagliate è essenziale per capire e valutare la rilevanza contestuale, la creatività del contenuto e la non maleficenza in diverse attività.

Inoltre, un obiettivo chiave è migliorare l’interpretabilità dei modelli guidati dalla RAG. Migliorare l’interpretabilità consente agli utenti di comprendere il ragionamento dietro le risposte del modello, promuovendo fiducia e la trasparenza nell’applicazione della RAG in vari campi.

Metodi e tecniche per realizzare la RAG

Negli ultimi anni, librerie e software, sempre più specializzati, stanno emergendo come strumenti fondamentali per l’evoluzione della RAG e per la sua implementazione su larga scala. Nonostante questo, la dipendenza della RAG dai modelli LLM (proprietari e non) rimane il requisito principale per una sempre migliore funzionalità.

L’evoluzione della RAG dipende dal progresso del suo technical stack, con LangChain e LLamaIndex che emergono come strumenti influenti in risposta alla crescita di ChatGPT. Queste piattaforme offrono API legate alla RAG, diventando integrali nel panorama dei modelli di linguaggio (LLMs). In aggiunta, i nuovi technical stacks mostrano caratteristiche sempre più specializzate. Ad esempio, Flowise AI10 adotta un approccio low-code, facilitando il deploy di applicazioni di intelligenza artificiale, compresa la RAG, attraverso un’interfaccia intuitiva di tipo drag-and-drop.

Oltre ai fornitori focalizzati sull’IA, anche le tradizionali aziende di software e di servizi cloud stanno ampliando le loro offerte per includere servizi incentrati su RAG. Per esempio, Verba13 di Weaviate si rivolge alle applicazioni di assistenti personali, mentre Kendra14 di Amazon offre un servizio intelligente di ricerca aziendale.

Estremamente interessanti sono le specializzazioni che i vari provider di tecnologie RAG-related provano ad introdurre nelle loro soluzioni: la personalizzazione adatta la RAG a requisiti specifici, la semplificazione mira a ridurre la curva di apprendimento iniziale e la specializzazione perfeziona RAG per una più efficace implementazione in ambienti produttivi.

Mentre è evidente l’evoluzione reciproca dei modelli LLM e del technical stack funzionale all’applicazione della RAG, tuttavia, una piattaforma completamente integrata e completa rimane ancora una prospettiva futura.

Sfide e limiti della RAG

Nonostante i notevoli progressi nella tecnologia RAG, persistono sfide che richiedono ancora una ricerca approfondita. La limitata lunghezza del contesto che si può dare in input ai LLM così come la sicurezza della RAG e la bassa efficienza nel recupero di informazioni, sono solo alcuni dei pain point da affrontare nei prossimi anni per portare a un più vasto utilizzo di questa tecnologia.

Le principali linee di ricerca sulla RAG si stanno attualmente concentrando sulle seguenti tematiche:

  • Lunghezza del contesto: l’efficacia della RAG dipende dalle dimensioni della finestra di contesto dei Large Language Model (LLM). Trovare un equilibrio tra una finestra troppo breve, rischiando informazioni insufficienti, e una troppo lunga, rischiando la diluizione delle informazioni, è cruciale. Adattare la RAG alla continua espansione delle finestre di contesto dei LLM rappresenta una rilevante domanda di ricerca [Xu et al., 2023c, Packer et al., 2023, Xiao et al., 2023].
  • Robustezza: l’impatto di rumore o informazioni contraddittorie durante il retrival può compromettere la qualità dell’output della RAG. Migliorare la resistenza della RAG a input avversari o controfattuali è diventato una metrica chiave di prestazione, guadagnando slancio nella ricerca [Yu et al., 2023a, Glass et al., 2021, Baek et al., 2023].
  • Espansione dei Ruoli dei LLM: oltre alla generazione delle risposte finali, i LLM svolgono ruoli nel recupero e nella valutazione all’interno dei framework RAG (e.g., calcolo di alcune metriche). Identificare modi per sbloccare ulteriormente il potenziale dei LLM nei sistemi RAG è una direzione di ricerca in crescita.
  • Leggi di scalabilità: sebbene siano stabilite per gli LLM, l’applicabilità delle leggi di scalabilità [Kaplan et al., 2020] alla RAG rimane incerta. Studi iniziali [Wang et al., 2023b] hanno iniziato ad affrontare questo problema, con l’affascinante possibilità di una Legge di Scalabilità Inversa, dove modelli più piccoli superano quelli più grandi, giustificando ulteriori indagini.
  • RAG Production-ready: la praticità della RAG ha portato ad una adozione a larga scala. Tuttavia, affrontare sfide ingegneristiche critiche, come migliorare l’efficienza del recupero, aumentare il retrival dei documenti in grandi DB e garantire la sicurezza dei dati, rimane imperativo [Alon et al., 2022].

Evoluzioni della RAG


L’esempio di Marco fatto sopra ci ha confermato che i Large Language Model, e più nello specifico la RAG, stanno rivoluzionando sia il mondo dei chatbot che l’analisi di enormi quantità di dati specifici e privati. Come indicato nei precedenti capitoli, da una parte la RAG consente di ricercare all’interno di una base dati specifica le informazioni più pertinenti a una domanda posta al LLM dall’utente, dall’altra però mostra alcuni pain-points come la limitata lunghezza del contesto e l’efficienza del retrieval. Andando ad indagare tali pain-points si osserva come i limiti del retrieval e nella lunghezza del contesto influenzano la risposta generata in modo profondo. Ad esempio, se il retrieval non è in grado di restituire documenti o porzioni di essi (chunks) pertinenti, allora la risposta generata potrebbe non essere corretta o esserlo solo parzialmente. In quest’ultimo caso specifico informazioni contrastanti o imprecise nel contesto restituito potrebbero confondere il modello generativo.

In risposta a questi limiti, stanno nascendo sempre più approcci avanzati e specifici, tra i quali:

  • Self-Reflective RAG: ovvero al termine del passaggio di retrieval, un modello aggiuntivo “riflette” sui contesti ritornati e decide quali informazioni sono rilevanti e quali no per la successiva generazione.
  • Re-Ranking: anche in questo caso si prevede l’impiego di un piccolo modello aggiuntivo per selezionare i documenti più rilevanti.
  • Forward Looking Active Retrieval Augmented Generation (Flare): durante la generazione della risposta il modello continua a ricercare online nuovo contenuto da includere nella risposta stessa, una sorta di “ricerca e genera” real time.
  • System 2 Attention (S2A): tale approccio mira a risolvere il problema del bias nel contesto. Tramite un prompt adeguato mirano ad eliminare il rumore o le informazioni non rilevanti dal contesto.
  • Multimodal RAG: consente la ricerca attraverso dati eterogenei, come appunto immagini, testo, audio. Questo rappresenta sicuramente una svolta importante per tutti gli approcci RAG, ricercare tra varie tipologie di dati permette di aprire le porte a molteplici task diversi.

Si nota come i due filoni principali di tendenza sono legati all’ottenimento di un contesto preciso e coerente con la domanda e allo sfruttamento di molteplici tipologie di dati.

In conclusione, tali innovazioni, unite ad altre metodologie legate a ricerca ibrida e di prompting, stanno contribuendo a migliorare le capacità della RAG, risultando fondamentali nel contesto di un suo crescente utilizzo industriale.

Implicazioni sociali ed etiche della RAG

Nella sezione precedente si è posto l’accento sull’evoluzione prossima della RAG in ambito prettamente industriale; tuttavia, avere chatbots in grado di interagire con le più svariate basi dati e di fornire poi risposte semplici e dirette può avere un largo impatto anche sull’apprendimento e sullo studio scolastico.

Se da un lato osserviamo grandi vantaggi dall’uso della RAG, dall’altro va prestata particolare attenzione al tema della sicurezza del dato, che sia a livello di data processing, di storage che infine a livello di ciò che viene inviato al Large Language model come contesto. Nell’uso della RAG la privacy dei dati è un punto cruciale. In alcuni contesti specifici poi, come ad esempio chatbots medici, le fonti dati sfruttate dal retriever potrebbero contenere informazioni (e.g. prescrizioni specifiche, dati sensibili) potenzialmente sfruttabili dal modello per fornire risposte.

In letteratura, vi sono diversi paper che vanno a esplorare proprio questi temi di privacy leakage, in particolare utilizzando prompt ad-hoc dimostrano che sia possibile arrivare ad ottenere informazioni specifiche.

È dunque importante avere consapevolezza del sistema che si sta utilizzando ed in particolar modo della vulnerabilità del dato trattato, da qui si possono mettere in atto strategie per l’anonimizzazione del dato, guardrails per evitare la prompt injection ed ancora l’introduzione di controlli e monitoraggio su chi può utilizzare tali strumenti all’interno di un ente.

Conclusioni

In questo articolo abbiamo presentato la tecnologia RAG, dalla sua architettura al suo utilizzo in diversi contesti aziendali, agli open point sulla tecnologia e i trend di innovazione, fino alle implicazioni etiche e sociali del suo utilizzo. Ricapitoliamo di seguito i punti chiave da tener presenti, quando si lavora con la RAG:

  • la RAG è in questo momento la tecnologia più efficace ed efficiente per risolvere i due problemi che più ostacolano l’utilizzo di LLM in ambito di produzione: le allucinazioni e l’impossibilità di utilizzare conoscenza privata;
  • le applicazioni che più si prestano per l’utilizzo della RAG in produzione sono quelli di question answering (Q&A) che basano le risposte su una base documentale certificata;
  • la RAG, così come tutte le tecnologie basate su Large Language Models, è in continua evoluzione sia da un punto di vista di ecosistema di tooling sia da un punto di vista di ottimizzazione delle performance;
  • così come per tutte le tecnologie basate sui dati, le implicazioni etiche, sociali e di privacy devono essere al centro della costruzione di soluzioni che si basano sulla RAG in un approccio privacy by design and default.

Risorse

Come ormai consuetudine, su queste tematiche, si trova una quantità enorme di informazioni online; tuttavia, per un neofita i link successivi possono essere utili per avere un’infarinatura sul tema. Gli short courses forniti da deeplearning.ai sono molto utili per capire il contesto e visualizzare alcuni primi esempi concreti di impiego.

Per andare più in profondità e “sporcarsi le mani”, il tool llamaindex https://www.llamaindex.ai/ è molto valido, ha una buona community di utilizzatori e una documentazione fatta molto bene e di facile utilizzo.

Infine, per sperimentare l’utilizzo della RAG attraverso il cloud, Microsoft fornisce vari corsi, tra cui https://learn.microsoft.com/en-us/training/paths/implement-knowledge-mining-azure-cognitive-search/, che guidano passo dopo passo l’utente nella costruzione di un applicativo.

Per chi fosse interessato alla “storia” della RAG (nata nel 2020) al seguente link si trova il seminal paper di Meta: https://arxiv.org/pdf/2005.11401v4.pdf .

Articoli correlati

Articolo 1 di 4