Vai al contenuto

Come e perché usare RAG per i modelli linguistici su larga scala?

Scopri l’uso di Retrieval-Augmented Generation (RAG) per migliorare la funzionalità dei modelli linguistici, garantendo risposte più pertinenti e aggiornate.

I modelli linguistici su larga scala (LLMs) hanno permesso notevoli progressi nel trattamento di testi, audio, immagini e video, rendendoli strumenti versatili per molteplici applicazioni. Tuttavia, una delle principali preoccupazioni è che questi modelli possano deviare dallo scopo specifico per cui sono stati creati, come rispondere alle domande dei clienti o assistere i dipendenti nel recupero delle informazioni. Anche se la tecnica del “prompt engineering” potrebbe aiutare a focalizzare i compiti, le risposte possono comunque risultare casuali e non deterministiche. Qui interviene il Retrieval-Augmented Generation (RAG), una soluzione che contribuisce a risolvere questi problemi.

Perché utilizzare RAG?

I motivi principali per considerare l’uso della tecnica RAG sono:

  • Fornire un contesto e una base solida al modello linguistico su larga scala: Con RAG, il modello non risponde basandosi solo sui dati di addestramento originali, ma utilizza un subset di dati pertinenti per fornire risposte specifiche.
  • Superare la limitazione dei dati di addestramento obsoleti: I modelli GPT sono addestrati su dati raccolti in un certo periodo di tempo e non possono aggiornarsi automaticamente se non integrando nuovi dati attraverso RAG.
  • Costi iniziali più bassi rispetto ad altre soluzioni come il fine-tuning: Il fine-tuning, che comporta un nuovo addestramento parziale del modello, richiede significativamente più risorse computazionali e finanziarie.
  • Potenziamento della capacità di recupero dati con un modello generativo potente: RAG permette di recuperare i dati in modo tradizionale per poi riformattarli e strutturarli attraverso il modello linguistico.

Cos’è RAG?

RAG consiste nel recuperare intelligentemente un subset di dati dai data store per fornire al modello linguistico conoscenze contestuali specifiche, migliorando così le risposte a domande o richieste dell’utente. È essenziale che il recupero dei dati sia accurato, poiché il modello risponderà basandosi solo sui dati recuperati e se questi sono errati, le risposte saranno non pertinenti.

Spesso si vede l’uso di RAG con database a vettori, ma questa tecnica non è limitata a tali database. Può essere utilizzata anche con database SQL o No-SQL esistenti, inviando la risposta della query al modello linguistico per la riformulazione in risposte testuali più naturali.

Perché i database a vettori sono comunemente utilizzati con RAG?

Quando un utente pone una domanda in linguaggio naturale, applicare una ricerca di testo completo potrebbe non essere sufficiente per trovare informazioni pertinenti. I database a vettori risolvono questo problema memorizzando gli “embedding vettoriali” che rappresentano il significato semantico delle parole, permettendo così di effettuare ricerche più precise e pertinenti.

Come implementare RAG?

Esistono due modi principali per implementare RAG:

Database preesistenti:

  • Creare un nuovo deployment di Azure OpenAI Chat.
  • Ottenere la chiave API del modello e integrarla nell’applicazione.
  • Trasmettere i record di ritorno dal database al modello.
  • Restituire all’utente la risposta elaborata dal modello.

Database a vettori:

  • Scegliere un database a vettori.
  • Creare un deployment di “Azure OpenAI Embeddings”.
  • Ottenere la chiave API del modello e utilizzarla.
  • Scegliere le colonne/chiavi da convertire in embedding vettoriali.
  • Effettuare chiamate API per generare gli embedding e memorizzarli nel database.
  • Convertire la domanda dell’utente in embedding vettoriali e confrontare la similarità con quanto presente nel database.
  • Trasmettere i record di ritorno al modello linguistico.
  • Restituire la risposta riformulata all’utente.

Un esempio di implementazione pratica è disponibile su GitHub, (link a sample Azure-Samples/Cosmic-Food-RAG-app).

Ulteriori letture