“Non costringere il modello a memorizzare la biblioteca. Dagli le tre pagine di cui ha bisogno, aperte al paragrafo giusto.”
Cos'è davvero il RAG
Il RAG separa ciò che il sistema sa da ciò che il sistema dice. La conoscenza vive in un indice che controlli e puoi aggiornare ogni ora. Il modello fornisce solo il linguaggio e il ragionamento su qualunque cosa gli metti davanti. Quando arriva una domanda, cerchi nell'indice, recuperi i passaggi più pertinenti, e li metti nel prompt come contesto.
Questa è la risposta giusta a quasi tutti i problemi di "chatta con i nostri documenti", "assistente di supporto" o "base di conoscenza interna". È meno costosa del fine-tuning, aggiornabile in tempo reale, e soprattutto verificabile: puoi mostrare esattamente da quale fonte proviene la risposta.
La pipeline ingenua, e perché si rompe
La versione demo: dividi ogni documento in chunk fissi da 500 token, fai l'embedding di ciascuno, salva in un database vettoriale, fai l'embedding della query, prendi i cinque chunk più vicini, infilali nel prompt. Funziona su una FAQ ordinata e crolla su veri insiemi di documenti. Ecco dove:
- Chunking errato: la risposta è suddivisa su due chunk, e nessuno dei due da solo è sufficiente.
- Retrieval mancato: il passaggio pertinente non è tra i primi risultati perché la query e il documento usano parole diverse.
- Modello di embedding sbagliato: il tuo dominio (legale, medico, gergo interno) non è ben rappresentato, quindi i vettori "simili" non lo sono davvero.
- Contesto ignorato: il modello dispone del passaggio giusto ma risponde comunque a partire dai suoi dati di addestramento.
- Indice obsoleto: il documento è cambiato; l'indice no.
Il pattern che funziona: ibrido + re-rank + citazioni
Tre aggiunte risolvono la maggior parte dei RAG in produzione. Primo, la ricerca ibrida: combina la similarità vettoriale con la ricerca per parole chiave vecchio stile (BM25). La ricerca vettoriale coglie il significato; la ricerca per parole chiave coglie i termini esatti (codici di errore, nomi, SKU) che i vettori sfumano. Esegui entrambe e fondi i risultati.
Secondo, il re-ranking. Recupera ampio (cinquanta candidati), poi assegna loro un punteggio con un re-ranker più preciso (e più costoso), e tieni solo i cinque migliori per il prompt. Ottieni il recall di una ricerca ampia con la precisione di una ricerca accurata.
Terzo, le citazioni. Fai citare al modello l'id del chunk che ha usato per ogni affermazione. Questo rende la risposta verificabile, ti permette di mostrare le fonti nell'interfaccia, e riduce in modo misurabile la deriva del modello rispetto al testo recuperato.
Quando il retrieval è lo strumento sbagliato
Il RAG risponde alle domande la cui risposta è scritta da qualche parte. Non aiuta con le domande che richiedono ragionamento su tutto il corpus ("quali sono i tre grandi temi di questi 10.000 ticket?"), né con il calcolo ("qual è il nostro tempo medio di risoluzione?"). Quelle richiedono aggregazione, analytics o tool (trattati nel prossimo capitolo), non retrieval.
Una riga per ciascuno
- Il RAG separa ciò che il sistema sa (l'indice) da ciò che dice (il modello). Aggiorna l'indice, non il modello.
- Il RAG ingenuo si rompe sul chunking, sui retrieval mancati, sugli embedding sbagliati, sul contesto ignorato e sui dati obsoleti, tutto invisibile senza eval.
- Il pattern che funziona: ricerca ibrida + re-rank + citazioni.
- Il RAG risponde a "trova il passaggio", non a "ragiona su tutto" o "calcola un numero"; quelli hanno bisogno di tool.
Dove andare ora