Nell'articolo di oggi vogliamo affrontare il tema Retrieval augmented generation, argomento che è stato oggetto di dibattito e discussione negli ultimi tempi. Retrieval augmented generation è un argomento di grande attualità nella società odierna, poiché colpisce numerose persone in diversi aspetti della loro vita. Nel corso di questo articolo approfondiremo i diversi aspetti legati a Retrieval augmented generation, offrendo una visione dettagliata e analitica che permette al lettore di comprendere meglio l'importanza e l'impatto di questo argomento oggi. Esplorando diverse prospettive e argomenti, miriamo a fornire una visione ampia e completa di Retrieval augmented generation, contribuendo così all'arricchimento della conoscenza su questo argomento così rilevante.
La Retrieval Augmented Generation (abbreviato RAG, in italiano: generazione potenziata da ricerca) è una tecnica che si propone di migliorare i risultati di uno strumento di intelligenza artificiale generativa tramite la ricerca in tempo reale di dati che si vanno ad aggiungere all'input utente.
In particolare, si parla di RAG nel caso di IA generativa testuali[1] (come ad esempio ChatGPT), questi modelli, chiamati LLM (large language model), sono capaci di sostenere una conversazione in base alle sole informazioni che sono state immagazzinate all'interno della rete neurale durante il suo addestramento, il che significa che qualsiasi informazione posteriore all'addestramento o estranea ai dati di addestramento è sconosciuta al modello. Tuttavia, ChatGPT è fornito di una componente di retrieval che cerca informazioni rilevanti su internet e le fornisce al modello perché le usi per rispondere meglio agli utenti. Questo è un esempio tipico di Retrieval Augmented Generation, altri esempi attingono a banche dati specializzate per fornire alla AI generativa informazioni settoriali o relative a una certa azienda o organizzazione.
Sistemi RAG degni di nota sono Perplexity e in generale ogni chatbot IA con accesso ad internet, GitHub Copilot e altri strumenti simili di assistenza alla programmazione, oltre a strumenti specialistici che attingono a banche dati settoriali, come ad esempio in campo legale o medico.
Il concetto alla base della RAG è un elemento persistente nella storia dei sistemi di generazione automatica delle risposte, a partire quantomeno dai primi anni '70, attraverso diverse generazioni di modelli di generazione del testo[2]. L'espressione Retrieval Augmented Generation è stata coniata dai ricercatori di Meta (al tempo chiamata Facebook) nel 2020, in un contesto di crescente interesse per i modelli linguistici di grandi dimensioni, decisamente superiori ai modelli precedenti. Si era osservato come questi fossero capaci di immagazzinare al proprio interno conoscenze fattuali, ma non c'era metodo noto per inculcare efficacemente nel modello nuove conoscenze a piacere. La RAG proponeva di aggirare questo problema mantenendo un database esterno al modello, dal quale ricavare a necessità le informazioni rilevanti, e fornirle al modello allegate ai messaggi dell'utente[1].
Fin dall'articolo originale, la RAG è stata spessissimo associata ai database vettoriali, semplice strumento di ricerca semantica basato su un modello di intelligenza artificiale non generativa, capace di proiettare documenti di testo all'interno di uno spazio vettoriale (chiamato embedding) in modo tale da poter facilmente applicare un algoritmo di ricerca di prossimità per trovare documenti che abbiano tra loro un contenuto semanticamente affine[2]. Questo è semplicemente uno dei metodi con cui, a partire da una richiesta dell'utente, si possono trovare documenti rilevanti per questa richiesta, da un corpo complessivo di documenti da cui attingere. Di fatto, si è osservato che la ricerca tramite solo database vettoriale non è ottimale nel caso generale, e che sono più efficaci sistemi ibridi che integrano il DB vettoriale con una ricerca più convenzionale per parole chiave[3].
I sistemi RAG sono concettualmente divisibili in una serie di processi distinti, più o meno necessari allo sviluppo della soluzione, a seconda del tipo di documenti disponibili e dei casi d'uso:
I processi precedenti sono definiti off-line, cioè da svolgersi una tantum oppure secondo una programmazione necessaria all'aggiornamento della banca dati. I seguenti invece sono processi on-line, ovvero sono svolti ogni volta che l'utente utilizza lo strumento e ne attiva le funzionalità: