Retrieval-Augmented Generation (RAG)
- Cos'è il RAG e il ciclo recupera-arricchisci-genera
- Come indicizzare, recuperare, arricchire e generare con le citazioni
- Perché il RAG batte il fine-tuning per le esigenze di 'rispondi sui miei documenti'
- Le cinque modalità di fallimento che uccidono la qualità del RAG
- Un prompt di ancoraggio copia-e-incolla che chiude le due lacune più grandi
Il RAG fa rispondere un modello a domande sui tuoi dati — documenti, una base di conoscenza, un codebase — su cui non è mai stato addestrato. L'idea è semplice: recupera i pezzi rilevanti, arricchisci il prompt con essi, poi genera una risposta ancorata a quei pezzi.
Il ciclo
- Suddividi in chunk, crea i loro embedding (vedi /docs/foundations/embeddings) e memorizza in un indice vettoriale (e/o per parole chiave).
- Estrai i chunk più rilevanti per la domanda.
- Inserisci quei chunk nel prompt con un'istruzione come "Rispondi solo dal contesto qui sotto; se non c'è, dillo".
- Produci la risposta — e idealmente cita da quale chunk proviene ciascuna affermazione.
Per il passaggio di embedding nell'indicizzazione, vedi Embedding e ricerca vettoriale.
Perché il RAG invece del fine-tuning?
- Fresco: aggiorni i dati, non il modello
- Verificabile: fornisce citazioni
- Economico: molto più economico del riaddestramento
Per la maggior parte delle esigenze "rispondi sui miei documenti", il RAG è il primo strumento giusto — vedi Fine-tuning vs Prompting vs RAG.
Le modalità di fallimento (dove muore la qualità del RAG)
- Recupero scadente = risposta scadente. Se il chunk giusto non viene recuperato, il modello non può usarlo. La maggior parte dei problemi 'il RAG sbaglia' sono problemi di recupero.
- Un chunking troppo grossolano/fine rovina la rilevanza (vedi embedding).
- Nessuna istruzione di ancoraggio: il modello mescola i fatti recuperati con le proprie ipotesi. Digli di rispondere solo dal contesto e di ammettere le lacune.
- Inserire troppo: i chunk irrilevanti diluiscono il segnale e costano token. Recupera pochi chunk di alta qualità.
- Nessuna citazione: non puoi verificare, quindi non puoi fidarti.
Il fallimento del chunking si ricollega agli embedding, e l'eccesso di inserimento costa token.
- Valuta il recupero separatamente: misura 'abbiamo recuperato il chunk giusto?' separatamente da 'il modello ha risposto bene?'. Localizza il problema in fretta. Vedi Evals (/docs/foundations/evals).
Copia-e-incolla: un prompt di ancoraggio
La singola correzione con la leva più alta è un'istruzione di ancoraggio. Inserisci i tuoi chunk recuperati in un template come questo — costringe il modello a rispondere solo dal contesto, a citare ciascuna affermazione e ad ammettere le lacune invece di tirare a indovinare:
Prompt di ancoraggio
You are answering strictly from the context below. Rules: - Use ONLY the context to answer. Do not use outside knowledge. - Cite the source after each claim, like [chunk 2]. - If the answer is not in the context, reply exactly: "I don't have that in the provided sources." - Quote numbers and names verbatim — never paraphrase a figure. Context: [chunk 1] ... [chunk 2] ... [chunk 3] ... Question: <the user's question>
Abbinalo a pochi chunk di alta qualità (non tutto ciò che hai recuperato) e chiudi le due lacune più grandi in un colpo solo: la fusione allucinata e le risposte non verificabili. Poi valuta recupero e generazione separatamente, così sai quale metà mettere a punto.
Padroneggia i termini
Mettiti alla prova
0/5- RAG = recupera i chunk rilevanti, arricchisci il prompt, genera una risposta ancorata e citata.
- Indicizza (chunk + embedding + memorizzazione), recupera i chunk migliori, arricchisci con un'istruzione di ancoraggio, genera con le citazioni.
- Preferisci il RAG al fine-tuning per il Q&A sui documenti: fresco, citato, più economico.
- La maggior parte dei fallimenti sono fallimenti di recupero — recupera pochi chunk di alta qualità, non tutto.
- Aggiungi sempre un'istruzione di ancoraggio e cita; valuta recupero e generazione separatamente.