Cos'è la retrieval-augmented generation (RAG)?

Copia URL

La retrieval-augmented generation (RAG) è una tecnica che consente di ottenere risposte più accurate dalle applicazioni di IA generativa collegando un modello linguistico di grandi dimensioni (LLM) con risorse esterne aggiuntive. 

Scopri Red Hat AI

 

La RAG è un metodo che integra i dati presenti all'interno di un modello linguistico di grandi dimensioni con sorgenti di dati esterne selezionate, ad esempio uno specifico repository, raccolte di determinati testi e documentazione preesistente. Tali risorse vengono quindi segmentate, indicizzate in un database vettoriale e quindi utilizzate come materiale di riferimento per offrire risposte più accurate.

La RAG è una risorsa molto utile perché permette all'LLM di sfruttare informazioni specifiche in tempo reale, attingendo a una o più fonti attendibili. Consente un risparmio notevole perché offre un'esperienza ottimale senza la necessità di addestrare i modelli o eseguire il fine tuning. Inoltre, utilizza meno risorse perché, dopo aver inviato la query all'LLM, fornisce solo le informazioni più pertinenti, anziché restituire lunghi documenti troppo generici.

Scopri di più sull'IA generativa 

Risorse da Red Hat

Gli LLM si avvalgono di tecniche di apprendimento automatico e di elaborazione del linguaggio naturale (NLP) per comprendere e generare un linguaggio che emula quello umano per le inferenze IA. L'inferenza IA è la fase operativa dell'intelligenza artificiale, ovvero il momento in cui il modello è in grado di applicare alle situazioni concrete ciò che ha appreso dall'addestramento. 

Sebbene gli LLM siano estremamente utili per la comunicazione e l'elaborazione dei dati, presentano anche alcuni svantaggi:

  • Vengono addestrati con dati generici, che non includono informazioni specifiche relative all'argomento che si desidera trattare, ad esempio un determinato insieme di dati interni di un'organizzazione.
  • La loro è una conoscenza con una scadenza a breve termine, vale a dire che le informazioni con cui sono stati addestrati non vengono aggiornate, pertanto il materiale sorgente può diventare obsoleto e non più pertinente.
  • Tendono a fornire la risposta che si aspettano l'utente desideri ricevere, fornendo talvolta informazioni errate o non più attuali, fenomeno noto con il termine "allucinazione".

L'implementazione di un'architettura RAG all'interno di un sistema di question answering basato su modelli LLM consente di stabilire un filo diretto tra l'LLM e le basi di conoscenza aggiuntive selezionate. L'LLM riesce a fare riferimenti incrociati e ad aggiungere informazioni supplementari a quelle di cui già dispone, per fornire un output più affidabile e accurato all'utente che ha sottoposto la domanda.

LoRA e QLoRA a confronto
Suggerimenti per i modelli di prompt LLM per l'IA generativa

Il meccanismo di recupero delle informazioni integrato nell'architettura RAG consente di aggiungere sorgenti di dati supplementari a quelle generiche utilizzate per addestrare gli LLM. L'integrazione tramite RAG di dati esterni e verificabili ai materiali utilizzati dall'LLM offre svariati vantaggi:

Accuratezza
La RAG fornisce all'LLM una serie di fonti citabili che l'utente può verificare. L'architettura RAG può anche essere progettata perché dichiari di non saper rispondere a domande che esulano l'ambito della sua base di conoscenza. In sostanza, la RAG riduce le possibilità che un LLM condivida output errati o fuorvianti e rafforza la fiducia degli utenti.

Convenienza
Riaddestrare ed eseguire il fine tuning degli LLM richiede l'allocazione di un budget importante nonché tempo, così come creare un modello fondativo (ad esempio realizzare un sistema conversazionale simile a un chatbot) da zero, con informazioni specifiche. La RAG consente agli utenti di introdurre nuovi dati in un LLM esistente, ma anche di eliminare o aggiornare le fonti di informazioni semplicemente caricando un documento o un file.

Una RAG riduce anche i costi necessari per l'inferenza. Le query per gli LLM comportano costi notevoli: esercitano un certo peso sull'hardware utilizzato se si esegue un modello locale, oppure ricadono sulla fatturazione a consumo se utilizzi un servizio esterno tramite API. Anziché inviare un intero documento di riferimento a un LLM, la RAG può fornire solo gli estratti più pertinenti, riducendo così le dimensioni della query e migliorando l'efficienza.

Maggiore controllo per gli sviluppatori
Rispetto ai metodi di fine tuning tradizionali, la RAG offre delle soluzioni più accessibili e semplici per ricevere feedback, risolvere i problemi e correggere le applicazioni. Il vantaggio principale dell'architettura RAG per gli sviluppatori è che dispongono di un flusso di informazioni specifiche per un dominio e aggiornate.

Sovranità dei dati e privacy
L'esperienza ci insegna che utilizzare informazioni riservate per eseguire il fine tuning di un LLM può essere rischioso, perché il modello potrebbe rivelare dati utilizzati per il suo addestramento. La RAG risolve questo problema di privacy conservando i dati sensibili on premise, anche quando vengono utilizzati come fonte per un LLM locale o per un LLM esterno verificato. L'architettura RAG può inoltre essere impostata in modo da limitare l'accesso alle informazioni sensibili in base a livelli di autorizzazione diversi, in modo che solo determinati utenti possano avere accesso a determinati dati in base all'autorizzazione di cui dispongono. 

L'architettura RAG recupera i dati da una fonte esterna, li inserisce nel contesto dell'LLM esistente e genera una risposta ottenuta dalla commistione dei due. Questa procedura prevede 3 fasi principali: preparazione dei dati, recupero e generazione.

Fase 1: preparazione dei dati (per il recupero)

  • Reperimento e caricamento della documentazione: vengono identificati i documenti che fungeranno da fonte per l'LLM, verificando che siano in un formato compatibile (in genere file di testo, tabelle di database o file PDF). Indipendentemente dal formato originale, ciascun documento, prima di essere incluso nel database vettoriale, dovrà essere convertito come file di testo. Questa procedura è caratterizzata dagli ulteriori passaggi di estrazione, trasformazione e caricamento, o fasi ETL (Extract, Transform and Load), che consentono di snellire e organizzare i dati non elaborati in modo che siano pronti per essere archiviati, analizzati e utilizzati per l'apprendimento automatico.
     
  • Trasformazione: il testo viene suddiviso in modo che sia più agile da recuperare. Le diverse sezioni dei documenti aggiornati vengono quindi analizzate e catalogate in base a una serie di caratteristiche distinte: se ad esempio un documento è formattato in paragrafi, il modello riuscirà a eseguire ricerche e recuperare dati al suo interno in modo più agile rispetto a quanto accade con un documento con molte tabelle e figure.

    La suddivisione dei documenti può avvenire in base a criteri semantici, sintattici, in base ai token, alla formattazione, ai caratteri HTML o al tipo di codice utilizzato. Per l'acquisizione dei documenti esistono numerosi framework open source, ad esempio LlamaIndexLangChain.
     

  • Integrazione: viene utilizzato un modello di machine learning specializzato (su base vettoriale) che converte i dati in vettori numerici, in modo che sia possibile applicare operazioni matematiche per stabilire similarità e differenze tra i dati. Grazie all'integrazione è possibile convertire testo (o immagini) in un vettore che carpisca il significato essenziale dei contenuti, tralasciando i dettagli irrilevanti; a ogni sezione di dati viene assegnato un valore numerico (ad esempio 1,2, -0,9 o 0,3), in modo che possa essere indicizzata all'interno di un sistema di livello superiore denominato database vettoriale.

    Il valore numerico attribuito all'interno del database vettoriale consente all'architettura RAG di stabilire collegamenti tra le diverse parti di contenuto e di organizzarle perché possano essere recuperate in modo efficace. L'indicizzazione ha lo scopo di organizzare i vettori in modo che concetti simili vengano archiviati in coordinate adiacenti, ad esempio, "tè" e "caffè" si troveranno probabilmente in posizioni attigue, come anche "bevande calde". Elementi concettualmente lontani come "telefoni cellulari" e "televisori" saranno invece posizionati altrove. La distanza o la vicinanza tra due punti all'interno del database vettoriale consente al modello di decidere quali informazioni recuperare e utilizzare nell'output fornito in risposta alla query.
     

  • Archiviazione: i dati combinati provenienti da fonti diverse (ossia i documenti esterni selezionati e l'LLM) vengono salvati in un unico repository.
     

Fase 2: recupero

  • Una volta catalogati i dati all'interno del database vettoriale, sta agli algoritmi ricercare e recuperare parti di informazioni attinenti al prompt e alla query dell'utente.  Framework come LangChain supportano molti algoritmi di recupero diversi, ad esempio quelli basati su similarità a livello semantico, di metadati e documenti di livello superiore.

    In ambienti consumer a dominio aperto le informazioni vengono recuperate da documenti indicizzati disponibili su Internet, a cui si ha accesso tramite le API delle fonti di informazione, mentre in ambienti aziendali a dominio chiuso, dove le informazioni devono essere mantenute private e protette da accessi esterni, l'architettura RAG garantisce un recupero locale e sicuro.

    Solo al termine di questi processi i dati vengono inseriti nel prompt e inviati all'LLM affinché li elabori.
     

Fase 3: generazione

  • Output: risposta presentata all'utente. Se la RAG ha funzionato correttamente, la risposta sarà accurata e fornita sulla base di conoscenze verificate.

Utilizza i framework di IA progettati da Red Hat Consulting 

Quando si crea un modello di apprendimento automatico è fondamentale trovare documenti sorgenti affidabili, poiché l'output dipende dai dati inseriti. I sistemi che producono risultati contenenti distorsioni o bias sono un problema grave per qualsiasi organizzazione utilizzi l'IA. È pertanto necessario fare attenzione che i documenti sorgenti non contengano informazioni pregiudiziose o non veritiere, ossia che privilegiano sistematicamente un gruppo rispetto a un altro, per evitare che questi stessi pregiudizi si riflettano nell'output.

Durante la selezione dei dati per l'architettura RAG, è inoltre fondamentale verificare che includano documenti sorgenti aggiornati e in cui vengono citate le fonti. Infine, l'apporto di esperti umani è ancora importante per valutare l'output prima che un pubblico più ampio utilizzi il modello e anche dopo che questo è stato distribuito per la produzione.

Analizzare i diversi metodi di addestramento basati su dati confrontandoli con un'architettura RAG può influire positivamente su scelte strategiche, ad esempio aiutando a determinare le risorse IA da utilizzare. È anche possibile che siano necessari più metodi alla volta. Di seguito vengono analizzati alcuni metodi e procedure comuni per l'elaborazione dei dati a confronto con la tecnica RAG.

Confronto fra RAG e ingegneria dei prompt
L'ingegneria dei prompt costituisce il metodo più semplice e meno tecnico per interagire con un LLM, in quanto consiste nella redazione di una serie di istruzioni che il modello deve seguire per generare un output adeguato in base a una query dell'utente. Rispetto alla RAG richiede meno dati (perché utilizza solo quelli impiegati per l'addestramento iniziale del modello) ed è meno costosa (perché si avvale solo di strumenti e modelli esistenti), ma non è in grado di generare output basati su informazioni aggiornate o soggette a obsolescenza o modifica. Inoltre, l'effettiva qualità dell'output dipende dal modo in cui viene formulato il prompt, quindi le risposte ottenute possono essere incoerenti.

L'ingegneria dei prompt deve essere preferita alla RAG se si cerca una soluzione intuitiva ed economica per estrarre informazioni su argomenti generici, che non richiedano molti dettagli.

Confronto fra RAG e ricerca semantica
La semantica indaga il significato delle parole. Una ricerca di questo tipo, dunque, analizza i dati dal punto di vista dello scopo e del contesto della query.

Si avvale di NLP e apprendimento automatico per decodificare la query e individuare i dati che potrebbero fornire risposte più rilevanti e accurate rispetto a quelle che fornirebbe una semplice ricerca per parole chiave. In sostanza, colma il divario fra la query digitata dall'utente e i dati impiegati per generare la risposta.

Ad esempio, digitando una query su una "vacanza da sogno", la ricerca semantica supporterà il modello nell'individuare informazioni specifiche che più si avvicinano al concetto di "vacanza ideale" dell'utente che ha sottoposto la richiesta. Piuttosto che offrire una risposta legata al sogno, quindi, fornirà una risposta più legata all'intento, ad esempio un pacchetto per una vacanza al mare.

La ricerca semantica fa parte della RAG, che a sua volta utilizza questo tipo di ricerca durante la fase di recupero delle informazioni dal database vettoriale per ottenere risultati che siano rilevanti per il contesto e aggiornati.

Confronto fra RAG e preaddestramento
Per preaddestramento si intende la fase iniziale dell'addestramento degli LLM che permette di acquisire una comprensione della lingua partendo da un ampio set di dati. Emulando il processo di apprendimento del cervello umano espletato con la creazione di collegamenti neurali, questo metodo realizza una rete neurale interna all'LLM che viene addestrata utilizzando i dati.

Rispetto alla RAG è più costoso, richiede inoltre più tempo oltre a un numero maggiore di risorse di elaborazione, nell'ordine di migliaia di GPU. Il preaddestramento è consigliabile qualora si abbia a disposizione un set di dati di dimensioni sostanziose (sufficiente per influenzare in modo significativo il modello) e si desideri fornire all'LLM una comprensione di base di alcuni argomenti o concetti.

Confronto fra RAG e fine tuning
Se l'architettura RAG definisce le informazioni necessarie per l'LLM, il fine tuning stabilisce il funzionamento del modello. Agisce su un LLM già addestrato e ne perfeziona la preparazione con un set di dati di dimensioni più ridotte e mirate; consente inoltre al modello di apprendere schemi comuni che non è necessario aggiornare nel tempo.

Sebbene a un primo sguardo RAG e fine tuning possano sembrare simili, presentano comunque delle differenze. Per esempio, il fine tuning richiede molti dati e una notevole quantità di risorse computazionali per la creazione dei modelli, a meno che non vengano utilizzate tecniche di fine tuning efficiente dei parametri (PEFT).  

La RAG, invece, può recuperare le informazioni da un singolo documento e necessita di meno risorse computazionali. Inoltre, mentre è provato che la RAG riduca le allucinazioni, eseguire il fine tuning di un LLM per ottenere lo stesso risultato è un processo molto più complesso e dispendioso in termini di tempo.

Spesso è possibile utilizzare per un modello sia un'architettura RAG che il fine tuning. Quest'ultimo deve essere tuttavia preferito qualora si abbia accesso a una notevole quantità di dati e risorse, se si prevede che i dati presumibilmente non verranno aggiornati, oppure se si lavora su attività altamente specializzate che richiedono un'analisi più personalizzata rispetto a quella offerta dal formato question answering tipico della RAG. 

Scopri di più sulle differenze tra RAG e fine tuning

L'ambito di adozione dell'architettura RAG è molto ampio, di seguito alcuni dei più frequenti scenari di utilizzo.

  • Assistenza clienti: programmare un chatbot capace di rispondere alle query dei clienti con conoscenze specifiche su un preciso documento può ridurre i tempi necessari per la risoluzione dei problemi e consentire di ottenere un sistema di assistenza più efficace.

  • Generazione di informazioni: la RAG ti consente di estrapolare dati utili da documenti di cui già disponi. Un'architettura RAG può essere impiegata per implementare in un LLM report annuali, documenti di marketing, commenti sui social media, recensioni degli utenti, risultati di sondaggi, oppure altre tipologie di contenuti, in modo che elabori risposte utili a comprendere meglio il materiale a disposizione. Va ricordato che la RAG può collegarsi direttamente a fonti che vengono aggiornate spesso come feed dei social media, siti Web o altre risorse simili per ottenere risposte utili in tempo reale.

  • Informazioni mediche: l'architettura RAG consente di migliorare i sistemi che forniscono informazioni o consigli medici. Grazie alla capacità di verificare elementi come la storia clinica di un paziente, i servizi di prenotazione degli appuntamenti e le più recenti linee guida e ricerche mediche, la RAG mette in comunicazione i pazienti con l'assistenza e i servizi di cui hanno bisogno.

Red Hat® AI offre un portafoglio di prodotti di IA sviluppati a partire dalle soluzioni che i nostri clienti già conoscono. Grazie a questa base i nostri prodotti sono affidabili, flessibili e scalabili.

Grazie alle soluzioni per l'IA di Red Hat, le organizzazioni possono:

  • Adottare l'IA rapidamente per promuovere l'innovazione.
  • Semplificare l'erogazione di soluzioni di IA.
  • Eseguire il deployment in tutti gli ambienti.

Esplora le soluzioni per l'IA di Red Hat 

Controllo e collaborazione per gli sviluppatori

Le soluzioni per l'IA di Red Hat consentono alle organizzazioni di implementare l'architettura RAG nella propria procedura LLMOps offrendo l'infrastruttura dei carichi di lavoro alla base.

In particolare, Red Hat® OpenShift® AI è una piattaforma MLOps, flessibile e scalabile, che offre agli sviluppatori gli strumenti per creare, distribuire e gestire le applicazioni basate sull'intelligenza artificiale. Fornisce l'infrastruttura alla base per supportare un database vettoriale, creare integrazioni, inviare query agli LLM e utilizzare il meccanismo di recupero necessario per produrre un risultato.

Le soluzioni per l'IA di Red Hat offrono anche meccanismi di allineamento dei modelli per migliorare gli LLM. La soluzione si chiama InstructLab ed è caratterizzata da un approccio open source orientato alla community per il miglioramento delle funzionalità degli LLM.

Grazie alla collaborazione continua e supportata, puoi personalizzare le applicazioni dei modelli di IA per i tuoi scenari di utilizzo aziendali in modo semplice e rapido. 

Scopri Red Hat OpenShift AI 

Crea un'applicazione RAG

Red Hat OpenShift AI è una piattaforma per creare progetti di data science e distribuire applicazioni abilitate all'IA. Puoi integrare tutti gli strumenti che ti servono per supportare la tecnologia retrieval augmented generation (RAG), un metodo per ottenere le risposte dell'IA dai tuoi documenti di riferimento. Quando connetti OpenShift AI con NVIDIA AI Enterprise, puoi fare alcune prove con gli LLM (Large Language Model) per trovare il modello ideale per la tua applicazione.

Sviluppa una pipeline per i documenti

Se vuoi usare la tecnologia RAG, per prima cosa devi inserire i tuoi documenti in un database vettoriale. Nella nostra app di esempio, integriamo una serie di documenti di prodotto in un database Redis. Visto che questi documenti vengono modificati spesso, possiamo creare una pipeline da eseguire periodicamente per tale processo in modo da disporre sempre della versione più recente.

Sfoglia il catalogo degli LLM

NVIDIA AI Enterprise ti offre l'accesso a un catalogo di diversi modelli LLM, così potrai fare diverse prove e scegliere quello che offre risultati migliori. I modelli sono ospitati nel catalogo delle API di NVIDIA. Una volta che hai impostato un token API, puoi eseguire il deployment di un modello utilizzando la piattaforma di distribuzione dei modelli NVIDIA NIM direttamente da OpenShift AI.

Scegli il modello giusto

Mentre fai alcune prove con i diversi modelli LLM, i tuoi utenti possono valutare ogni risposta generata. Puoi configurare una dashboard di monitoraggio Grafana per confrontare le valutazioni, oltre che i tempi di risposta e di latenza di ogni modello. Potrai quindi sfruttare questi dati per scegliere il miglior modello LLM da usare nel tuo ambiente di produzione.


 

An architecture diagram shows an application built using Red Hat OpenShift AI and NVIDIA AI Enterprise. Components include OpenShift GitOps for connecting to GitHub and handling DevOps interactions, Grafana for monitoring, OpenShift AI for data science, Redis as a vector database, and Quay as an image registry. These components all flow to the app frontend and backend. These components are built on Red Hat OpenShift AI, with an integration with ai.nvidia.com.

 

Scarica il PDF

Hub

Il blog ufficiale di Red Hat

Leggi gli articoli del blog di Red Hat per scoprire novità e consigli utili sulle nostre tecnologie, e avere aggiornamenti sul nostro ecosistema di clienti, partner e community.

Tutte le versioni di prova dei prodotti Red Hat

Grazie alle versioni di prova gratuite dei prodotti Red Hat potrai acquisire esperienza pratica, prepararti per le certificazioni o capire se il prodotto che hai scelto è giusto per le esigenze della tua organizzazione.

Continua a leggere

Cos'è il fine tuning efficiente dei parametri (PEFT)?

Il PEFT consiste in un insieme di tecniche grazie alle quali è possibile ottimizzare solo una parte dei parametri di un LLM e quindi risparmiare risorse.

LoRA e QLoRA a confronto

LoRA (Low-Rank Adaptation) e QLoRA (Quantized Low-Rank Adaptation) sono due tecniche di addestramento dei modelli di IA.

Che cos'è vLLM?

vLLM è una raccolta di codice open source che rende più efficienti i calcoli eseguiti dai modelli di linguaggio.

AI/ML: risorse consigliate

Articoli correlati