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

Database vettoriali: il ruolo nelle RAG

Una panoramica sui database vettoriali: i tipi più comuni, le funzionalità e le basi per scegliere quale integrare in un progetto RAG
Una panoramica sui database vettoriali: i tipi più comuni, le funzionalità e le basi per scegliere quale integrare in un progetto RAG
Link copiato negli appunti

Iniziare a parlare di database vettoriali è il momento migliore per ricapitolare il funzionamento di una RAG. Questi elementi sono finalizzati all'immagazzinamento dei vettori, frutto dell'embedding, che rappresentano le informazioni prelevate dai documenti.

Ricapitolando, quello che succede è questo:

  • decidiamo quali documenti la nostra RAG deve conoscere, li individuiamo e li scarichiamo in locale;
  • splittiamo i documenti in chunk grazie al text splitter. Sembra un'operazione banale ma metodologia applicata e dimensione dei chunk sono fondamentali per una buona riuscita della RAG;
  • vettorializziamo i chunk trasformando i testi in entità di carattere geometrico tra cui sarà più semplice calcolare una distanza ed individuare affinità;
  • memorizziamo i vettori in un database vettoriale sul quale potremo svolgere le interrogazioni che prenderanno piede dalle richieste dell'utente.

In questa lezione, apriamo una panoramica sui database vettoriali comprendendone i tipi più comuni, osservandone le funzionalità e ponendo così le basi per scegliere quello che integreremo nel nostro progetto RAG.

Non bastavano i database "tradizionali"?

Per prima cosa poniamoci una domanda: perché esistono i database vettoriali? Non si sarebbe potuto svolgere le stesse operazioni con database relazionali o NoSQL già esistenti? Probabilmente, sì ma i database vettoriali hanno portato un approccio ed una metodologia tali da rendere il tutto totalmente adeguato all'esecuzione di tali calcoli della distanza.

Tra i principali punti di forza su cui queste tecnologie si fondano troviamo velocità di calcolo delle distanze tra vettori con vari algoritmi selezionati ed ottimizzati. Possibilità di scalare su più nodi (in molti casi) delle attività di calcolo visto che i vettori hanno facilmente migliaia di dimensioni che vanno tutte incluse nell'elaborazione. Nativa integrazione con i sistemi di Intelligenza Artificiale visto che questi strumenti sono pensati essenzialmente per attività di valutazione dei contenuti, vengono spesso prodotti già integrati in framework come Langchain per essere subito disponibili nei progetti.

Come sempre nell'Intelligenza Artificiale il problema principale consiste nella quantità di dati che deve essere trattata. In questo caso, trovandoci ad elaborare molti vettori di dimensioni notevoli, un calcolo preciso richiede molto tempo e non sempre tutta questa precisione è necessaria.

Studiando infatti le offerte di database vettoriali sul mercato, ci accorgiamo che gli algoritmi alla base dovranno offrire il bilanciamento tra precisione e velocità di cui abbiamo bisogno. Ad esempio, in questo settore troviamo algoritmi come il KNN (k-nearest Neighbors) che mira alla massima precisione sacrificando un po' le prestazioni e ciò lo rende adatto a dataset non giganteschi. Al contrario, ANN (Approximate Nearest Neighbors) è una famiglia di metodi che non mira alla precisione assoluta (applica un approccio "approssimativo" come dice il nome stesso) bensì a performance decisamente più alte.

I database vettoriali più comuni

Vediamo ora quali sono i principali tipi di database vettoriali disponibili per l'inclusione in progetti di Intelligenza Artificiale Generativa:

  • Chroma: semplice e integrabile in qualsiasi progetto Python. Ideale per progetti non troppo estesi e perfetto per i primi esperimenti quando si inizia a conoscere questa tecnologia. Generalmente, uno dei primi approcci alla progettazione di RAG;
  • Pinecone: totalmente gestito, semplice da integrare grazie alle sue API, attentissimo alle performance e molto ottimizzato. Una scelta molto diffusa per l'integrazione in progetti di AI generativa;
  • FAISS (Facebook AI Similarity Search): non si tratta di un database a sé stante ma di una libreria, molto potente, ideata per la ricerca di similarità su grandi insiemi di vettori con molte dimensioni da considerare. E' spesso la base tecnologica - il motore, potremmo dire - di molti altri prodotti;
  • Milvus: database vettoriale molto famoso, nato per l'Intelligenza Artificiale ed il Machine Learning, progettato con un occhio particolare alla scalabilità.

Esistono molte più alternative oltre a queste, includendo vari prodotti che nasceranno e adattamenti alla problematica di database già esistenti ma di sicuro quelli che abbiamo indicato sono prodotti molto diffusi, ideali per casi di studio/sperimentazione e produzione, e rappresentano delle ottime basi di conoscenza per la nostra preparazione professionale.

Nella prossima lezione, il passaggio successivo e doveroso sarà quello di mettere al lavoro un meccanismo di istruzione completa di una RAG, dal caricamento dei documenti fino al popolamento del database vettoriale sul quale potremo provare ad eseguire query.

Se vuoi aggiornamenti su Database vettoriali: il ruolo nelle RAG 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