Sfruttando gli LLM sulla base di conoscenza specifica del tuo dominio

May 08 2023
Con RAG to Riches: esercitare il potere degli LLM utilizzando la generazione aumentata di recupero per parlare con i tuoi dati
Fai una domanda a ChatGPT sull'origine della parola "maratona" e ti dirà accuratamente come Erodoto descrisse la leggendaria corsa di 42 km che Fidippide completò da Maratona ad Atene prima di crollare per l'esaurimento. Ma per quanto riguarda la lista di ricette di mia nonna? Certo, posso digitalizzare quelle ricette, nessun problema.

Fai una domanda a ChatGPT sull'origine della parola "maratona" e ti dirà accuratamente come Erodoto descrisse la leggendaria corsa di 42 km che Fidippide completò da Maratona ad Atene prima di crollare per l'esaurimento.

Ma per quanto riguarda la lista di ricette di mia nonna? Certo, posso digitalizzare quelle ricette, nessun problema. Ma se volessi avere un consiglio su quale pasto preparare in base agli ingredienti nel mio frigo, al mio colore preferito e al mio umore della giornata?

Vediamo se è possibile senza crollare per la stanchezza.

LLM, raggiungi i tuoi limiti... e superali

Un LLM è un Large Language Model. GPT-4 di OpenAI è un esempio, LLamA di Meta ne è un altro. Facciamo la scelta consapevole qui di attenerci al termine generale LLM per fare riferimento a questi modelli. Ricorda: ciascuno di questi modelli è stato addestrato su un gigantesco set di dati (disponibili pubblicamente).

È stato ormai chiaramente dimostrato che questi LLM hanno una comprensione significativa del linguaggio generale e che sono in grado di (ri)produrre informazioni rilevanti per le informazioni che erano presenti nei loro dati di formazione. Questo è il motivo per cui strumenti generativi come ChatGPT si comportano sorprendentemente bene nel rispondere a domande su argomenti che l'LLM ha incontrato durante la sua formazione.

Ma ciò che rimane al di fuori della portata diretta di quegli enormi LLM sono i dati che sono così preziosi all'interno di ogni organizzazione: la base di conoscenza interna. La domanda che si pone così massicciamente è:

Come possiamo sfruttare il potere di questi LLM per sbloccare le informazioni archiviate in una base di conoscenza specifica su cui non erano originariamente formate?

Oh ok, quindi per fare questo, non possiamo semplicemente introdurre la nostra base di conoscenza interna come dati extra su cui dovrebbe essere addestrato il LLM? Oppure, se vuoi, possiamo mettere a punto il LLM sulla nostra specifica base di conoscenze.

Sì, molto probabilmente puoi. Ma per una risposta affidabile alle domande, potrebbe non essere la strada da percorrere.

Perché la messa a punto non sempre lo taglierà

Incontra Billy il topo di biblioteca. Billy è un grande modello linguistico e ha divorato un'enorme quantità di informazioni online, potenziandosi con un'enorme conoscenza. Bily tuttavia, per quanto intelligente, non ha letto i libri nella tua specifica biblioteca di casa.

La messa a punto è questa: presentare Billy the Bookworm con tutti i libri nella tua base di conoscenza molto specifica e lasciarlo divorare tutte quelle gustose informazioni extra. In questo modo, il topo di biblioteca LLM Billy non solo conosce tutte quelle informazioni generali, ma "sa" anche molto sui contenuti della tua specifica base di conoscenza.

Approccio classico di messa a punto su dati specifici del dominio (tutte le icone di flaticon)

Congratulazioni, attraverso questo processo di messa a punto hai trasformato Billy in un Billy molto specifico che sa così tanto del tuo dominio specifico! Di seguito mostriamo come potresti iniziare a far lavorare Billy. Ponendo domande al tuo topo di biblioteca migliorato, puoi aspettarti risposte che utilizzano sia le informazioni dal suo gigantesco set di addestramento generale sia le informazioni memorizzate nella tua specifica base di conoscenza.

Sfruttando il LLM ottimizzato per porre domande sulla tua base di conoscenza interna.

Sebbene certamente potente, il problema cruciale con questo approccio risolutivo è che hai ancora poche intuizioni su come il tuo topo di biblioteca ha trovato le sue risposte. Inoltre, la messa a punto di un LLM ha le sue (costose) conseguenze.

Elenchiamo i motivi principali per cui la messa a punto di Billy non va bene:

  • Nessuna chiarezza della fonte . È difficile prevenire le allucinazioni e il tuo LLM non ha una chiara distinzione tra conoscenza "generale" e "specifica".
  • Nessuna restrizione di accesso. Immagina un caso in cui alcuni utenti dovrebbero essere in grado di interrogare le informazioni di documenti strategici mentre altri no. Come affronteresti questo? Il tuo Billy ben sintonizzato sa tutto, non può scegliere di tralasciare la conoscenza al momento dell'inferenza.
  • Ospitare un LLM è costoso. Una volta che hai un LLM messo a punto, devi continuare a farlo girare. Un modello linguistico di grandi dimensioni è beh... grande. I costi per mantenerlo attivo e funzionante aumenteranno. I benefici superano questi costi?
  • Ottimizzazione delle ripetizioni. Il riaddestramento del modello è necessario quando si desidera che il modello rifletta le modifiche apportate alla knowledge base.

Con RAG to Riches

L'idea alla base di Retrieval-Augmented Generation (RAG) è piuttosto semplice. Ricorda, l'obiettivo è quello di sbloccare le informazioni nella nostra base di conoscenza. Invece di scatenare (cioè mettere a punto) il nostro topo di biblioteca su di esso, indicizziamo in modo completo le informazioni della nostra base di conoscenza.

Indicizzando gli incorporamenti della tua knowledge base interna, sblocchi le funzionalità di ricerca intelligente.

Nello schema sopra, illustriamo come lo Smart Retriever funziona come un bibliotecario. Idealmente, il bibliotecario ha una perfetta conoscenza di ciò che è nella sua biblioteca. Per un visitatore che ponesse una certa domanda, saprebbe esattamente quale capitolo di quale libro consigliare.

A un livello più tecnico, questo descrive un motore di ricerca semantico . In questo caso, gli embedding sono rappresentazioni vettoriali di sezioni del documento e consentono una descrizione matematica del significato effettivo memorizzato in ciascuna sezione. Confrontando gli incorporamenti, possiamo determinare quali sezioni di testo hanno un significato simile a quali altre sezioni di testo. Questo è fondamentale per il processo di recupero visualizzato di seguito.

Sfruttando il nostro Smart Retriever, possiamo costringere il nostro generatore ad attenersi al contenuto della nostra base di conoscenza che è più rilevante per rispondere alla domanda. Et voilà: generazione aumentata di recupero.

In gioco ci sono due componenti cruciali:

  1. Lo Smart Retriever (ovvero il bibliotecario)
  2. Il generatore (ovvero il topo di biblioteca)

Punti salienti di questa configurazione basata su RAG

  1. Chiara indicazione della fonte su cui si basava la risposta. Consentire la convalida della risposta restituita dal generatore.
  2. È molto improbabile che abbia allucinazioni , limitando il nostro componente generatore al corpus della nostra base di conoscenza, ammetterà di non poter formulare una risposta quando non sono state trovate fonti rilevanti dal retriever.
  3. Indice di ricerca gestibile. Una base di conoscenza è una cosa viva, quando cambia, possiamo adattare il nostro indice di ricerca per riflettere tali cambiamenti.

Messa a punto rivisitata

Si noti che nella sezione precedente, abbiamo scartato la messa a punto come un'opzione preziosa perché avevamo scarso controllo sulla chiarezza della sorgente , aumentando così il rischio di allucinazioni.

Va notato che l'approccio RAG, alimentato da un LLM generale, funziona bene solo fintanto che la base di conoscenza specifica non contiene gergo super specifico che il LLM non può comprendere dalla sua formazione generale.

Immagina di aver bisogno che le risposte della tua soluzione seguano "il tono e il gergo" presenti nella tua base di conoscenza. In questo caso la messa a punto del tuo LLM sembra meno evitabile.

Potrebbe essere un approccio valido essere in grado di gestire un gergo specifico e quindi incorporare il tuo LLM ottimizzato nell'architettura RAG per raccogliere i vantaggi combinati. Invece di lavorare con un normale topo di biblioteca, useresti il ​​tuo Billy specificamente addestrato per alimentare il generatore e/o i componenti dello Smart Retriever.

Perché ora? Cosa c'è di nuovo?

Ottima domanda.
La ricerca semantica (recupero intelligente) esiste da un po' di tempo, così come l'IA generativa (alcune forme primitive esistono da decenni).
Tuttavia, negli ultimi mesi abbiamo assistito a progressi fondamentali.

A livello tecnologico, abbiamo recentemente assistito a grandi balzi in avanti nelle prestazioni LLM. Questi hanno un impatto positivo sulla soluzione RAG su due livelli:

  • Embedding (ad es. Embedding API di OpenAI o PaLM di Google )
  • Capacità generative (ad es. la soluzione ChatGPT di OpenAI )

Quindi, sebbene versioni probabilmente mediocri di RAG sarebbero state possibili per un bel po' di tempo, i miglioramenti tecnologici e l'aumento della trazione si traducono in una fruttuosa opportunità di mercato.

Sfide sulla strada per il successo

In questa sezione, ci proponiamo di presentarvi alcune delle principali sfide legate alla creazione di una soluzione RAG di successo.

  • Forte dipendenza dalle prestazioni dello Smart Retriever.
    La qualità delle risposte fornite dal tuo Componente Generativo dipenderà direttamente dalla pertinenza delle informazioni fornitegli dallo Smart Retriever. Come accennato in precedenza, possiamo ringraziare i progressi LLM per averci fornito incorporamenti di testo ricchi e potenti. Ma il recupero di questi incorporamenti esclusivamente tramite API potrebbe non essere l'opzione migliore. Dovresti essere molto consapevole quando progetti il ​​tuo componente di ricerca semantica, forse la tua base di conoscenza ha un gergo specifico e potresti aver bisogno di un componente personalizzato (cioè messo a punto) per gestirlo. Una guida pratica più approfondita sulla ricerca semantica può essere trovata in questo blogpost [1] .
  • Compromesso da fare nella restrizione per attenersi alle informazioni nella base di conoscenza.
    Come spiegato nell'architettura RAG, possiamo forzare il nostro componente generativo LLM a limitarsi alle informazioni trovate nei documenti pertinenti. Sebbene ciò garantisca che l'allucinazione (cioè le risposte prive di senso) abbia poche possibilità, significa anche che stai sfruttando a malapena le informazioni che il tuo LLM possiede. Potresti desiderare che anche la tua soluzione utilizzi quella conoscenza, ma forse solo quando richiesto dall'utente.
  • Design conversazionale per consentire dialoghi complessi.
    Mentre le nostre rappresentazioni sopra hanno rappresentato il comportamento dell'utente come una semplice "domanda one-shot", spesso il tuo utente potrebbe voler ingrandire la risposta fornita dalla tua soluzione (in una conversazione in stile ChatGPT ). Fortunatamente, esistono strumenti per aiutarti in questa battaglia. Il langchainframework offre una mano per ottenere questo risultato giusto.
  • Prompt engineering come un modo per guidare la generazione verso il successo.
    Per ottenere la risposta giusta dal tuo componente generativo, devi dirgli esattamente che tipo di output ti aspetti. Nel complesso, questo è lontano dalla scienza missilistica. Ma ottenere la configurazione rapida giusta per il tuo caso d'uso richiede tempo e merita sufficiente attenzione. Potrebbe essere utile esaminare i sistemi di gestione dei prompt per assicurarsi di poter tenere traccia di quali suggerimenti funzionano meglio per quali situazioni.
  • Scegliere il giusto LLM: quanto costa e dove vanno i miei dati?
    In tutto questo testo, non abbiamo fatto alcuna scelta esplicita in merito a quali LLM utilizzare nella tua soluzione. Quando scegli quale LLM (API) utilizzare, assicurati di prendere in considerazione la privacy e le restrizioni sui costi. Ci sono già alcune opzioni decenti là fuori. Abbiamo GPT di OpenAI, LLaMA di Meta , PaLM di Google e con Elon Musk che afferma di unirsi alla scena LLM, chissà dove andranno a finire le cose. La notizia entusiasmante è: arriveranno più opzioni e la concorrenza dovrebbe aumentare le prestazioni di LLM e abbassare i prezzi.
  • Ottenere e mantenere la tua soluzione LLM in produzione (LLMOps).
    Come per tutte le soluzioni di intelligenza artificiale mature: costruirle è una cosa, ottenerle/mantenerle in produzione è un'altra. Il campo di LLMOps si concentra sull'operazionalizzazione di LLM. Monitorare le prestazioni della tua soluzione basata su LLM, mantenere aggiornati la tua knowledge base e l'indice di ricerca, elaborare la cronologia delle conversazioni...
    Prima di lanciare la tua soluzione LLM in produzione, pensa saggiamente a come mantenerla e a come mantenerla fruttuosa lunga corsa.

Sporcarsi le mani con uno straccio

Se il tuo interesse è suscitato dal concetto di Retrieval-Augmented Generation, potresti chiederti:

Ho quello che serve per provare una soluzione basata su RAG?

Bene, se hai:

  • conoscenza specifica: un database moderato (preferibilmente organizzato) di "articoli di conoscenza" che contengono informazioni utili che non sono facilmente reperibili sul world wide web (ad esempio documenti tecnici, linee guida per l'onboarding, ticket di supporto gestiti...)
  • valore aziendale : una definizione chiara del valore aziendale se tali informazioni potessero essere sbloccate per gli utenti previsti

Come esperimento, abbiamo recentemente creato una piccola demo per mostrare come questa tecnologia può essere sfruttata per aiutare il personale del governo a rispondere più facilmente alle interrogazioni parlamentari .
In questo caso, la conoscenza specifica è costituita da:

  • una serie di documenti legislativi fiamminghi
  • una serie di interrogazioni parlamentari del passato
  • migliorare l'efficienza suggerendo automaticamente le risposte alle interrogazioni parlamentari basate sulla base di conoscenze fiamminga
  • migliorare la trasparenza e l'adozione da parte degli utenti attraverso citazioni esplicite
  • Screenshot della soluzione dimostrativa costruita attorno al caso di "domanda per aiutare a rispondere alle interrogazioni parlamentari"

Riferimenti