Perché la mia app RAG allucinava e come ho risolto
Una volta ho fatto una demo del mio bot di supporto RAG a una collega.
Il bot le ha detto che la nostra politica di rimborso era di 30 giorni.
La nostra politica reale è di 14 giorni.
Il bot non ha detto di non essere sicuro. Ha inventato una risposta con totale sicurezza.
Il RAG dovrebbe eliminare le allucinazioni. La mia configurazione le ha solo spostate.
Ho risolto il problema seguendo cinque passaggi.
- Correggi la tua strategia di chunking
Prima dividevo i documenti in base al numero di caratteri. È stato un errore.
Un singolo chunk spesso mescolava argomenti diversi, come spedizioni e resi. Il modello li fondeva in risposte errate.
La soluzione: sono passato al semantic chunking. Ora divido il testo in base a titoli e paragrafi.
- Smetti di fidarti solo dei punteggi di similarità
Il mio retriever estraeva i primi tre chunk in base alla similarità del coseno.
Simile non significa rilevante. Un chunk può sembrare simile a una domanda ma non contenere la risposta.
La soluzione: ho aggiunto una fase di reranking con un cross-encoder. Questo mi ha aiutato a capire quando il sistema non disponeva di dati reali.
- Dai al modello il permesso di fallire
Il mio vecchio prompt diceva solo: Usa il contesto per rispondere alla domanda.
Se il contesto non conteneva la risposta, il modello colmava le lacune con delle supposizioni.
La soluzione: ho aggiunto un'istruzione diretta. Se la risposta non è presente nel contesto, dì che non lo sai. Solo questo ha fermato la maggior parte delle allucinazioni.
- Imposta una soglia di retrieval
A volte il modello utilizzava la conoscenza generale quando il recupero falliva. Speravo che il prompt funzionasse, ma la speranza non è una strategia.
La soluzione: ho aggiunto un limite di punteggio (score cutoff). Se il punteggio di retrieval è troppo basso, il sistema restituisce una risposta di fallback. Nessun contesto significa nessuna risposta.
- Testa il fallimento, non il successo
Prima testavo solo domande facili. Ignoravo le query ambigue e le informazioni mancanti.
La soluzione: ho creato un set di valutazione con delle domande trabocchetto. Si tratta di casi in cui la risposta è assente. Eseguire regolarmente questi test ti mostra esattamente dove il tuo sistema fallisce.
Il RAG non elimina le allucinazioni. Le rende controllabili.
Il mio bot non conosce ancora ogni dettaglio. Ma ora ammette quando non è sicuro. Questo lo rende utilizzabile.
Source: https://dev.to/pallavi_sharma_10c1a6f1da/why-my-rag-app-kept-hallucinating-and-how-i-fixed-it-3i10
Optional learning community: https://t.me/GyaanSetuAi