Come potenziare i chatbot aziendali: l’approccio Retrival Augmented Generation, le tecniche di Prompting e i LLM

Invito alla lettura del libro di Louis-François Bouchard e Louie Peters, Building LLMs for Production: Enhancing LLM Abilities and Reliability with Prompting, Fine-Tuning, and RAG, 2024. Un affascinante viaggio attraverso le buone pratiche per adattare i Large Language Model ai contesti aziendali, migliorandone le prestazioni con tecniche avanzate di integrazione e personalizzazione

Obiettivo del libro

“Building LLMs for Production” è un libro che mira a illustrare come adattare i Large Language Model (LLM) a contesti di uso specifici (per es. in ambito aziendale per erogare assistenza tecnica), ottenendo un livello di accuratezza e affidabilità tale da “soddisfare utenti paganti”, secondo la formulazione degli autori.

I LLM nella loro configurazione standard, che sono un sottogruppo di Foundation Model specializzati in compiti linguistici, sono modelli generalisti, pre-allenati su grandi quantità di dati eterogenei e così flessibili da riuscire a eseguire attività molto diverse tra loro, come rispondere a domande, riassumere documenti, tradurre lingue e completare frasi.

Ma i LLM non sono esperti del knowledge di un’azienda, non conoscono lo stile della comunicazione aziendale e non sanno che, in un determinato contesto, le risposte vanno formattate secondo regole precise.

Le tecniche di Prompting, Retrival Augmented Generation (RAG) e Fine-Tuning spiegate nel libro sono funzionali ad ampliare e approfondire il sapere del modello, nonché a espandere le sue capacità di svolgere compiti specifici.

I Large Language Model (LLM)

I modelli linguistici di grandi dimensioni sono uno dei pilastri del funzionamento dei chatbot aziendali.

In fase di addestramento (cioè prima di poter essere usati da applicazioni come per es. gli assistenti virtuali), i modelli creano rappresentazioni ricche e profonde di grandi corpora di testi, catturandone aspetti grammaticali, sintattici e semantici.

I Transformer, che sono architetture di Deep Learning, stanno alla base dell’allenamento non supervisionato dei modelli linguistici. Aspetti importanti dei trasformatori sono:

  • Attenzione (Attention Mechanism): cuore dell’architettura Transformer è il meccanismo di Self-Attention, che permette al modello di “tenere d’occhio” l’intero contesto di una sequenza di parole, dando maggiore peso a quelle più rilevanti per il significato della frase. L’auto-attenzione aiuta a catturare le relazioni a lungo raggio presenti nel testo
  • Comprensione grammaticale e sintattica: i Transformer apprendono le strutture linguistiche osservando grandi quantità di dati testuali. Durante l’addestramento, il modello impara a predire le relazioni tra le parole, identificando le dipendenze (ad esempio, soggetto-verbo) anche se le parole non sono vicine tra loro
  • Comprensione semantica: oltre alla grammatica e alla sintassi, i Transformer sono molto efficaci nel cogliere il significato delle parole e delle frasi in base al contesto. Grazie al meccanismo di auto-attenzione, il modello può identificare come una parola assume diversi significati a seconda delle parole circostanti
  • Parallelizzazione: diversamente da altre architetture, i Transformer elaborano tutte le parole di una sequenza contemporaneamente, il che li rende molto più efficienti ed efficaci nel gestire testi lunghi e complessi.

L’architettura dei trasformatori e il meccanismo di auto-attenzione permettono di allenare modelli molto grandi, spesso composti da centinaia di miliardi di parametri, che sono in grado di comprendere, interpretare e generare testi in linguaggio naturale seguendo un approccio statistico-probabilistico.

GPT di OpenAI e altri LLM rendono possibile il funzionamento dei chatbot grazie alle loro abilità linguistiche.

La Retrival Augmented Generation (RAG)

Per risultare utile, l’assistente virtuale non deve però attingere dal sapere “generalista” che il LLM ha acquisito in fase di addestramento, ma da quello specifico che l’azienda ha redatto e validato, e che intende mettere a disposizione di clienti, collaboratori e/o lead.

Questo approccio è definito RAG, poiché la generazione della risposta da parte del modello linguistico è arricchito da contenuti rilevanti recuperati dalla knowledge base aziendale.

La Retrival Augmented Generation è un altro pilastro del funzionamento dei chatbot aziendali.

Per rendere interrogabili i manuali tecnici realizzati dall’azienda e/o forniti da fornitori, le FAQ, i contenuti del CRM e/o del sistema di ticketing, nonché gli eventuali altri documenti non strutturati, ecc., essi devono subire un processo di Embedding e di Indexing in un Vector Store.

In quanto tali i testi della documentazione tecnica e di prodotto non sono infatti ricercabili dai moduli di Information Retrival (IR = reperimento dell’informazione) integrati negli assistenti virtuali: per renderli tali è necessario rappresentare ogni segmento di testo in forma numerica mediante un vettore, che ne riflette le caratteristiche grammaticali, sintattiche e semantiche. Tale processo è chiamato Embedding. Gli embedding del testo sono poi indicizzati in un database vettoriale che rappresenta gli embedding come punti in uno spazio multidimensionale. Embedding con caratteristiche simili sono vicini fra loro.

Quando il modulo di Information Retrival esegue una ricerca nella knowledge base aziendale, facendo seguito alla domanda dell’utente, esso misura la somiglianza semantica tra il quesito, trasformato anch’esso in embedding, e i contenuti indicizzati, identificando gli embedding più vicini, cioè le risposte con valore semantico simile. Questo approccio permette di trovare informazioni rilevanti in contenuti non strutturati e anche se la domanda non corrisponde esattamente a termini o frasi presenti nel knowledge aziendale.

Una volta recuperati i contenuti rilevanti, il chatbot li passa al LLM all’interno del Prompt, assieme alla domanda dell’utente e alle istruzioni su come formulare la risposta. Il modello linguistico li usa per generare il testo da visualizzare all’utente.

In sintesi, nell’approccio RAG, il modulo di Information Retrival trova i contenuti pertinenti e il LLM li usa per rispondere in modo efficace e accurato. Il chatbot o assistente virtuale funge da orchestratore.

Alcune puntualizzazioni:

  • I testi, prima di diventare embedding, subiscono un processo di Text Splitting, che li suddivide in segmenti (Chunk) per rendere più efficiente ed efficace la successiva ricerca semantica. La segmentazione può avvenire per es. per numero di caratteri predefinito, in base a segni di interpunzione e/o a capo oppure per token. Laddove necessario, la sovrapposizione parziale fra chunk garantisce la conservazione della continuità semantica del testo
  • Per migliorare l’accuratezza della risposta, la domanda dell’utente può essere sottoposta a tecniche di Query Construction (per ottimizzarne la formulazione in base alla fonte dati su cui eseguire la ricerca; in questo ambito rientrano anche le tecniche di text-to-SQL, atte a trasformare il linguaggio naturale in query SQL da eseguire su database relazionali), Query Expansion (usare per es. Knowledge Graph per espandere la domanda con termini sinonimi e affini) o Query Trasformation (per modificare la struttura della domanda)
  • Se necessario, Output Parser specializzati possono verificare l’adeguatezza formale della risposta rispetto alle istruzioni.

Come funziona un chatbot in sintesi

  • La persona scrive la domanda nell’interfaccia del chatbot
  • Il modulo di Encoding fa l’embedding della domanda, rappresentandola in forma numerica
  • Il modulo di Information Retrival esegue la ricerca semantica, cioè confronta l’embedding della domanda e gli embedding indicizzati nel database vettoriale restituendo i contenuti con valore semantico simile
  • Mediante il Prompt, il chatbot trasmette al LLM la domanda della persona, i contenuti più rilevanti e le Istruzioni utili alla generazione della risposta. Il collegamento fra assistente virtuale e LLM può avvenire per es. via API (Application Programming Interface). Per es. le API di OpenAI permettono di collegare il chatbot a uno dei modelli di GPT
  • Il LLM genera la risposta in linguaggio naturale
  • Il chatbot visualizza la risposta alla persona.

Il Prompting

Al Prompt Engineering abbiamo già dedicato un post specifico (https://www.blogdikea.it/2024/08/29/prompt-engeneering-come-usare-il-linguaggio-per-trarre-il-meglio-da-modelli-linguistici-e-ai/), ma qui sottolineiamo alcuni temi affrontati da Bouchard e Peters.

Gli autori evidenziano che la tecnica di Few-Shot Prompting, che consiste nel fornire al LLM alcuni esempi di come svolgere il compito, è efficace quando il compito non è del tutto nuovo per il modello linguistico e non è molto complesso. Per insegnare al LLM compiti del tutto nuovi e complessi è opportuno valutare il ricorso a tecniche di Fine-Tuning del modello standard.

Quando chiediamo al LLM di eseguire calcoli, analisi logiche o ragionamenti in più fasi, può essere opportuno adottare la tecnica del Chain-of-Thought Prompting: nel prompt articoliamo il compito in più step, fornendo al modello alcuni esempi per ogni passaggio; poi chiediamo al LLM di rispondere svolgendo il suo ragionamento, in modo tale da facilitare le verifiche.

Efficace può essere anche in Role Prompting in cui indichiamo al modello qual è il suo ruolo in relazione all’utente (per es. di essere un “utile assistente” per riformulare in chiave SEO descrizioni di prodotto).

Gli autori espongono anche la tecnica della Self Consistency che consiste nel far generare multiple risposte dallo stesso modello e poi scegliere quella più ricorrente.

Il Fine-Tuning

Le varie tecniche di Fine-Tuning mirano a preparare il LLM a svolgere del tutto nuovi e complessi. Fra gli esempi citati da Bouchard e Peters vi sono: la sentiment analysis di tweet finanziari; l’estrazione, con tecniche di Named Entity Recognition, del nome di malattie e sostanze/medicinali da paper medici e l’individuazione di relazioni fra malattie e sostanze/medicinali; l’allenamento a rispondere in modo pacato e gentile a dispetto di qualsiasi provocazione da parte degli utenti.

Gli autori sottolineano che normalmente non è consigliabile eseguire il fine-tuning standard del modello, che adatta tutti i parametri del LLM, ma richiede ingenti quantità di dati di allenamento, ingenti risorse computazionali e rischia di sbilanciare il sistema, compromettendone abilità e prestazioni.

Oltre all’Instruction e al Supervised Fine-Tuning, che Bouchard e Peters spiegano come tecniche che stanno a cavallo tra Instructional Prompting e fine-tuning vero e proprio, il libro presenta per es. le tecniche di Low-Rank Adaptation e di Reinforcement Learning per personalizzazione il LLM.

La Low-Rank Adaptation (LoRA) è una tecnica di fine-tuning che preserva abilità e performance del modello standard, adattando solo alcuni parametri identificati in base al tipo di dati di allenamento.

Nel Reinforcement Learning, una tecnica di apprendimento automatico, il modello impara a compiere decisioni ottimali attraverso l’interazione con un ambiente. L’agente riceve feedback sotto forma di ricompense o penalità in base alle azioni intraprese, e il suo obiettivo è massimizzare il totale delle ricompense nel tempo, migliorando progressivamente le sue decisioni tramite tentativi ed errori.

Il rischio di allucinazioni

Partiamo dal presupposto che i LLM sono progettati comprendere, interpretare e generare linguaggio naturale, non per verificare informazioni e/o per distinguere tra informazioni vere e false, e che quindi sono intrinsecamente soggetti al rischio di generare risposte plausibili, ma non basate su fatti o dati reali (le cosiddette allucinazioni).

Bouchard e Peters sottolineano che RAG, richieste al LLM di citare le fonti e/o di esporre il proprio ragionamento, istruzioni, prompting ed eventuale fine-tuning sono tecniche atte a ridurre sensibilmente il rischio di allucinazioni da parte del modello in fase di generazione della risposta alla domanda dell’utente.

Gli Agenti

Dopo aver affrontato i tecnicismi del Deployment, cioè del passaggio in produzione di sistemi basati su LLM, Bouchard e Peters dedicano il capitolo finale a un tema emergente: gli agenti (Agents).

Si tratta di sistemi di intelligenza artificiale che usano i LLM per svolgere compiti complessi, usando all’occorrenza strumenti specifici che ampliano il sapere e le capacità del modello (Tool, come per es. per accedere alle API di Google Search ed eseguire una ricerca sul web; accedere a database relazionali per eseguire query SQL e recuperare dati precisi; usare una calcolatrice, ecc.).

Gli agenti sfruttano le migliori capacità di ragionamento degli LLM più avanzati, che in questo contesto svolgono la funzione di Reasoning Engine o Core.

Il Core, in base all’input dell’utente e all’output del tool, decide come portare avanti il flusso di lavoro, impiegando un tool ulteriore o generando la risposta in linguaggio naturale.

 Gli Assistants di OpenAI sono un esempio di una piattaforma per lo sviluppo di Agenti.

AutoGPT e BabyAGI sono esperimenti di Goal-Focused Agent, sistemi autonomi, tendenzialmente specializzati, che richiedono un intervento umano minimo. Comprendono l’obiettivo finale, individuano i passaggi necessari per coglierlo, svolgono i compiti eventualmente impiegando tool a supporto e adeguano strada facendo il flusso di lavoro a centrare il risultato.

Il progetto CAMEL di LangChain, fra gli altri, è dedicato alla messa a sistema di più agenti specializzati.

Lascia un commento