• 18 November 2024
RAG cos'è

Indice

Quando durante una call sentite dire, da uno degli sviluppatori dell’azienda di turno, che “lui” (a differenza di altri) opera con la RAG (che sta per Retrieval-Augmented Generation) è bene che sappiate anche di cosa si stia parlando. La RAG è un approccio (che parte proprio dalla volontà di ottenere risultati qualitativamente migliori) che amplia le capacità dei modelli linguistici di grandi dimensioni (LLM) attraverso l’aggiunta un componente di recupero delle informazioni stesse. Vuol dire che invece di basarsi solo sui dati di addestramento originali, il modello linguistico può recuperare informazioni pertinenti da fonti esterne autorevoli prima di generare un determinato output.

Aspetti convenienti della RAG

E’ più che chiaro quindi che, questa tipologia di implementazione porta ad un risultato più alto e ampio, dando la possibilità di ottenere informazioni molto più aggiornate e stando lontani dai soliti contenuti. Questo perché ciò che viene distribuito come informazione se incontra un parare molto più positivo degli utenti è chiaro che si spalmi su di una reputazione molto più positiva delle risposte ottenute. Perché? Perché sono le fonti di valore e dimostrabili che parlano. E tutto questo non può che portare ad una più profonda fiducia da parte degli utenti stessi. E aggiungerei, un controllo superiore da parte degli sviluppatori sulle fonti di informazione usate. Sì, tutto questo è molto interessante, ma come avviene nello specifico?

Processo creativo tramite RAG

Abbiamo un LLM e dobbiamo farlo agire nel miglior modo possibile. Cosa ci serve allora? Un database. Dobbiamo creare un database che rimandi a conoscenze esterne approfondite (in formati leggibili). In questo metteremo tutte quelle informazioni che riteniamo più rilevanti in base alla conoscenza che abbiamo della query dell’utente. Da qui procederemo con una incorporazione di quelle che avremo recuperato dal prompt dell’LLM stesso per avere così la possibilità di generare una risposta di qualità superiore.

E se volessimo fare a meno della RAG? In che senso? E perché poi palesare tanto interesse per questa dinamica operativa se poi si tende a scardinarla?  Allora, facciamo il punto. Io vorrei guardarla come se si trattasse di una sorta di esperimento. Abbiamo un punto A conclamato che ci apre una data strada per arrivare a B, ma possiamo tranquillamente optare per una sopraelevata C che ci porti ad un identico obiettivo, ma con minor sforzo e maggiori risultati. Per fare tutto questo, ho provato ad andare di “supposizione immaginativa” (che nome strano vero? Però esiste…).

Con o senza RAG. Quello che la memoria ci dice.

Partirei quindi, da una lettera scritta (siamo sempre in fase di ipotesi) ad un collega ricercatore. 

Egregio collega,

mi rivolgo a Lei con entusiasmo per presentare una nuova, innovativa ipotesi che potrebbe rivoluzionare il modo in cui pensiamo ai modelli linguistici di grandi dimensioni (LLM) e ai chatbot conversazionali. Dopo approfondite ricerche, ho scoperto che è possibile superare la necessità di una Retrieval-Augmented Generation (RAG) integrando una forma di memoria a lungo termine direttamente nell’architettura dell’LLM. Come ben sa, gli LLM sono addestrati su vastissimi volumi di dati e raggiungono risultati impressionanti nella generazione di testo. Sappiamo però anche che la loro conoscenza è limitata al dataset di addestramento, spesso con una data di cut-off ben definita. Questo significa che gli stessi modelli possono produrre informazioni imprecise quando interrogati su specifici argomenti. La mia proposta è di incorporare una componente di memoria a lungo termine nell’LLM, che gli consenta di accedere a conoscenze più recenti e pertinenti. Anziché dipendere da un sistema di recupero esterno, l’LLM sarebbe in grado così di integrare autonomamente nuove informazioni nel suo modello interno. 

A questo punto verrebbe spiegato al collega nello specifico un iter di linee evolutive che più o meno potrebbero essere riassunte in questo modo. Ossia che l’eliminazione del processo di recupero esterno, di conseguenza, semplificherebbe l’architettura complessiva, abbassando di molto i costi computazionali e i tempi di risposta. Sappiamo che un LLM può adattarsi rapidamente a cambiamenti e aggiornamenti delle informazioni, senza avere la necessità di aggiornare le fonti esterne. E poiché l’intero processo di generazione della risposta avverrebbe all’interno del modello, sarebbe molto più semplice comprendere e spiegare il ragionamento alla base delle risposte.

Andiamo ad obiettivo

Per raggiungere questo risultato, stiamo quindi valutando diverse strategie di progettazione dell’architettura dell’LLM, tra cui l’incorporazione di moduli di memoria a lungo termine, e l’uso di meccanismi di attenzione avanzati legati a tecniche di apprendimento continuo. Penso che questa innovativa architettura potrebbe superare le attuali limitazioni degli LLM. E per concludere la missiva tra colleghi ricercatori aggiungerei:

Ritengo che questa scoperta possa aprire la strada a una nuova era di chatbot e sistemi di intelligenza artificiale generativa ancora più potenti e quasi infallibilii.

Va bene, fin qui tutto chiaro, ma in che modo sarebbe possibile creare dei moduli di memoria a lungo termine?

La prima idea che mi viene in mente è quella di integrare nell’architettura dell’LLM diversi moduli specializzati nella memorizzazione e nel recupero di informazioni a lungo termine. Questi moduli dovrebbero anche possedere alcune caratteristiche chiave. La prima fra queste sarebbe sicuramente la capacità di memorizzare e mantenere tantissime informazioni aggiornate nel tempo, e senza alcun limite di dimensione. I suoi meccanismi sarebbero ad apprendimento continuo, il che vuol dire non avere la necessità di ricominciare da principio l’addestramento. Per permettere poi al modello di accedere rapidamente alle informazioni memorizzate, i moduli di memoria dovrebbero supportare sofisticate funzionalità di indicizzazione, basate su meccanismi di rappresentazione vettoriale.

E da qui la lista (reti neurali esterne di memoria a lungo termine, database vettoriali integrati per l’indicizzazione delle informazioni ed infine, algoritmi di apprendimento continuo per l’aggiornamento dei contenuti). Questa architettura ibrida consentirebbe all’LLM di attingere a una base di conoscenze sempre aggiornata pertinente, senza dover dipendere da un sistema esterno di recupero delle informazioni. Ciò si tradurrebbe nel superamento dei limiti della tradizionale Retrieval-Augmented Generation.

Riassumiamo concludendo

Quando l’utente pone una domanda, l’LLM genera un prompt iniziale basato sulla query. Questo prompt viene poi arricchito con informazioni pertinenti recuperate dai moduli di memoria, usando la strada dei meccanismi di attenzione avanzati. Nel mentre di queste dinamiche di implementazione e azione, l’LLM invia una richiesta ai moduli di memoria per ottenere dati specifici da integrare nella risposta finale. E per concludere in maniera semplice, il processo di generazione della risposta finale va a tener conto sia delle conoscenze di base dell’LLM che delle informazioni recuperate dai moduli di memoria. Da quello che posso immaginare questa tipologia di architettura credo risulti molto più snella e performante rispetto a un approccio con recupero esterno. Certo, resta ancora molto lavoro da fare prima di poter realizzare pienamente questa visione, ma i potenziali risultati (super ottimali) la rendono una direzione di ricerca credo davvero promettente.