This is a viewer only at the moment see the article on how this works.
To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk
This is a preview from the server running through my markdig pipeline
Saturday, 22 November 2025
Hai mai cercato una "guida alla distribuzione" e non hai ottenuto nulla, anche se c'è un articolo su "pubblicare alla produzione"? RAG (Retrieval-Augmented Generation) risolve questo problema con la comprensione del significato, non solo parole chiave. Questa serie mostra come RAG è venuto fuori, come funziona sotto il cofano, e come costruire sistemi di produzione. Dalla ricerca semantica ai Q&A ad AI-powered con citazioni.
Navigazione in serie: Questa è la parte 1 della serie RAG (Retrieval-Augmented Generation)
RAG (Retrieval-Augmented Generation) è stato sviluppato per rendere AI più intelligente LLM di accesso alle informazioni su cui non sono stati addestrati.Ma ecco cosa c'è di interessante: la tecnologia apre opportunità ben oltre AI chatbots. Potere ricerca semantica su siti web, raccomandazioni di contenuti, assistenza alla scrittura, e gestione della conoscenza.
La duplice natura: RAG può aiutare i clienti (ricerca migliore, risposte accurate con citazioni) o sfruttarli (raccomandazioni manipolative, seppellire recensioni negative, affacciarsi al contenuto upsell). La differenza non è l'intento della tecnologia. Una ricerca semantica che aiuta gli utenti a trovare ciò di cui hanno bisogno? Grande. Uno che dà priorità a ciò che ti rende il maggior numero di soldi mentre apparisci utile? Questo è territorio modello scuro, ed è per questo che capire come funziona conta.
Ecco la verità su RAG: Sembra intimidatorio. Vector incorpora? Transformer models? KV caches? Ma come tutto il resto del software, si tratta solo di capire come funziona. Non c'è bisogno di conoscere la matematica dietro le architetture dei trasformatori più di quanto tu debba capire il montaggio per scrivere C#.
RAG in tre fasi:
Il resto sono dettagli sull'attuazione.
Questa serie mostra come costruire i sistemi RAG con codice C# funzionante. Nessuna ondata a mano. Nessuna ipotesi. Solo i pezzi e come si adattano insieme.
Quello che imparerai in questa serie:
Più tardi, vi mostrerò anche come costruire sistemi RAG completi tra cui:
Retrieval-Augmented Generation: Trovare informazioni pertinenti, poi usarlo.
flowchart LR
A[User Question] --> B[Retrieve Relevant Info]
B --> C[Retrieved Documents/Context]
C --> D[Generate Response]
A --> D
D --> E[Grounded, Accurate Answer]
style B stroke:#f9f,stroke-width:2px
style D stroke:#bbf,stroke-width:2px
Senza RAG: L'utente chiede → LLM indovina dalla memoria → potrebbe avere allucinazioni
Con RAG: L'utente chiede → Trova documenti pertinenti → Risposte LLM utilizzando quei documenti → fondati in realtà
// Without RAG: Hope the LLM knows
var answer = await llm.GenerateAsync("How do I deploy Docker?");
// Risk: Might make up outdated or wrong steps
// With RAG: Give it the docs
var relevantDocs = await vectorSearch.FindSimilar("How do I deploy Docker?");
var context = string.Join("\n", relevantDocs.Select(d => d.Text));
var answer = await llm.GenerateAsync($"Context: {context}\n\nQuestion: How do I deploy Docker?");
// Result: Answer based on YOUR actual Docker deployment docs
Intuizione chiave: Memorizzazione della conoscenza separata (ricerca) dal ragionamento (LLM). Aggiorna i tuoi documenti, la ricerca rimane attuale. Non è necessaria alcuna riqualificazione.
RAG si basa su decenni di ricerca e ricerca NLP. Capire questa storia aiuta a capire perché RAG è progettato il modo in cui è e quali problemi risolve.
Ricerca basata su parole chiave:
Il problema: Questi corrispondono caratteri, non significato. Cerca "orchestrazione contenitore" e non troverai "Docker Swarm" a meno che non compaiono quelle parole esatte. Potrebbero gestire errori di battitura ma non semantica.
Watson (IBM, 2011):
Modelli di comprensione della lettura:
Transformers (2017): "L'attenzione è tutto ciò di cui hai bisogno"
BERT (2018):
GPT-2/3 (2019/2020):
Rappresentazioni vettoriali dense:
BART (Facebook AI, ottobre 2019):
M2M-100 (Facebook AI, ottobre 2020):
Esempio del mondo reale: Mio strumento di traduzione automatica neurale utilizza BART come modello di traduzione ripiego quando i servizi primari non sono disponibili, dimostrando come questi modelli basati sui trasformatori siano diventati pratici elementi costitutivi per i sistemi di produzione.
Il giornale seminale "Generazione aumentata di recupero per attività NLP intensive della conoscenza" di Patrick Lewis et al. (Facebook AI Research) ha presentato formalmente RAG, costruendo direttamente su BART:
Che cosa hanno combinato:
Risultati: I sistemi RAG hanno superato i modelli molto più ampi sulle attività ad alta intensità di conoscenza pur essendo più efficienti e aggiornati. Si potrebbe aggiornare la base di conoscenze senza riqualificare il modello.
ChatGPT, GPT-4 e Claude hanno reso RAG essenziali:
Oggi (2024-2025): RAG è lo standard de facto per i sistemi di produzione AI che necessitano di precisione e auditability. Ogni grande azienda AI offre RAG tooling.
Prima di tuffarsi nei dettagli tecnici (che copriamo nella parte 2), capiamo il flusso di lavoro ad alto livello.
I sistemi RAG operano in tre fasi distinte:
flowchart LR
A[Your Documents] --> B[Split into Chunks]
B --> C[Generate Embeddings]
C --> D[Store in Vector DB]
style C stroke:#f9f,stroke-width:2px
style D stroke:#bbf,stroke-width:2px
Cosa succede?
Concetto chiave: Significati simili producono vettori simili, così "Docker container" e "piattaforma di containerizzazione" finiscono insieme nello spazio vettoriale.
flowchart LR
A[User Question] --> B[Generate Query Embedding]
B --> C[Search Vector DB]
C --> D[Top K Most Similar Chunks]
style B stroke:#f9f,stroke-width:2px
style C stroke:#bbf,stroke-width:2px
Cosa succede?
Perché funziona: "Come faccio a distribuire i container?" (query) è semanticamente simile ai pezzi sulla distribuzione di Docker, anche se le parole esatte differiscono.
flowchart TB
A[User Question] --> B[Build Prompt]
C[Retrieved Context] --> B
B --> D[LLM]
D --> E[Generated Answer with Citations]
style B stroke:#f9f,stroke-width:2px
style D stroke:#bbf,stroke-width:2px
Cosa succede?
La magia: L'LLM non puo' avere allucinazioni che non siano nel contesto, puo' solo sintetizzare e spiegare cio' che e' stato fornito.
Tracciamo una query attraverso il sistema:
L'utente chiede: "Come posso usare Docker Compose?"
Fase 1 - Recupero:
Query embedding: [0.234, -0.891, 0.567, ...]
Search vector DB for similar embeddings...
Retrieved chunks:
1. "Docker Compose is a tool for defining multi-container applications..." (similarity: 0.92)
2. "To use Docker Compose, create a docker-compose.yml file..." (similarity: 0.87)
3. "The docker-compose up command starts all services..." (similarity: 0.83)
Fase 2 - Generazione:
Prompt to LLM:
"Context:
[1] Docker Compose is a tool for defining multi-container applications...
[2] To use Docker Compose, create a docker-compose.yml file...
[3] The docker-compose up command starts all services...
Question: How do I use Docker Compose?
Answer (use the context above):"
LLM Response:
"To use Docker Compose [1], start by creating a docker-compose.yml file [2] that
defines your services. Then run 'docker-compose up' to start all services [3]..."
Risultato: Risposta accurata con citazioni implicite dalla documentazione.
Comprendere quando utilizzare RAG (e quando non) richiede il confronto con alternative.
| Aspect | RAG | Fine-Tuning |
|---|---|---|
| Aggiornamenti della conoscenza | Instant (just update the knowledge base) | Richiede riqualificazione |
| Costo | Basso (immagazzinamento + inserimento) | Alto (tempo di allenamento della GPU) |
| Precisione | Macinato a terra in sorgenti | Può avere allucinazioni |
| Personalizzazione | Limitato al recupero | Adattamento profondo del modello |
| Spiegabilità | Alto (può citare sorgenti) | Basso (scatola nera) |
| Meglio per | Attività ad alta intensità di conoscenza | Adattamento stile/formato |
Quando usare Fine-Tuning:
Quando usare RAG:
Puoi combinare entrambi? Sì! Fine-tune per lo stile, RAG per i fatti.
I moderni LLM vantano enormi finestre di contesto (GPT-4: 128K tokens, Claude: 200K tokens). Perché non scaricare tutti i documenti nel contesto?
Problemi con un contesto lungo:
Quando il contesto lungo ha senso:
Quando RAG ha senso:
Migliori pratiche: Utilizzare RAG per selezionare il contenuto più pertinente, quindi utilizzare un contesto lungo per tale sottoinsieme.
Pochi colpi di suggerimento (che forniscono esempi nel prompt) è una semplice linea di base.
Prompt esempio:
Examples:
Q: What is Docker?
A: Docker is a containerization platform...
Q: How does Kubernetes work?
A: Kubernetes orchestrates containers...
Q: What is my new question?
A: [LLM generates answer]
Limitazioni:
Miglioramento degli orientamenti:
Si può pensare a RAG come "automatizzato pochi colpi di spinta in scala."
È possibile combinare i RAG con la ricerca full-text tradizionale utilizzando la Reciproca Rank Fusion (RRF).
Perché ibrido?
public async Task<List<SearchResult>> HybridSearchAsync(string query)
{
// Run both searches in parallel
var semanticTask = SemanticSearchAsync(query, limit: 20);
var keywordTask = KeywordSearchAsync(query, limit: 20);
await Task.WhenAll(semanticTask, keywordTask);
var semanticResults = await semanticTask;
var keywordResults = await keywordTask;
// Combine using Reciprocal Rank Fusion
return ApplyRRF(semanticResults, keywordResults);
}
private List<SearchResult> ApplyRRF(
List<SearchResult> list1,
List<SearchResult> list2,
int k = 60)
{
var scores = new Dictionary<string, double>();
// Score from first list
for (int i = 0; i < list1.Count; i++)
{
var id = list1[i].Id;
scores[id] = scores.GetValueOrDefault(id, 0) + 1.0 / (k + i + 1);
}
// Score from second list
for (int i = 0; i < list2.Count; i++)
{
var id = list2[i].Id;
scores[id] = scores.GetValueOrDefault(id, 0) + 1.0 / (k + i + 1);
}
// Merge and sort by combined score
var allResults = list1.Concat(list2)
.GroupBy(r => r.Id)
.Select(g => g.First())
.OrderByDescending(r => scores[r.Id])
.ToList();
return allResults;
}
Ora che capisci cos'è RAG, da dove viene, e come si confronta con le alternative, ecco perché conta:
1. Democrazia dell'IA
2. Precisione pratica
3. Sempre up-to-date
4. Privacy e controllo
5. Costo-efficace
6. Applicazioni versatili
Abbiamo rintracciato l'evoluzione di RAG:
Principali intuizioni della Parte 1:
Il modello mentale in tre fasi:
Tutto il resto è ottimizzazione.
Ora capisci. cosa RAG è, perché ha importanza, e dove Ma come funziona davvero sotto il cofano?
Dentro Parte 2: Architettura e interni RAG, ci immergiamo nei dettagli tecnici:
Gasdotto completo RAG:
Interni LLM:
Immersioni tecniche profonde:
Continuare alla Parte 2: Architettura e Interni →
Dopo la Parte 2, sarete pronti per la Parte 3, dove costruiremo sistemi reali, risolveremo le sfide comuni ed esploreremo tecniche avanzate come HyDE, RAG multi-query e compressione contestuale.
Documenti di fondazione:
Ulteriore lettura:
Avanti in questa serie:
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.