Perché il RAG risolve il problema della conoscenza aggiornata
Un modello Azure OpenAI (ad esempio GPT-4o) conosce solo ciò che ha visto durante il training e non ha accesso ai documenti aziendali. Il pattern RAG (Retrieval-Augmented Generation) aggira questo limite senza ri-addestrare il modello: al momento della richiesta, il sistema recupera i passaggi rilevanti da una base di conoscenza, li aggiunge al prompt come contesto e lascia che il modello generi la risposta fondata su quel materiale (grounding).
I tre passi:
- Retrieve — la query dell’utente viene usata per interrogare un indice (tipicamente Azure AI Search) e restituire i chunk più pertinenti.
- Augment — i chunk recuperati vengono iniettati nel prompt insieme alla domanda.
- Generate — il modello sintetizza la risposta usando quel contesto, riducendo le allucinazioni.
Azure OpenAI On Your Data
On Your Data è la funzionalità che orchestra il pattern RAG in modo gestito: collega un deployment di Azure OpenAI a una data source (di solito Azure AI Search, ma anche Azure Blob Storage o Cosmos DB) senza che tu debba scrivere manualmente il ciclo retrieve-augment-generate. Il modello resta invariato: non c’è fine-tuning, i pesi non cambiano.
Ingestion e indicizzazione
Se parti da documenti grezzi in Blob Storage, la fase di ingestion li scompone in chunk, calcola gli embedding (con un deployment di text-embedding-3-large o simile) e popola l’indice di Azure AI Search. Per abilitare la ricerca vettoriale o hybrid (parole chiave + vettori, spesso con semantic ranker) serve un indice con i campi giusti: vettore, contenuto, titolo e soprattutto un campo di URL/filepath che alimenta le citazioni.
Managed identity fra i servizi
In produzione la scelta architetturale corretta è usare Microsoft Entra managed identity al posto di API key. Il flusso richiede autorizzazioni incrociate tramite RBAC:
- La risorsa Azure OpenAI deve poter leggere l’indice → ruolo Search Index Data Reader su Azure AI Search.
- Azure AI Search deve poter leggere i documenti e (se indicizza in autonomia) accedere al modello di embedding → ruoli su Storage Blob Data Reader e su Azure OpenAI.
Questo triangolo OpenAI ↔ Search ↔ Storage con identity elimina i segreti dal codice ed è il pattern preferito dall’esame.
Citazioni
On Your Data restituisce nella risposta i riferimenti alle fonti (citations): ogni affermazione può essere ricondotta al documento da cui deriva. È il valore chiave in scenari regolamentati, dove serve tracciabilità e verificabilità.
RAG vs fine-tuning: quando usare cosa
| Esigenza | Scelta corretta |
|---|---|
| Conoscenza che cambia spesso, da citare | RAG / On Your Data |
| Dominio con documenti specifici (policy, manuali) | RAG |
| Imporre uno stile, tono o formato di output costante | Fine-tuning |
| Ridurre i token di prompt per compiti ripetitivi | Fine-tuning |
La regola mentale: RAG cambia cosa il modello sa; il fine-tuning cambia come risponde. Il fine-tuning non aggiorna i fatti e non produce citazioni, quindi non è la risposta quando lo scenario parla di “documenti aziendali aggiornati” o “risposte verificabili con fonte”. I due approcci sono combinabili, ma per la conoscenza dinamica la leva è sempre il retrieval.
La qualità dipende dal retrieval, non solo dal modello
Un punto architetturale cruciale: se l’indice è mal configurato — chunking troppo grande, campi vettoriali assenti, semantic ranking non attivo, campo URL mancante — la risposta sarà povera anche con il modello migliore. Migliorare la qualità significa quasi sempre intervenire su ingestion, chunking e strategia di query (keyword vs vettoriale vs hybrid), non aumentare la potenza del modello.
Trappole tipiche d’esame
- Scenario: l’azienda deve rispondere su policy interne che cambiano ogni mese e servono le fonti citate → RAG con Azure OpenAI On Your Data su Azure AI Search, non fine-tuning.
- Scenario: vuoi che il modello produca sempre output in un formato/tono aziendale fisso → fine-tuning, non RAG.
- Scenario: On Your Data restituisce risposte incomplete o irrilevanti → il problema è nel retrieval/indice (chunking, hybrid + semantic ranker, campi vettoriali), non nel modello: rivedi l’indice, non cambiare GPT.
- Scenario: eliminare API key fra OpenAI, Search e Storage → managed identity + RBAC con i ruoli data-plane (Search Index Data Reader, Storage Blob Data Reader), non stringhe di connessione.
- Scenario: le citazioni non compaiono nelle risposte → l’indice non espone un campo URL/title mappato correttamente nella configurazione della data source.