50. RAG e chunking: cosa sono e come funzionano
In questa puntata ti parlo, su una domanda che mi ha fatto l’amico Giorgio, di RAG e chunking e del perché questo sia utile per evitare allucinazioni da parte degli LLM e poter “dialogare” con i nostri documenti.
Note dell’episodio
- Rag (Retrieval Augmented Generation): Definizione, funzionamento e problemi legati al suo utilizzo con i modelli linguistici di grandi dimensioni.
- Chunking: Tecniche di suddivisione del testo per ottimizzare l'utilizzo della RAG, inclusi i pro e i contro di chunk piccoli e grandi, sovrapposizione di chunk e suddivisione in frasi o strutture semantiche.
- Large Language Models (LLM).
- Embedder: Modelli per convertire testo, immagini e suoni in vettori.
- Open Web UI: Soluzione non proprietaria per utilizzare LLM ed embedder locali e video in cui ti spiego come installarlo.
- Notebook LM: Sistema di RAG che permette di caricare fonti come audio, PDF e siti internet.
- Markdown: Formattazione del testo per renderlo più facilmente utilizzabile dagli LLM.
- Whisper: Programma per la trascrizione di audio in testo.
- Newsletter
Sinossi
(Generata da NotebookLM)
Sinossi della trascrizione del podcast "Avvocati e Mac: Compendium" presentato da Filippo Strozzi, focalizzata sugli argomenti principali trattati nella puntata numero 50, che riguarda Retrieval Augmented Generation (RAG) e chunking:
Introduzione al problema delle allucinazioni nei modelli linguistici di grandi dimensioni (LLM)**
- Gli LLM predicono la parola successiva (o meglio, il token successivo), generando testo verosimile basato su probabilità statistiche.
- Le allucinazioni non sono un difetto, ma una conseguenza del meccanismo stesso di funzionamento degli LLM, che generano testo verosimile piuttosto che vero.
RAG (Retrieval Augmented Generation) come soluzione per ridurre le allucinazioni
- RAG è un acronimo che sta per "generazione aumentata di testo attraverso il recupero di informazioni".
- L'idea è di fornire al modello, prima della domanda, una serie di informazioni contestuali per aiutarlo a generare risposte più accurate e meno soggette ad allucinazioni.
Funzionamento di RAG
- Conversione dei documenti in testo semplice (markdown o pseudo markdown).
- Trasformazione del testo in vettori multidimensionali tramite "embedder".
- Comparazione vettoriale tra la domanda dell'utente e i documenti vettorializzati per valutare l'attinenza.
- Estrazione delle porzioni di testo più rilevanti e aggiunta al prompt per l'LLM, che genera una risposta più accurata.
Sfide e problemi di RAG
- La trasformazione di documenti complessi come PDF in testo semplice non è banale, poiché i PDF sono pensati per la visualizzazione e l'impaginazione, non per la gestione del testo.
- È necessario "massaggiare" il testo estratto dai PDF per migliorarne la qualità e la linearità. Ad esempio, rimuovere gli "a capo" non necessari può migliorare i risultati.
- È utile estrapolare anche i metadati dai documenti (ad esempio, il numero di pagina, l'autore, ecc.) per fornire riferimenti più precisi nelle risposte.
Chunking: la suddivisione del testo in porzioni
- Il chunking consiste nel dividere il testo in "chunk" (porzioni) di dimensioni variabili per facilitarne l'elaborazione da parte dell'LLM.
- Chunk piccoli: se il pezzo trovato è quello giusto, il risultato è ottimo, però il rischio è di dividere una risposta complessa in due chunk differenti.
- Chunk grandi: è più probabile trovare tutta la domanda completa all'interno del chunk, però c’è il rischio che ci siano anche tutta una serie di altre informazioni che non interessano, ma che passano attraverso il motore statistico dell'LLM.
- Sovrapposizione dei chunk: si recupera una porzione di testo dal chunk precedente per evitare di spezzare il significato.
- Suddivisione in frasi o strutture semantiche: dividere il testo in base a frasi o strutture semantiche può migliorare la coerenza dei chunk.- La suddivisione del testo deve tenere conto della lingua utilizzata.
Embedder**
- Sono modelli che convertono il testo (o altri tipi di input, come immagini e suoni) in vettori.
- Esistono embedder multimodali capaci di gestire diversi tipi di input.
- È preferibile utilizzare embedder open source e multilingua per evitare di dover passare dati sensibili a servizi proprietari.
- Sistema a doppio livello
- Avere un pre-spezzettamento del documento nelle sue parti fondamentali e con chunk di grandi dimensioni e poi avere un secondo livello suddiviso in maniera semantica.
- La ricerca viene fatta due volte: a livello macro e, all'interno del macro chunk più simile alla domanda, a livello micro.
Consigli pratici
Utilizzare il formato Markdown per i documenti, in quanto è ben supportato dagli LLM.
"Massaggiare" il testo per estrarre al meglio le informazioni rilevanti.
Considerare l'utilizzo di software open source come Open Web UI per la gestione delle RAG, in quanto offre flessibilità e controllo sui dati.
Notebook LM è un sistema RAG che permette di caricare diverse fonti.
Importanza del prompt
- Fare domande specifiche e chiare, utilizzando la terminologia corretta, è fondamentale per ottenere risposte accurate.
- Evitare domande generiche e senza contesto.
Verifica delle fonti
- È fondamentale verificare sempre le risposte fornite dagli LLM, soprattutto in ambiti specifici come quello giuridico.
- Non affidarsi ciecamente alle RAG su documenti sconosciuti.