← Tutte le lezioni
Lezione 26 RAG e documenti 6:58

Cos'è il RAG: far leggere i tuoi documenti a un modello

Un modello non conosce i tuoi file. Il RAG glieli fa consultare al momento della domanda: prima cerca, poi risponde. È la differenza fra un esame a libro chiuso e uno a libro aperto.

Il video parte solo se lo chiedi: nessuna richiesta a YouTube prima del click.

Un modello linguistico ha letto mezzo internet, ma non ha letto le tue cose: il manuale interno dell’azienda, gli appunti del corso, i venti PDF che hai scaricato e mai riaperto. Quella conoscenza è congelata al momento dell’addestramento e non contiene niente di tuo.

Il RAG — retrieval augmented generation, generazione aumentata dal recupero — risolve il problema nel modo più semplice possibile: prima cerca nei tuoi documenti, poi risponde usando quello che ha trovato. È la differenza fra un esame a libro chiuso e uno a libro aperto. Lo studente a libro aperto non sa più cose: sa dove cercarle.

Il problema, detto senza giri

Tu:  "Cosa dice il capitolo 5 del mio manuale?"
LLM: "Non ho accesso ai tuoi documenti. Posso spiegarti i concetti generali..."

Tu:  "Qual è la procedura per le ferie nella mia azienda?"
LLM: "In genere le aziende prevedono..."   ← risposta generica, cioè inutile

Il modello può sapere tutto di diritto del lavoro e non sapere nulla del tuo regolamento. E quando non sa, spesso non tace: riempie il vuoto con qualcosa di plausibile. Ancorare le risposte a documenti veri è anche il modo più efficace per ridurre quel comportamento.

Le tre fasi

Il RAG si divide in una fase che fai una volta e due che si ripetono a ogni domanda.

1. Indicizzazione — una volta sola. I documenti vengono letti, spezzati in pezzi, trasformati in vettori e archiviati.

PDF, appunti, pagine


[CARICAMENTO]   legge PDF, Markdown, DOCX, HTML


[CHUNKING]      divide in pezzi da poche centinaia di parole
      │              (la scelta più delicata di tutta la pipeline)

[EMBEDDING]     ogni pezzo diventa una lista di numeri che ne
      │              rappresenta il significato

[ARCHIVIO]      i vettori finiscono in un database pensato per
                   cercare per somiglianza

2. Recupero — a ogni domanda. La domanda viene trasformata in un vettore con lo stesso modello usato per i documenti, e si cercano i pezzi più vicini.

"Come funziona il rimborso spese?"


[EMBEDDING DELLA DOMANDA]  stesso spazio dei documenti


[RICERCA PER SOMIGLIANZA]  quali pezzi puntano nella stessa direzione?


[PRIMI K RISULTATI]        i 3-5 pezzi più pertinenti

3. Generazione. I pezzi recuperati vengono infilati nel prompt insieme alla domanda, e il modello risponde leggendoli.

SISTEMA: Rispondi solo usando il contesto qui sotto.
         Se la risposta non c'è, dillo.

CONTESTO: [pezzo 1: "Le spese vanno rendicontate entro..."]
          [pezzo 2: "Il massimale giornaliero è..."]

DOMANDA:  Come funziona il rimborso spese?

Il modello non ha imparato niente di nuovo: sta leggendo. La conoscenza vive nell’archivio, non nei suoi pesi. È il punto che spiega quasi tutti i comportamenti del RAG, buoni e cattivi.

Perché non basta Ctrl+F

La ricerca classica cerca parole. Il RAG cerca significati, perché lavora sugli embedding: testi che vogliono dire la stessa cosa finiscono vicini nello spazio anche senza condividere un vocabolo.

Cerchi: "polimorfismo"

Ctrl+F  trova:     "Il polimorfismo è un concetto..."
        non trova: "la capacità di un oggetto di assumere forme diverse"

RAG     trova:     "Il polimorfismo è un concetto..."
        trova:     "la capacità di un oggetto di assumere forme diverse"
        trova:     "override e overloading sono i due meccanismi..."

Vale anche il contrario, ed è un limite reale: su un codice prodotto, una sigla o un nome proprio la ricerca testuale è più precisa di quella semantica. Per questo i sistemi seri usano entrambe e fondono i risultati.

I pezzi che compongono un RAG

ComponenteCosa faEsempi
CaricatoreLegge i formati e ne estrae il testoPyMuPDF, Unstructured
DivisoreSpezza i documenti in pezzidivisori ricorsivi, per struttura
Modello di embeddingTrasforma testo in vettorinomic-embed-text, BGE-M3
Database vettorialeArchivia e cerca per somiglianzaChroma, FAISS, Qdrant
RecuperatoreSceglie i pezzi da passare al modelloricerca per somiglianza, riordino
Modello linguisticoScrive la risposta leggendo i pezziquello che già usi in locale

Cinque di questi sei pezzi non sono il modello. È la cosa più utile da capire prima di iniziare: la qualità di un RAG si decide quasi tutta fuori dall’LLM.

Quando serve e quando è sovrastruttura

SituazioneServe il RAG?Perché
Un capitolo solo, da capireNoIncollalo nel prompt e basta
Venti PDF in cui cercare un concettoNessuno li rilegge a mano
Documentazione che cambia ogni settimanaSi aggiorna l’archivio, non il modello
Confrontare come tre fonti spiegano la stessa cosaRecupera i pezzi paralleli
Dare al modello un tono o un formato fissoNoQuello è un lavoro da system prompt

La prima riga è quella che si sbaglia più spesso. Con le finestre di contesto di oggi, un documento di trenta pagine ci sta dentro tutto: costruirci sopra una pipeline di recupero è lavoro in più che peggiora il risultato. Il RAG inizia ad avere senso quando i documenti non ci stanno, o quando cambiano di continuo.

RAG o fine-tuning?

Sono due risposte a due domande diverse, e vengono confuse di continuo.

RAGFine-tuning
Cosa cambiaQuello che il modello leggeCome il modello si comporta
ConoscenzaAggiornabile in un secondoCongelata nei pesi
Costo di aggiornamentoAggiungi un file all’archivioRiaddestri
Fonti citabiliNo
Buono perFatti, documenti, procedureTono, formato, gergo di settore

Regola pratica: se ti serve che il modello sappia qualcosa, RAG. Se ti serve che risponda in un certo modo, fine-tuning. Nei casi seri si usano insieme, ma quasi mai si inizia dal secondo.

Dove si rompe

Il RAG fallisce quasi sempre negli stessi punti, e nessuno di questi è colpa del modello.

Documenti confusi restano confusi. Se il manuale originale è scritto male, il recupero trova pezzi scritti male. Non c’è modello che compensi una fonte scadente.

Il chunking sbagliato. Pezzi troppo piccoli perdono il contesto e diventano incomprensibili; pezzi troppo grandi mescolano troppi argomenti e non risultano vicini a nessuna domanda in particolare. È l’errore numero uno, ed è il tema della prossima lezione.

Due modelli di embedding diversi. Se indicizzi con un modello e cerchi con un altro, i vettori vivono in spazi incompatibili e i risultati sono rumore. Se cambi modello, devi rifare l’archivio da capo.

Troppi pezzi nel prompt. Passare quindici risultati “per sicurezza” satura il contesto e peggiora la risposta: il modello si distrae fra pezzi mediocri. Tre pertinenti battono quindici discreti, sempre.

Falsi positivi. Il recuperatore restituisce sempre qualcosa: anche quando la risposta nei tuoi documenti non c’è, ti consegna i pezzi meno lontani. Senza un’istruzione esplicita a dire “non lo so”, il modello ci costruisce sopra una risposta.

L’illusione dell’apprendimento. Dopo una sessione riuscita viene naturale pensare che il modello ora “conosca” i documenti. Non è così: alla domanda successiva riparte da zero e riconsulta l’archivio. Il RAG non insegna niente a nessuno.

Due strade per partire

Strada 1 — applicazioni pronte
  Un'interfaccia locale con RAG integrato: carichi i documenti e chiedi.
  Mezz'ora di lavoro, controllo limitato su come vengono spezzati i testi.

Strada 2 — framework in Python
  Costruisci la pipeline pezzo per pezzo.
  Qualche ora e un po' di codice, controllo su ogni parametro.

Per studiare o cercare nei propri documenti, la prima strada basta e avanza: un’interfaccia come Open WebUI appoggiata a Ollama fa RAG senza scrivere una riga. La seconda serve quando il recupero va misurato e messo a punto — ed è lì che si scopre quanto pesano le scelte che l’applicazione pronta aveva preso al posto tuo.

In sintesi

ConcettoIn una riga
RAGPrima cerca nei tuoi documenti, poi rispondi usando quei pezzi
AnalogiaEsame a libro aperto invece che a libro chiuso
IndicizzazioneCarica, spezza, calcola i vettori, archivia: una volta sola
RecuperoLa domanda diventa un vettore e pesca i pezzi più vicini
Non èInsegnare qualcosa al modello: la conoscenza resta nell’archivio
Quando evitarloSe il documento sta nella finestra di contesto, incollalo
Errore tipicoChunking sbagliato e troppi pezzi passati per sicurezza
Regola ferreaStesso modello di embedding per indicizzare e per cercare

Lezioni collegate

  • Chunking: come si spezzano i documenti

    La scelta più sottovalutata di tutta la pipeline RAG. Da come tagli i testi dipende cosa il sistema riuscirà a trovare: un chunking sbagliato rende inutili il miglior modello di embedding e il miglior LLM.

  • Database vettoriali: cercare per significato

    Dove finiscono i vettori dei tuoi documenti e come si fa a ritrovarli in fretta. Indici, metriche di distanza e la scelta fra le opzioni che contano davvero, senza cambiare strumento tre volte.

  • Costruire un RAG in locale, dal PDF alla risposta

    La pipeline completa su una macchina sola: estrarre il testo dai PDF, indicizzarlo, interrogarlo. Con i punti dove si inciampa davvero e come si capisce se sta funzionando.

Guarda su YouTube