Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

RAG: dalla progettazione al deployment

Mettere al lavoro una RAG (Retrieval-Augmented Generation) per realizzare un nostro motore di ricerca generativo
Mettere al lavoro una RAG (Retrieval-Augmented Generation) per realizzare un nostro motore di ricerca generativo
Link copiato negli appunti

Una delle applicazioni più importanti al giorno d'oggi è la RAG (Retrieval-Augmented Generation). Non solo per la sua utilità pratica ma anche per tutti i riflessi di precisione, affidabilità e privacy che porta in azienda.

Stiamo parlando di una sorta di motore di ricerca, in grado di generare risposte con tutta la fantasia e creatività human-style della nuova Intelligenza Artificiale ma che accede ad un bacino di informazioni non predisposte da aziende remote, come quelle che producono i più comuni modelli, ma estratte dai documenti che noi le passeremo.

Ciò è importantissimo per tutta una serie di motivi:

  • le informazioni su cui si basa sono documenti che scegliamo noi, di cui conosciamo la qualità e l'affidabilità. Tra l'altro si tratta di materiale che, soprattutto se cresciuto all'interno della nostra azienda, un classico motore di ricerca non conosce;
  • possiamo trattare i documenti in maniera del tutto riservata visto che la nostra RAG li utilizzerà e custodirà in ambienti da noi predisposti e probabilmente sicurizzati dietro firewall e all'interno di server gestiti dai nostri sistemisti;
  • disporremo comunque della potenza dell'Intelligenza Artificiale generativa che però sarà usata soprattutto per ottenere delle risposte scritte in linguaggio naturale e più discorsivo;

Quello che impareremo nelle prossime lezioni consiste nel mettere al lavoro una RAG partendo da nostri documenti ed elaborandoli fino a realizzare un nostro motore di ricerca generativo che potrà essere messo a disposizione di utenti via chatbot, API o interfaccia web.

Creazione di una RAG: le componenti

Creare la propria RAG è un processo da svolgere in più fasi che possono anche aumentare a seconda dei risultati da ottenere, la complessità del materiale e la specificità delle interrogazioni che gli utenti inoltreranno. Il procedimento consisterà nel raccogliere documenti da varie fonti, processarli fino al loro immagazzinamento in un database vettoriale, specifico per ricerche di similarità.

L'applicazione ovvero la RAG in produzione dovrà accedere al database vettoriale e, in base al prompt della richiesta utente, generare la miglior risposta possibile.

Iniziamo però a riconoscere le principali componenti che andremo poi via via a sviluppare nelle prossime lezioni:

  • Document loader: componente che si occupa del recupero di documenti da varie sorgenti ed in diversi formati. L'esito di questa fase consiste in una mole di elementi inseriti in oggetti di tipo Document;
  • Text splitter: lavora sui documenti scaricati rendendoli più "digeribili" suddividendoli in pezzettini comunemente detti chunk. La loro dimensione, la tecnica di suddivisione ed il modo in cui saranno sovrapponibili tra loro sarà determinante per la buona riuscita della RAG;
  • Embedder: componente che trasforma i chunk in vettori numerici, essi saranno immagazzinati in un database, per l'appunto, "vettoriale";
  • Vector Store: il database vettoriale ospiterà i vettori e sarà in grado di individuare frasi inerenti alla richiesta dell'utente con calcoli di similarità.

La filiera produttiva così tracciata è uno schema di componenti essenziali ma, come si può immaginare, a seconda della tematica si potranno affrontare ulteriori fasi. Ad esempio, ci potrà essere una fase di preprocessing dei documenti che potrà integrarli, snellirli, pulirli e magari renderli più digeribili per lo splitter.

Oppure potremo avere fasi di pulizia che provvederanno a eliminare le parole meno significative dai documenti o magari ad aggiungervi frasi che potrebbero essere una sorta di traduzione di tabelle o dati strutturati non facilmente interpretabili. Per tutto questo genere di attività il linguaggio Python offre moltissimi strumenti che potrebbero variare da tool tipo NLTK (Natural Language Toolkit), per l'interpretazione del linguaggio, a PySpark, ideale per contesti Big Data, in casi in cui la mole di informazioni iniziasse a essere rilevante, caso assolutamente non impossibile.

Messa in produzione di una RAG

Tutto il procedimento descritto serve a produrre una RAG, essenzialmente a popolare il database vettoriale. Una volta messa in produzione il nostro compito sarà quello di produrre un'interfaccia di interrogazione (visuale, web, mobile, API, testuale, etc) in cui un LLM riuscirà a rispondere ad input utente accedendo ad una base di informazioni che estrarrà dal database vettoriale.

Quello che dobbiamo fare ora non è altro che iniziare a creare la pipeline di produzione di una RAG, un componente alla volta, per poi metterla alla prova con delle interrogazioni.

Se vuoi aggiornamenti su RAG: dalla progettazione al deployment inserisci la tua email nel box qui sotto:

Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.

Ti consigliamo anche