Un assistente AI che prima cerca bene, poi risponde
Un assistente che risponde solo a partire dai documenti del cliente. Nelle prove prendeva i passaggi sbagliati, inventava link e ripeteva le risposte. Ho rifatto la ricerca con la tecnica di contesto di Anthropic, poi ho sistemato le regole.
Il contesto
Il cliente voleva un assistente AI per gli utenti della sua applicazione web, capace di rispondere a partire dai suoi documenti, circa 30.000 passaggi di testo. Il progetto di partenza aveva regole chiare:
- l'assistente risponde solo con quello che trova; se la ricerca non trova nulla, il modello non viene neppure chiamato e la risposta è «non lo trovo»;
- le domande personali passano a una persona;
- avviso fisso, una domanda alla volta per persona, tetto di spesa oltre il quale l'assistente risponde «non disponibile»;
- registro di ogni scambio e nessun dato personale inviato al modello.
Il problema
Nelle prove sono emersi cinque problemi:
- al modello arrivavano i passaggi sbagliati, come introduzioni e testi fuori tema;
- l'assistente inventava link;
- alle domande ampie usava un solo documento;
- «continua» riceveva gli stessi passaggi della domanda precedente, e le risposte erano corte;
- il testo di istruzioni modificato dal pannello aveva sostituito le regole di sicurezza.
La soluzione
- Il contesto dentro ogni passaggio, con la tecnica di Anthropic. Ho usato la stessa tecnica descritta da Anthropic, la Contextual Retrieval: prima dell'indicizzazione ogni passaggio riceve il suo contesto, cioè il suo percorso nei documenti (sezione › capitolo › documento), sia nell'indice per parole sia in quello per significato. Un passaggio che dice «come visto sopra» ora sa di cosa parla. Il contesto viene dalla struttura dei documenti, quindi indicizzare non costa nulla.
- Ricerca ibrida, dentro il database. Una ricerca per parole, dove le parole rare e il titolo del documento pesano di più, e una per significato con un modello di embedding compatto. I vettori stanno nello stesso database relazionale dell'applicazione (PostgreSQL con pgvector, indice HNSW), senza un servizio esterno. Se la ricerca per significato dà errore, si torna da sola a quella per parole.
- Selezione controllata. Per ogni domanda la ricerca propone fino a 40 passaggi candidati; al modello ne arrivano al massimo 30, con un limite per documento e un minimo di documenti diversi, così le domande ampie attingono a più fonti. I valori si regolano dal pannello.
- Prompt in due parti. La parte fissa, nel codice, contiene le regole di forma: come citare le fonti e nessun link che non sia nei documenti. La parte dal pannello, modificabile dal cliente, contiene regole e tono. Le regole di sicurezza che il testo modificato aveva cancellato sono state rimesse: niente consigli finanziari, legali o medici, e le istruzioni non si rivelano.
- «Continua» che porta avanti. Ora «continua» esclude i passaggi già usati e ne porta di nuovi; dopo cinque richieste l'assistente dice di aver detto tutto. E il prompt non chiede più risposte brevi a tutti i costi.
- La «cache» era la memoria. Le risposte «vecchie» venivano dalla memoria della conversazione. Ora la conversazione riparte dopo 12 ore e ogni volta che cambiano le impostazioni che toccano le risposte. Per ogni risposta, una traccia di cosa l'assistente ha letto resta nel pannello per 30 giorni.
Il risultato, nelle prove
- Su una domanda reale del cliente l'assistente ora cita 6 documenti in una risposta unica; prima ne citava uno. È un esempio, non una media.
- La ricerca risponde in 20-30 millisecondi su circa 30.000 passaggi.
- L'indice è più leggero del 38%, da 106 a 65 MB, e si ricostruisce in 15 secondi.
- Una risposta con 30 passaggi costa circa un centesimo.
Cosa puoi portarti a casa
- La qualità di un assistente AI dipende prima di tutto dalla ricerca, non dal modello.
- Un passaggio senza contesto è ambiguo: dirgli da dove viene migliora la ricerca, e se il contesto c'è già nella struttura dei documenti non costa nulla.
- Le regole che non devono cambiare vanno nella parte fissa del prompt, non in un testo che chiunque può modificare.
- Un comportamento strano va capito prima di essere corretto: la «cache» era la memoria.
Dettagli modificati per tutelare la riservatezza del cliente.
Benefici
- Risposte costruite solo su quello che c'è nei documenti
- Domande ampie che attingono a più documenti insieme
- Regole di sicurezza chiare: niente consigli finanziari, legali o medici
- Costi prevedibili, circa un centesimo a risposta
Funzionalità
- Contextual Retrieval: ogni passaggio porta con sé il suo percorso nei documenti
- Ricerca ibrida per parole e per significato, con ritorno automatico alla ricerca per parole
- Vettori nel database dell'applicazione, senza servizi esterni
- Traccia per 30 giorni di cosa l'assistente ha letto per rispondere
- Una domanda alla volta per persona e tetto di spesa
Hai un problema simile?
Raccontami cosa ti serve: ti rispondo io, di solito entro un giorno lavorativo.