RAG vs fine-tuning per i chatbot aziendali
Ultimo aggiornamento:
Due modi per dare a un chatbot le tue conoscenze
Un modello linguistico generico sa molte cose sul mondo, ma niente dei tuoi orari di apertura, della tua politica sui resi o del prodotto che hai lanciato il mese scorso. Perché un chatbot risponda a domande sulla tua attività, le tue informazioni devono in qualche modo entrare nella conversazione.
Gli approcci più diffusi sono due. La retrieval-augmented generation, in breve RAG, tiene i tuoi contenuti fuori dal modello e gli passa le parti pertinenti al momento della domanda. Il fine-tuning modifica il modello stesso, continuando ad addestrarlo su esempi. Risolvono problemi diversi, e confonderli è uno dei motivi più comuni per cui i progetti di chatbot deludono.
Che cos'è la retrieval-augmented generation
Il RAG lavora in due fasi. Prima i tuoi contenuti vengono preparati: pagine web, documenti e FAQ vengono suddivisi in brevi passaggi, spesso chiamati chunk. Ogni passaggio viene trasformato in un embedding, una serie di numeri che ne rappresenta il significato, e salvato in un indice in cui si può cercare.
Poi, quando un visitatore fa una domanda, il sistema cerca nell'indice i passaggi che con più probabilità contengono la risposta. Questi passaggi finiscono nel prompt insieme alla domanda e a una serie di istruzioni, e il modello linguistico scrive la risposta a partire da essi. Il modello non ha imparato a memoria i tuoi contenuti. Rilegge ogni volta le parti pertinenti, un po' come un collaboratore che consulta il manuale prima di rispondere.
Dato che i fatti stanno nell'indice e non nel modello, aggiornare una risposta significa modificare un contenuto, non avviare un addestramento. Modifichi la pagina, la indicizzi di nuovo e la risposta successiva tiene conto della modifica. E poiché il sistema sa quali passaggi ha usato, può indicare da dove viene una risposta, oppure dire che non ha trovato nulla di pertinente.
Che cos'è il fine-tuning
Il fine-tuning prende un modello esistente e ne prosegue l'addestramento su una serie di esempi, di solito coppie formate da un input e dall'output desiderato. L'addestramento modifica i pesi interni del modello, così il nuovo comportamento diventa parte del modello stesso.
Il fine-tuning funziona bene per insegnare a un modello come rispondere: un tono coerente, un formato di output fisso, uno schema di classificazione o un compito ristretto ripetuto molte volte. È molto meno affidabile come modo per insegnargli dei fatti. Un modello sottoposto a fine-tuning non conserva il tuo listino prezzi come un documento da consultare. Assorbe schemi dagli esempi e, se gli chiedi un dettaglio visto solo una o due volte, può confonderlo con qualcos'altro o colmare il vuoto con un'ipotesi plausibile.
Il fine-tuning richiede anche dati di addestramento preparati: una serie di esempi coerenti e di qualità che mostrino esattamente il comportamento desiderato, più un nuovo ciclo di addestramento e valutazione a ogni cambiamento importante. Eliminare un fatto che il modello ha imparato non è semplice come cancellare una pagina: in genere bisogna riaddestrarlo con dati corretti.
RAG e fine-tuning a confronto
La tabella confronta i due approcci sui punti che contano di più per un chatbot che risponde a domande sulla tua attività.
| Retrieval-augmented generation (RAG) | Fine-tuning | |
|---|---|---|
| Cosa cambia | Ciò che il modello legge prima di rispondere | I pesi del modello, e quindi il suo comportamento predefinito |
| Tenere aggiornati i fatti | Modifica o indicizza di nuovo la fonte; la risposta successiva la usa | Servono nuovi dati di addestramento e un nuovo addestramento |
| Impegno per gli aggiornamenti | Basso: una modifica ai contenuti | Più alto: preparazione dei dati, addestramento e test |
| Risalire alla fonte di una risposta | Possibile, perché i passaggi recuperati sono noti | Non possibile in modo diretto; la conoscenza è distribuita nei pesi |
| Contenere le allucinazioni | Le istruzioni possono limitare le risposte ai contenuti recuperati e ammettere «non lo so» | Più difficile; il modello può rispondere con sicurezza in base a schemi |
| Dati necessari | Le pagine, i documenti e le FAQ che hai già | Esempi di input e output selezionati con cura |
| Rimuovere contenuti | Elimina la fonte dall'indice | Riaddestra senza quei dati |
| Ideale per | Risposte fattuali da contenuti che cambiano | Tono, formato e compiti ristretti e ripetitivi |
Ricerca per parole chiave, semantica e ibrida
La qualità di un chatbot RAG dipende molto dalla fase di ricerca. Se il passaggio giusto non viene trovato, nemmeno il modello migliore può dare la risposta corretta. Ci sono due modi principali di cercare.
La ricerca per parole chiave confronta le parole della domanda con quelle dei tuoi contenuti. È precisa con i termini esatti: codici prodotto, numeri di modello, nomi, messaggi di errore e sigle. Fa fatica quando il visitatore usa parole diverse da quelle della pagina, per esempio se chiede come «rimandare indietro un pacco» e la pagina si intitola «Politica sui resi».
La ricerca semantica confronta embedding invece di parole, quindi trova passaggi con un significato simile anche quando la formulazione è diversa. Gestisce bene le domande riformulate o colloquiali, ma può perdere gli identificativi esatti, perché un codice ricambio, per esempio, di per sé ha poco significato.
La ricerca ibrida esegue entrambe e ne combina i risultati. Una domanda come «L'X200 va bene per la mia bici del 2019?» beneficia della ricerca per parole chiave su «X200» e di quella semantica per il resto. Per i contenuti aziendali, che mescolano linguaggio quotidiano, nomi e codici, la ricerca ibrida è di solito la scelta più solida.
Quando ha senso il fine-tuning
Il fine-tuning non è lo strumento sbagliato, è uno strumento diverso. I due approcci si possono anche combinare: un modello sottoposto a fine-tuning per tono o formato può comunque recuperare i fatti tramite il RAG.
Vale la pena considerare il fine-tuning se si verifica una o più di queste condizioni:
- Ti serve un formato di output molto coerente, per esempio dati strutturati per un altro sistema.
- Il compito è ristretto e si ripete in grandi volumi, come smistare i messaggi in arrivo in categorie fisse.
- Vuoi uno stile o un tono preciso che le sole istruzioni non producono in modo affidabile.
- Hai molti esempi di qualità e le risorse per riaddestrare e testare a ogni cambiamento.
Preparare i contenuti per un chatbot RAG
Per la maggior parte dei chatbot sui siti web, istruzioni chiare fanno il lavoro che ci si aspetterebbe dal fine-tuning, e il recupero fornisce le conoscenze. La ricerca però trova solo ciò che c'è nei tuoi contenuti, e funziona meglio quando sono chiari. Alcune abitudini aiutano:
- Parti dalle pagine scritte per i clienti: FAQ, pagine di prodotti e servizi, prezzi, spedizioni, condizioni e articoli di assistenza.
- Escludi le pagine che aggiungono solo rumore, come archivi, pagine di tag, pagine di login e annunci superati.
- Elimina o aggiorna i documenti vecchi. Se due fonti si contraddicono, il chatbot potrebbe recuperare quella sbagliata.
- Scrivi coppie di Q&A per i casi in cui conta la formulazione esatta, come le condizioni di disdetta o di garanzia.
- Dove possibile, tratta un solo argomento per pagina o sezione, così ogni passaggio si capisce da solo.
- Indicizza di nuovo dopo i cambiamenti importanti, come nuovi prezzi o orari.
- Prima di andare online, fai dei test con le domande che pongono davvero i visitatori, comprese quelle vaghe e quelle a cui i tuoi contenuti non rispondono.
Come funziona intoCHAT
intoCHAT si basa sul recupero. Quando crei un agente, lo addestri sui tuoi contenuti: incolli l'URL del tuo sito e scegli quali pagine leggere, carichi file come PDF, documenti Word, fogli di calcolo o presentazioni, e aggiungi testi o coppie di Q&A. intoCHAT suddivide questi contenuti in passaggi e ne crea gli embedding.
Quando un visitatore fa una domanda, intoCHAT esegue una ricerca ibrida, che combina ricerca semantica e per parole chiave nei tuoi contenuti, e passa i passaggi migliori al modello di AI insieme alle tue istruzioni. Regole integrate mantengono le risposte ancorate alle tue fonti e resistono alla prompt injection, e l'agente dice quando non sa una cosa invece di inventare.
intoCHAT non fa fine-tuning dei modelli sui tuoi contenuti. In intoCHAT, addestrare un agente significa indicizzare i tuoi contenuti per la ricerca, non modificare il modello. Il modello di AI è un modello OpenAI scelto e gestito da intoCHAT, e i passaggi dei tuoi contenuti vengono inviati a OpenAI per creare gli embedding e generare le risposte. È anche per questo che gli aggiornamenti sono rapidi: le tue conoscenze stanno in fonti che controlli tu, non dentro un modello.
- Le risposte delle coppie di Q&A hanno la priorità sulle altre fonti, così puoi fissare la formulazione delle risposte importanti.
- Se contrassegni una fonte con una stella, sale nei risultati della ricerca senza bisogno di riaddestrare.
- Puoi modificare, visualizzare in anteprima, scaricare, eliminare o riaddestrare ogni fonte. Il riaddestramento è manuale: riaddestra una fonte quando il suo contenuto cambia.
- Il Playground ti permette di provare l'agente con domande reali prima di pubblicarlo.
Scegliere l'approccio giusto
Se il tuo chatbot deve rispondere alle domande dei clienti con le informazioni che pubblichi, parti dal recupero. Usa i contenuti che hai già, resta aggiornato quando li aggiorni e mantiene le risposte legate alle tue fonti. Considera il fine-tuning solo se ti serve un comportamento specifico che le istruzioni non ottengono, e hai i dati e il tempo per mantenerlo.
Il modo più veloce per vedere il recupero all'opera è provarlo sul tuo sito: lo strumento di anteprima gratuito crea un agente temporaneo da cinque delle tue pagine, e quando vuoi andare oltre puoi creare gratis il tuo agente intoCHAT.