* Claudio Curci  /  Php developer

4. lezione - Come funziona un RAG?


Spero che, arrivati a questo punto, abbiate finalmente scoperto cosa si cela dietro sigle come LLM ed embedding. Oggi ne sveliamo un’altra che avrete sicuramente sentito nominare spesso: RAG, ovvero Retrieval-Augmented Generation.

Quali sono le fasi di un RAG?

Ho una buona notizia: se avete compreso le prime tre lezioni, allora sapete già cosa sia un RAG. Un processo tipico di RAG è il seguente:

  • si spezzetta un testo in parti più piccole (chunking), in modo da renderle più gestibili e facilmente contestualizzabili dagli step successivi;
  • i testi vengono convertiti in vettori numerici (embedding), che vengono solitamente salvati in un database vettoriale;
  • anche le query di ricerca (ad esempio le domande poste da un utente) vengono trasformate in vettori numerici, che vengono poi utilizzati per interrogare il database (retrieval);
  • se necessario, i documenti estratti possono essere riordinati tramite un ulteriore passaggio di reranking, prima di essere passati al modello linguistico;
  • infine, i risultati vengono forniti a un modello linguistico (LLM), che genera la risposta più adeguata alla domanda iniziale.

Come si può notare, si tratta di concetti che abbiamo già incontrato. Possiamo quindi descrivere un RAG come una pipeline che, interrogando opportune fonti — spesso basate su rappresentazioni vettoriali, ma in alcuni casi anche su semplice testo — recupera informazioni rilevanti da una base dati e le utilizza per generare una risposta.

Può esistere un RAG senza embedding?

A parte l’embedding delle query, tecnicamente sì. È importante ricordare che la “R” di RAG sta per retrieval, quindi una fase di ricerca dei dati è sempre necessaria. Tuttavia, questa può essere realizzata anche senza embedding, ad esempio attraverso database relazionali, filtri strutturati o algoritmi di ricerca basati sulla frequenza delle parole, come BM25.

Può esistere un RAG senza LLM?

Sì, ma solo in parte. Se non è necessaria una risposta in linguaggio naturale e ci si limita a restituire un elenco di risultati pertinenti, il modello linguistico diventa superfluo. In questo caso ci troviamo più vicini a un sistema di retrieval, spesso basato su embedding, utile per trovare informazioni semanticamente simili, cosa che i database tradizionali non gestiscono altrettanto bene. Tuttavia, va ricordato che la “G” di RAG sta per generation: senza una componente generativa, in senso stretto non si può parlare di RAG completo.

Dal 1997, il Php a Roma!

Claudio Curci
Da quasi trent'anni mi dedico alla programmazione, con oltre 20 anni di esperienza come freelance. Credo in un approccio al lavoro in cui la competenza si sposa con la serenità, dove le urgenze sono vizi, non virtù. Mi impegno a supportare i clienti con risposte chiare e soluzioni concrete, evitando inutili tecnicismi. "La vera efficienza si trova nella serenità." – Henry David Thoreau
Infocurci Questo sito non utilizza cookie, non mostra nessuna pubblicità e non profila nulla. Navigate serenamente, siete i benvenuti.

Ambienti / piattaforme di sviluppo

Amazon Booking.com CodeIgniter Joomla Magento Moodle Kelkoo Kigo PayPal Symfony Wordpress Airbnb FormaLms Laravel Prestashop Shopify Whatsapp