Un nuovo assistente RAG (retrieval-augmented generation) basato su WhatsApp ha smesso di allucinare imponendo che ogni risposta sia supportata da una citazione codificata in JSON. Quando il modello non riusciva a indicare un chunk specifico, rispondeva "Non ho abbastanza informazioni per rispondere", trasformando un bugiardo sicuro di sé in un sistema affidabile che sa dire "Non lo so".

Perché la fiducia è importante nel RAG

La maggior parte dei tutorial sul RAG si concentra ossessivamente sul retrieval — la scelta degli embedding, la suddivisione dei documenti in chunk, il re-ranking dei risultati. Saltano però quello che accade dopo aver trovato il testo pertinente. Gli utenti perdono fiducia quando l'assistente offre una risposta definitiva che il contesto recuperato non supporta effettivamente.

Il divario di fiducia

In un prototipo costruito con PostgreSQL e l'estensione pgvector, la pipeline di retrieval era lineare. La vera sfida è emersa in produzione: il modello linguistico suonava sicuro di sé anche quando lo snippet recuperato mancava delle informazioni necessarie. Una demo poteva nascondere il problema, ma gli utenti reali hanno messo in luce il divario tra l'apparire sicuri e l'essere corretti.

Imporre le citazioni con JSON

Invece di cercare di convincere il modello con prompt come "rispondi solo se hai il contesto", l'autore ha cambiato il formato di output. Il sistema ora richiede un oggetto JSON in cui ogni affermazione include un riferimento al chunk esatto che la supporta. Se il modello non riesce ad allegare una citazione, la risposta viene rifiutata e l'utente visualizza un chiaro messaggio "Non lo so".

L'imposizione si è spostata dalle istruzioni in linguaggio naturale alla validazione dello schema. Il modello genera ancora testo, ma il codice circostante verifica che il JSON corrisponda alla struttura richiesta prima che raggiunga l'utente.

Cosa è cambiato

  • Il chunking è diventato conservativo. Chunk vaghi o eccessivamente ampi ora generano affermazioni senza citazioni, attivando il fallback "Non lo so".
  • Il system prompt si è ridotto. Il prompt invasivo che cercava di controllare il comportamento del modello è stato sostituito da un breve set di istruzioni, lasciando che fosse lo schema a fare il lavoro pesante.
  • I fallimenti sono visibili. Quando il retrieval restituisce materiale irrilevante, l'assistente non maschera più l'errore con una risposta sicura ma errata; ammette apertamente l'incertezza.

Punto chiave: Per gli assistenti RAG, garantire che ogni affermazione sia tracciabile a una fonte recuperata costruisce la fiducia dell'utente in modo più affidabile rispetto al semplice perfezionamento della fase di retrieval. Trasformando le citazioni mancanti in un visibile "Non lo so", gli sviluppatori permettono al sistema di ammettere i propri limiti invece di fabbricare risposte.