Database vettoriali

From Systems analysis Wiki
Jump to navigation Jump to search

I database vettoriali sono sistemi specializzati di archiviazione e ricerca, ottimizzati per lavorare con rappresentazioni numeriche ad alta dimensionalità (vettori) di dati non strutturati[1]. Nel contesto dei modelli linguistici di grandi dimensioni (LLM), garantiscono una ricerca semantica efficiente e rappresentano un componente chiave dei moderni sistemi di intelligenza artificiale, in particolare nell'architettura RAG.

A differenza dei tradizionali database relazionali, orientati alle corrispondenze esatte, i database vettoriali sono specializzati nella ricerca approssimativa dei vicini più prossimi (Approximate Nearest Neighbor, ANN), individuando oggetti semanticamente affini in uno spazio ad alta dimensionalità[2].

Fondamenti dei database vettoriali

Embeddings - Rappresentazioni vettoriali

Le rappresentazioni vettoriali (embeddings) sono rappresentazioni numeriche di testo, immagini, audio e altri tipi di dati sotto forma di vettori. Il principio fondamentale è che oggetti semanticamente affini (ad esempio, parole con significato simile) si trovano vicini tra loro in questo spazio vettoriale[3].

Gli embedding testuali moderni vengono creati utilizzando modelli basati sull'architettura transformer, che applicano meccanismi di attenzione (self-attention) per la comprensione del contesto. La dimensionalità di tali rappresentazioni varia da 256 a 1024 dimensioni e oltre per la maggior parte dei modelli contemporanei[4].

Metriche di similarità

Per misurare la «distanza» o la similarità tra vettori vengono utilizzate diverse metriche:

  • Similarità del coseno (cosine similarity): Misura il coseno dell'angolo tra due vettori. Particolarmente efficace per gli embedding testuali, poiché tiene conto della direzione dei vettori e non della loro magnitudine[5].
  • Distanza euclidea (L2): Distanza rettilinea standard tra due punti nello spazio.
  • Prodotto scalare (dot product): Simile alla similarità del coseno, ma non normalizzato[6].

Algoritmi di indicizzazione

Per la ricerca rapida in spazi ad alta dimensionalità vengono utilizzati algoritmi ANN specializzati.

HNSW (Hierarchical Navigable Small World)

L'algoritmo HNSW utilizza il concetto di «piccolo mondo» e una struttura gerarchica a più livelli di grafi. I livelli superiori contengono collegamenti lunghi per spostarsi rapidamente nello spazio (ricerca grossolana), mentre quelli inferiori contengono collegamenti brevi per l'individuazione precisa dei vicini. HNSW presenta una complessità temporale logaritmica O(log N) ed è la scelta preferita per la maggior parte dei moderni database vettoriali[7].

IVF (Inverted File)

L'algoritmo IVF suddivide lo spazio in cluster mediante la clusterizzazione k-means. La ricerca avviene in un numero limitato di cluster vicini, il che accelera notevolmente il processo. Il numero di cluster viene solitamente scelto come √N, dove N è il numero totale di vettori nel dataset[8].

LSH (Locality-Sensitive Hashing)

L'algoritmo LSH utilizza una famiglia di funzioni hash che con alta probabilità generano hash identici per vettori vicini. Ciò consente di raggruppare rapidamente oggetti simili[9].

Database vettoriali più diffusi

  • Pinecone: Database vettoriale cloud completamente gestito con architettura serverless.
  • Qdrant: Database ad alte prestazioni scritto in Rust, con supporto per filtraggio avanzato e transazioni compatibili con ACID.
  • Milvus: Database open-source scalabile con architettura cloud-native. Supporta numerosi tipi di indici, incluse varianti con accelerazione GPU.
  • Weaviate: Database vettoriale open-source con API GraphQL e supporto per grafi della conoscenza.
  • Chroma: Database open-source leggero, ottimizzato per la prototipazione rapida e la sperimentazione.
  • FAISS: Libreria di Meta, che non è un database completo, ma fornisce algoritmi di indicizzazione ad alte prestazioni per dati statici.

Applicazione con LLM: architettura RAG

Retrieval-Augmented Generation (RAG) è un'architettura in cui un LLM viene arricchito con una base di conoscenza esterna tramite ricerca vettoriale. I sistemi RAG sono composti da due componenti principali[10]:

  1. Retriever: Il componente di ricerca che utilizza il database vettoriale per trovare informazioni rilevanti in base alla richiesta dell'utente.
  2. Generator - Generatore: L'LLM che utilizza la richiesta originale e le informazioni recuperate dal retriever per generare la risposta.

Per un funzionamento efficace del RAG viene utilizzata la ricerca ibrida — una combinazione di ricerca semantica (vettoriale) e lessicale (per parole chiave, ad esempio BM25), che garantisce risultati più precisi e rilevanti.

Tendenze e sviluppi futuri

Il mercato dei database vettoriali registra una crescita esplosiva, prevista da 1,98 miliardi di dollari nel 2023 a 7,13 miliardi di dollari entro il 2029 (CAGR 23,7%)[11]. Le principali direzioni di sviluppo includono:

  • Sistemi multimodali: Supporto per la ricerca simultanea su testo, immagini, audio e video in un unico spazio vettoriale.
  • Ottimizzazione automatica: Utilizzo del Machine Learning per la selezione automatica degli indici e dei parametri ottimali.
  • Edge computing: Sviluppo di soluzioni compatte per dispositivi mobili e IoT.
  • Calcolo quantistico: Potenziale accelerazione esponenziale della ricerca per similarità.
  • Chip neuromorfici: Imitazione del funzionamento del cervello per un consumo energetico ultrabasso durante l'esecuzione delle ricerche.

Riferimenti

  • Sito ufficiale di Pinecone
  • Sito ufficiale di Qdrant
  • Sito ufficiale di Milvus
  • Sito ufficiale di Weaviate

Bibliografia

  • Malkov, Y.A.; Yashunin, D.A. (2016). Efficient and Robust Approximate Nearest Neighbor Search Using Hierarchical Navigable Small World Graphs. arXiv:1603.09320.
  • Johnson, J.; Douze, M.; Jégou, H. (2017). Billion-Scale Similarity Search with GPUs. arXiv:1702.08734.
  • Datar, M. et al. (2004). Locality-Sensitive Hashing Scheme Based on p-Stable Distributions. SoCG 2004 paper.
  • Guo, N. et al. (2020). ScaNN: Efficient Vector Similarity Search at Scale. In: Proc. ACM SIGKDD 2020, pp. 1571-1580. DOI:10.1145/3394486.3403339.
  • Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
  • Wang, X. et al. (2021). Milvus: A Purpose-Built Vector Data Management System. In: SIGMOD 2021. DOI:10.1145/3448016.3457550.
  • Lee, J. et al. (2022). OOD-DiskANN: Efficient and Scalable Graph ANNS for Out-of-Distribution Queries. arXiv:2211.12850.
  • Fan, D. et al. (2023). Survey of Vector Database Management Systems. arXiv:2310.14021.
  • Ren, R. et al. (2024). Survey of Filtered Approximate Nearest Neighbor Search over Vector-Scalar Hybrid Data. arXiv:2505.06501.
  • Zhao, H. et al. (2024). Starling: An I/O-Efficient Disk-Resident Graph Index Framework for High-Dimensional Vector Similarity Search. arXiv:2401.02116.
  • Liu, Y. et al. (2025). Memory-Efficient Similarity Search at Billion-Scale: A Taxonomy and Analysis of Vector Compression Techniques. ResearchGate preprint.

Note

  1. «What Is a Vector Database?». CloudRaft. [1]
  2. «What is a Vector Database?». Qdrant Blog. [2]
  3. «What Are Vector Embeddings?». LakeFS. [3]
  4. «What are embeddings?». Zilliz. [4]
  5. Sahoo, A., Maiti, J. «A Comparative Study of Similarity Metrics for Textual Embeddings». arXiv:2501.01234. [5]
  6. «Vector search and dense vector fields». Elastic. [6]
  7. Malkov, Y. A., Yashunin, D. A. «Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs». arXiv:1603.09320. [7]
  8. «The index IVF». FAISS Wiki. [8]
  9. Datar, M., et al. «Locality-Sensitive Hashing Scheme Based on p-Stable Distributions». Symposium on Computational Geometry. [9]
  10. Lewis, P., et al. «Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks». arXiv:2005.11401. [10]
  11. «Vector Database Global Market Report 2024». The Business Research Company. [11]