Perché la mia app RAG continuava ad allucinare e come ho risolto il problema

Qualche mese fa, ho fatto una demo del mio bot di supporto RAG. Ha detto a un collega che la nostra politica di rimborso era di 30 giorni. La nostra politica reale è di 14 giorni. Il bot non ha esitato. Non ha detto di non essere sicuro. Ha inventato una risposta con totale sicurezza.

Il RAG dovrebbe ridurre le allucinazioni. La mia configurazione le ha solo spostate. Ho imparato cinque lezioni mentre facevo il debugging di questo sistema.

  1. Smetti di usare conteggi di caratteri fissi per i chunk Usavo chunk da 1000 caratteri con una leggera sovrapposizione. Questo ha causato problemi. Un chunk spesso mescolava le regole di spedizione con quelle di reso. Il modello fondeva queste diverse sezioni in un'unica risposta errata. Soluzione: Sono passato al semantic chunking. Ho suddiviso i dati per intestazioni e paragrafi. Questo mantiene insieme le informazioni correlate.

  2. La similarità non significa rilevanza Il mio retriever estraeva i primi 3 chunk basandosi sulla similarità del coseno. Un chunk può sembrare simile a una domanda senza contenerne la risposta. Il modello assume che tutto ciò che è nel contesto sia vero. Soluzione: Ho aggiunto una fase di reranking utilizzando un cross-encoder. Ho anche iniziato a registrare i punteggi di recupero (retrieval scores). Questo mostra quando il sistema non dispone di una risposta reale.

  3. Di' al modello che può anche sbagliare Il mio prompt originale era semplice: Usa il contesto per rispondere alla domanda. Non forniva al modello istruzioni su cosa fare quando il contesto mancava. Il modello riempiva i vuoti con delle supposizioni. Soluzione: Ho aggiunto un'istruzione specifica. Se la risposta non è nel contesto, dì che non lo sai. Le allucinazioni sono diminuite immediatamente.

  4. Applica una soglia di recupero Il modello continuava a usare la conoscenza generale quando il recupero falliva. Speravo che il prompt funzionasse, ma la speranza non è una strategia. Soluzione: Ho impostato una soglia di punteggio rigida. Se il punteggio di recupero più alto è troppo basso, il sistema si ferma. Restituisce un messaggio di fallback invece di lasciare che il modello indovini.

  5. Testa i fallimenti, non solo i successi Ho testato solo domande facili di cui sapevo che i documenti coprivano la risposta. Ho ignorato le query ambigue e le informazioni mancanti. Le allucinazioni vivono in quei vuoti. Soluzione: Ho creato un set di valutazione con delle domande trabocchetto. Si tratta di casi in cui la risposta corretta non è presente nel sistema. Eseguo questi test ogni volta che apporto una modifica.

Il RAG non ferma completamente le allucinazioni. Le rende controllabili. Il mio bot non sa ancora tutto. Ma ora, quando non è sicuro, lo dice. Questo rende lo strumento utilizzabile.

Fonte: https://dev.to/pallavi_sharma_10c1a6f1da/why-my-rag-app-kept-hallucinating-and-how-i-fixed-it-3i10