Database Vettoriali: la gestione dati nell’era dell’IA

Nel panorama tecnologico odierno, i database relazionali tradizionali stanno mostrando i loro limiti di fronte alle crescenti sfide dell’era dell’intelligenza artificiale. Progettati per gestire dati strutturati con relazioni predefinite, questi sistemi faticano a rispondere alle esigenze moderne, soprattutto quando si tratta di contenuti non strutturati, come testi, immagini, audio e video, ormai fondamentali nell’ecosistema digitale.

> Scopri il catalogo dei corsi dedicato alla Database Adminsitration

Le sfide non si fermano qui. I database tradizionali faticano a sostenere le prestazioni richieste dalle applicazioni moderne di data science e intelligenza artificiale, specialmente quando si tratta di operazioni di ricerca che non si basano su corrispondenze esatte. Quando confrontati con i big data, emergono problemi di scalabilità, latenza e conflitti di concorrenza che ne limitano l’efficacia. Inoltre, l’integrazione con le moderne tecnologie di machine learning e con i Large Language Models (LLM) risulta complessa e poco efficiente, rendendo difficile supportare funzionalità avanzate come la classificazione automatica, il clustering e i sistemi di raccomandazione.

È in questo contesto che emerge la necessità di un approccio radicalmente diverso alla gestione dei dati, una soluzione che possa superare questi limiti strutturali e rispondere alle esigenze dell’era dell’AI. La soluzione si può trovare nei database vettoriali, che offrono un paradigma nuovo e diverso nella gestione dei dati.

Che cosa sono i database vettoriali?

Un database vettoriale è un tipo di database specializzato nella memorizzazione, nell’indicizzazione e nell’interrogazione di vettori ad alta dimensionalità. Questi vettori, noti anche come embedding, sono rappresentazioni matematiche di dati complessi e vengono generati applicando trasformazioni o funzioni di embedding a dati non strutturati come testo, immagini, audio e video. I database vettoriali sono progettati per gestire la complessità e la scala di questi dati vettoriali, consentendo di estrarre informazioni e analizzare i dati in tempo reale.

Per esempio, con un database vettoriale, è possibile:

  • Cercare canzoni che risuonano con una particolare melodia basandosi su melodia e ritmo.
  • Trovare articoli che si allineano con un altro articolo specifico per tema e prospettiva.
  • Identificare dispositivi che rispecchiano le caratteristiche e le recensioni di un determinato apparecchio.

Come funzionano?

I database vettoriali si distinguono dai database tradizionali per il loro approccio alla ricerca. Mentre i database relazionali eseguono ricerche basate su corrispondenze esatte di valori specifici, i database vettoriali utilizzano metriche di similarità per identificare i vettori più simili a una query data. Tra le metriche di similarità comunemente utilizzate troviamo:

  • Cosine similarity: misura l’angolo tra due vettori, con valori più vicini a 1 che indicano una maggiore similarità.
  • Distanza euclidea: calcola la distanza in linea retta tra due punti nello spazio vettoriale, con valori più vicini a 0 che indicano una maggiore similarità.
  • Dot product: misura la proiezione di un vettore sull’altro, con valori più alti che indicano una maggiore similarità.

Per ottimizzare la ricerca di similarità, i database vettoriali utilizzano algoritmi di Approximate Nearest Neighbor (ANN). Questi algoritmi trovano un punto dati molto vicino al punto di query, anche se non necessariamente il più vicino in assoluto. Sebbene questa sembri una soluzione approssimativa, è la chiave per ottenere una ricerca di similarità veloce ed efficiente: piuttosto che richiedere enormi risorse e tempi prolungati, l’ANNS identifica punti dati sufficientemente vicini, soddisfacendo in modo pratico la maggior parte delle esigenze.

Database vettoriali e modelli linguistici di grandi dimensioni (LLM)

I database vettoriali sono diventati sempre più importanti con l’impiego sempre più esteso dei modelli linguistici di grandi dimensioni (LLM). Gli LLM utilizzano embedding per rappresentare il testo in forma vettoriale e i database vettoriali offrono un modo efficiente per memorizzare, recuperare e gestire queste rappresentazioni, migliorando le capacità degli LLM in diversi modi:

  • Base di conoscenza esterna: i database vettoriali possono fungere da memoria esterna per gli LLM, consentendo loro di accedere e sintetizzare enormi quantità di dati senza la necessità di un costante riaddestramento. Questo è particolarmente utile nel Retrieval-Augmented Generation (RAG), in cui i database vettoriali vengono utilizzati per memorizzare ed estrarre informazioni pertinenti per migliorare le risposte generate dagli LLM.
  • Memoria affidabile: gli LLM eccellono nella generazione di testo simile a quello umano, ma non possono aggiornare dinamicamente la loro base di conoscenza. I database vettoriali possono colmare questa lacuna offrendo una soluzione di archiviazione che può essere continuamente aggiornata con nuove informazioni, garantendo che le risposte degli LLM siano informate dai dati più recenti e pertinenti disponibili.
  • Cache semantica: i database vettoriali possono essere utilizzati per creare una cache semantica per gli LLM, memorizzando le risposte generate in precedenza e i relativi embedding. Quando viene inviata una nuova query, il database vettoriale può recuperare rapidamente la risposta memorizzata nella cache più simile, riducendo i tempi di risposta e i costi di calcolo.

> Leggi anche: “Che cosa sono e come funzionano i Large Language Model”

I database vettoriali open source e le loro caratteristiche

Di seguito, una panoramica dei principali database vettoriali open source e delle loro caratteristiche distintive.

  • Milvus: database vettoriale open source progettato specificamente per la gestione di dati vettoriali. Supporta diversi algoritmi ANN, tra i più popolari, HNSW, e locality-sensitive hashing (LSH). Milvus è noto per le sue elevate prestazioni e scalabilità, ed è una scelta popolare per le applicazioni di augmented generation retrieval (RAG). È disponibile sia come servizio self-hosted, sia gestito nel cloud e vanta un’integrazione perfetta con Kubernetes.
  • Weaviate: un database vettoriale open source che si concentra sulla ricerca semantica e sul supporto multimodale. Permette agli utenti di cercare testi in base al loro significato e di trovare contenuti pertinenti su diversi tipi di dati, come testo e immagini. Anche Weaviate offre sia una versione self-hosted sia un’opzione gestita nel cloud.
  • Qdrant: un database vettoriale open source che offre un’API facile da usare e un’architettura distribuita. Supporta funzioni avanzate come i filtri per la ricerca, la ricerca multi-vettoriale e metriche di similarità personalizzate. È disponibile sia come servizio self-hosted, sia nel cloud.
  • Chroma: un database vettoriale open source noto per la sua semplicità e facilità d’uso. Offre un’API Python con un numero limitato di comandi e si concentra sulla fornitura di una ricerca vettoriale veloce e affidabile.

Altri strumenti open source per lavorare con gli embeddings:

  • Vespa è un motore di ricerca open source basato sull’intelligenza artificiale progettato per l’elaborazione di dati su larga scala. Supporta la ricerca vettoriale e offre diverse funzioni, tra cui indicizzazione, ranking e apprendimento automatico. Vespa è utilizzato da aziende come Spotify e Yahoo per applicazioni di RAG.
  • FAISS (Facebook AI Similarity Search) è una libreria open source sviluppata da Facebook Research per la ricerca di similarità efficiente e su larga scala. Offre una varietà di algoritmi di indicizzazione e ricerca, tra cui locality-sensitive hashing (LSH) e ricerca basata su grafi.

La scelta del database vettoriale giusto dipende da una serie di requisiti specifici. Ad esempio, per set di dati di dimensioni ridotte, l’uso di librerie vettoriali come FAISS o HNSWLib può risultare sufficiente, mentre per gestire volumi di dati più ampi sono più indicati database come Milvus o Vespa, che offrono scalabilità e maggiore potenza. I tipi di query influenzano la selezione dell’algoritmo di similarità e del metodo di indicizzazione, poiché ciascun approccio è ottimizzato per particolari tipologie di ricerca. Anche i requisiti di prestazione, inclusi latenza e velocità, hanno un ruolo fondamentale, soprattutto nelle applicazioni in tempo reale che necessitano di risposte immediate.

Sebbene i database vettoriali rappresentino un sistema efficiente per il recupero di informazioni nei framework dei grandi modelli linguistici (LLM), presentano ancora alcune limitazioni, come l’applicazione dei filtri dopo l’esecuzione della query, le ricerche full-text e i meccanismi di ricerca basati su parole chiave. In futuro, questi sistemi dovranno evolversi per superare tali barriere e adattarsi alle esigenze delle tecnologie emergenti. Un’area chiave di sviluppo sarà l’integrazione della multimodalità, per consentire una gestione più efficiente di dati strutturati, semi-strutturati e non strutturati all’interno di un’unica piattaforma. Inoltre, sarà fondamentale migliorare il supporto per i sistemi multi-tenant, così da garantire sicurezza e isolamento tra i dati di utenti diversi senza compromettere l’efficienza operativa. Infine, la ricerca dovrà concentrarsi su soluzioni sempre più scalabili ed economicamente sostenibili per l’archiviazione e il recupero dei dati, così da supportare le applicazioni di intelligenza artificiale in tempo reale su larga scala.

Fonti: 

Ali, M. (2023). The Top 5 Vector Databases. Datacamp.com; DataCamp. https://www.datacamp.com/blog/the-top-5-vector-databases

Ali, M. (2023). Optimizing RAG: A Guide to Choosing the Right Vector Database. Medium. https://medium.com/@mutahar789/optimizing-rag-a-guide-to-choosing-the-right-vector-database-480f71a33139

Han, Y., Liu, C., & Wang, P. (2023). A comprehensive survey on vector database: Storage and retrieval technique, challenge. arXiv preprint arXiv:2310.11703.

HPA. (2023). ⚡Vector Databases per l’A.I. – HPA – Medium. Medium. https://hp-analytics.medium.com/vector-databases-per-la-i-eca1e26f94ac

Jing, Z., Su, Y., Han, Y., Yuan, B., Xu, H., Liu, C., … & Zhang, M. (2024). When large language models meet vector databases: a survey. arXiv preprint arXiv:2402.01763.

Pan, J. J., Wang, J., & Li, G. (2024). Survey of vector database management systems. The VLDB Journal33(5), 1591-1615.

Tareaf, R. B., AbuJarour, M., Engelman, T., Liermann, P., & Klotz, J. (2024, January). Accelerating Contextualization in AI Large Language Models Using Vector Databases. In 2024 International Conference on Information Networking (ICOIN) (pp. 316-321). IEEE.