Lì puoi trovare una guida completa con esempi scritti in GO.
Retrieval-Augmented Generation (RAG) è un'architettura che sta rivoluzionando il modo in cui interagiamo con i Large Language Model. Questo progetto open source è nato con l'obiettivo di spiegare in dettaglio come funziona RAG e fornire esempi pratici di implementazione utilizzando tecnologie moderne, completamente locali.
Cos'è RAG e Perché è Importante
RAG rappresenta un'alternativa popolare al fine-tuning dei large language model. Invece di riaddestrare un modello ogni volta che i dati cambiano, RAG utilizza un meccanismo di recupero che consente una generazione di contenuti più flessibile, sfruttando modelli pre-addestrati combinati con un database di conoscenze.
Il funzionamento è elegante nella sua semplicità: i contenuti vengono memorizzati in un database vettoriale, e quando un utente pone una domanda, il sistema trasforma la query in un vettore e utilizza una ricerca vettoriale per trovare le informazioni più rilevanti. Queste informazioni vengono poi fornite al modello linguistico come contesto, consentendo risposte più accurate e aggiornate.
Spiegazione
Retrieval-Augmented Generation (RAG) è un'alternativa popolare al fine-tuning dei large language model, permette una generazione di contenuti più flessibile sfruttando modelli pre-addestrati e un meccanismo di recupero. I contenuti vengono memorizzati su un database, le informazioni rilevanti per la query dell'utente possono essere trovate trasformando la query in un vettore e utilizzando una ricerca vettoriale sul database per trovare i dati più pertinenti a ciò di cui l'utente sta parlando. Memorizzando i dati su un database puoi ottenerli facilmente senza addestrare un modello ogni volta che i dati cambiano.
Un esempio popolare di RAG è il nuovo strumento AI Overview di Google.
Quando cerchi qualcosa su Google, lo strumento overview prende i primi risultati della ricerca e cerca di rispondere alla tua domanda utilizzando un sistema RAG.
Questo è un caso d'uso perfetto per RAG, i dati recuperati dai risultati di ricerca cambiano costantemente, sarebbe impossibile addestrare il modello su nuovi dati ogni volta che qualcuno fa un aggiornamento, RAG permette maggiore flessibilità al piccolo costo delle prestazioni.
Vantaggi di un'Implementazione Locale
Implementare RAG localmente presenta numerosi vantaggi rispetto alle soluzioni cloud:
Privacy Completa - I tuoi dati non lasciano mai la tua macchina. Questo è fondamentale quando si lavora con informazioni sensibili o proprietarie.
Costi Ridotti - Non ci sono costi per chiamate API o storage cloud. Dopo l'investimento iniziale in hardware, il sistema può funzionare indefinitamente senza costi ricorrenti.
Controllo Totale - Hai il controllo completo su modelli, dati e configurazioni. Puoi sperimentare liberamente senza limitazioni imposte da servizi esterni.
Bassa Latenza - Le richieste non devono viaggiare su internet, risultando in tempi di risposta più rapidi, specialmente per query ripetute.
Casi d'Uso Pratici
Le applicazioni di un sistema RAG locale sono numerose:
Chatbot aziendali - Crea assistenti virtuali che possono rispondere a domande basate sulla documentazione interna dell'azienda, mantenendo i dati completamente privati.
Ricerca documenti - Implementa sistemi di ricerca semantica su grandi archivi documentali, permettendo di trovare informazioni anche quando i termini esatti non corrispondono.
Gestione della conoscenza - Costruisci sistemi di gestione della conoscenza che permettono query in linguaggio naturale sulle basi di conoscenza aziendali.
Analisi del codice - Crea assistenti che possono rispondere a domande su grandi codebase, suggerendo implementazioni o spiegando pattern complessi.
Conclusioni
Local RAG Example dimostra che è possibile costruire sistemi di intelligenza artificiale sofisticati senza dipendere da servizi cloud o API esterne. Con le giuste tecnologie e una buona comprensione dell'architettura RAG, puoi creare soluzioni potenti che rispettano la privacy e offrono il controllo completo sui tuoi dati.
Il progetto rappresenta un'eccellente risorsa educativa per chiunque voglia comprendere a fondo come funziona RAG, e un solido punto di partenza per implementazioni in produzione. La combinazione di PostgreSQL, Ollama e Go crea una base tecnologica robusta e scalabile, perfetta sia per la sperimentazione che per applicazioni reali.
Questa informativa spiega come vengono utilizzati i cookie su ciannavei.dev (il “Sito”), il portfolio
personale di Francesco Ciannavei. Domande? Scrivimi a
francesco@ciannavei.dev.
01 Cosa sono i cookie?
I cookie sono piccoli file di testo che un sito web memorizza sul tuo dispositivo quando lo visiti. Permettono al Sito di
ricordare alcune informazioni tra un caricamento di pagina e l’altro — ad esempio se hai acconsentito a essere
conteggiato nelle statistiche di visita. Le stesse regole descritte qui valgono per qualsiasi tecnologia simile che memorizzi o
legga informazioni sul tuo dispositivo.
02 Come chiedo il tuo consenso
Alla prima visita compare questo pannello con due scelte di pari peso: Accetta tutti e
Rifiuta tutti. Nulla viene misurato finché non scegli Accetta tutti. Se scegli
Rifiuta tutti, nessun cookie analitico viene installato e nessuna visita viene registrata.
La tua risposta viene ricordata così da non doverti chiedere il consenso a ogni pagina. Puoi modificarla in qualsiasi momento
— vedi la sezione 07.
03 I cookie utilizzati da questo Sito
Non ci sono cookie pubblicitari, né tracker di terze parti, né cookie di social o di contenuti incorporati. Entrambi i cookie
qui sotto sono di prima parte. Non vendo né condivido alcun dato.
trackingStrettamente necessario
Finalità
Conserva la tua risposta (true o false) così che questo pannello non ricompaia a ogni pagina.
Impostato
Quando scegli Accetta tutti o Rifiuta tutti
Durata
12 mesi
tracking_sessionAnalitico
Finalità
Collega le pagine che apri in una stessa sessione a un’unica visita, così che più visualizzazioni non vengano
contate come visitatori diversi.
Impostato
Solo dopo che scegli Accetta tutti
Durata
Fino alla chiusura del browser
Il cookie tracking contiene soltanto true o false. Il cookie
tracking_session è un identificatore casuale privo di significato al di fuori delle mie statistiche ed è leggibile
solo dal server, mai dagli script della pagina.
04 Cosa raccolgono le statistiche
Se — e solo se — accetti, le mie statistiche registrano, per ogni pagina visitata:
l’indirizzo della pagina che hai aperto sul Sito;
la pagina di provenienza, quando il browser la comunica;
l’identificazione del browser (lo user agent: browser, versione, sistema operativo);
il tuo indirizzo IP, usato per ricavare una posizione approssimativa (a livello di Paese);
l’identificatore di sessione descritto sopra e la data e ora della visita.
Uso questi dati solo per capire quali parti del mio portfolio vengono lette. Non c’è profilazione, né pubblicità, né
processi decisionali automatizzati.
Le statistiche girano sul mio server: nulla viene inviato a Google Analytics o ad altri servizi di terze parti e non è coinvolto
alcun cookie di terze parti. Il Sito è distribuito tramite la rete di Cloudflare, che serve le pagine dalla località più vicina
a te; la mia image CDN è codice mio e non imposta cookie.
05 Base giuridica e conservazione
Ai sensi del GDPR e della Direttiva ePrivacy:
le statistiche — il cookie tracking_session e i dati sopra indicati — si basano sul
tuo consenso, che fornisci scegliendo Accetta tutti e che puoi revocare in qualsiasi momento;
il cookie tracking è strettamente necessario per registrare e rispettare la tua risposta, quindi
non richiede consenso.
Conservazione: i dati di visita sono conservati per un massimo di 12 mesi, dopodiché vengono
eliminati.
06 I tuoi diritti
Ai sensi del GDPR hai il diritto di accedere ai dati che ti riguardano, di chiederne la rettifica o la cancellazione, di
limitarne il trattamento e di riceverne una copia in formato portabile. In pratica non posso dare seguito a nessuno di
questi, perché non ho modo di stabilire quali visite siano tue. Qui non esistono account né nomi, e
l’identificatore di sessione — l’unico appiglio che una visita ha — non ti viene mai mostrato e sparisce
nel momento in cui chiudi il browser. L’articolo 11 del GDPR disciplina proprio questo caso: quando il titolare non è
effettivamente in grado di identificare la persona, quei diritti non si applicano, purché lo dichiari. Questo paragrafo è la
dichiarazione.
L’eccezione è se puoi identificare tu stesso i tuoi dati. Finché la sessione di navigazione è aperta, gli strumenti per
sviluppatori del browser ti mostrano il valore del cookie tracking_session: inviamelo, insieme a un’idea
approssimativa di quando hai visitato il Sito, a francesco@ciannavei.dev e darò
seguito alla tua richiesta. Non userò invece l’indirizzo IP: non posso verificare che un indirizzo appartenga a chi lo
richiede, e rispondere su quella base significherebbe consegnare i dati di qualcun altro.
Due diritti restano intatti, perché nessuno dei due richiede che io sappia chi sei:
revocare il consenso in qualsiasi momento — il pulsante cookie presente su ogni pagina interrompe ogni
ulteriore registrazione e non pregiudica quanto raccolto lecitamente in precedenza (vedi la sezione 07);
presentare reclamo all’autorità di controllo (in Italia, il Garante per la protezione dei dati
personali).
07 Modificare o revocare il consenso
Puoi cambiare idea quando vuoi:
usa il pulsante cookie nell’angolo in basso di ogni pagina per riaprire questo pannello e rispondere di nuovo; oppure
elimina i cookie tracking e tracking_session dalle impostazioni del browser — il pannello
ricomparirà alla visita successiva.
La maggior parte dei browser consente anche di bloccare o eliminare del tutto i cookie dalle proprie impostazioni.
08 Modifiche a questa informativa
Potrei aggiornare questa informativa se il Sito o la normativa cambiano. La data in alto riflette sempre la versione corrente.