Database relazionali vs database vettoriali
I database hanno da tempo posto sfide alle prestazioni delle applicazioni, rendendo spesso necessaria un'ampia ottimizzazione fine. In risposta, sono emersi nuovi design di database per migliorare scalabilità, prestazioni e produttività degli sviluppatori, semplificando la creazione di specifici tipi di applicazioni.
Tuttavia, queste nuove soluzioni di database comportano i loro compromessi. Ogni design implica compromessi, in cui alcuni vantaggi vengono ottenuti a scapito di altri. Comprendere queste opzioni e i relativi compromessi è essenziale per scegliere lo strumento migliore per le proprie esigenze. In questo articolo, esploreremo i database vettoriali e li confronteremo con i database relazionali tradizionali per aiutarti a prendere una decisione ben informata.
Perché scegliere un database specializzato per la tua applicazione?
Negli ultimi anni, si è registrata un'impennata di database specializzati adattati a casi d'uso specifici:
Graph Database: Progettati per archiviare e analizzare in modo efficiente dati altamente connessi, i database a grafo eccellono nella gestione delle relazioni tra punti dati (knowledge graph).
Search Database: Questi database gestiscono dati non strutturati o semi-strutturati e sono ottimizzati per ricerche e query rapide ed efficienti.
Time Series Database: Ottimizzati per un'elevata velocità di scrittura e query basate sul tempo, i database di serie temporali gestiscono carichi di lavoro con inserimenti di dati marcati temporalmente frequenti e su larga scala.
Key-Value Database: Noti per le loro elevate prestazioni e scalabilità, i database chiave-valore archiviano i dati come semplici coppie chiave-valore senza metadati aggiuntivi, rendendoli ideali per operazioni di lettura e scrittura rapide.
In-Memory Database: Questi database archiviano i dati nella RAM anziché su disco, eliminando i ritardi di accesso al disco e migliorando significativamente le prestazioni.
Vector Database: Questi database sono progettati per archiviare embedding vettoriali e sono ottimizzati per gestire la ricerca semantica computazionalmente intensiva.
Sebbene i database relazionali (RDBMS) rimangano dominanti in termini di quota di mercato, i database purpose-built stanno rapidamente guadagnando terreno, con database vettoriali, di serie temporali, chiave-valore e a grafo che hanno registrato la crescita più significativa negli ultimi due anni.
Il passaggio verso database specializzati è guidato dalle crescenti richieste di prestazioni e funzionalità avanzate, poiché gli utenti si aspettano che il software soddisfi gli elevati standard stabiliti dalle principali aziende tecnologiche. Inoltre, l'ascesa delle architetture a microservizi ha facilitato l'adozione di database specializzati. I microservizi, distribuibili in modo indipendente e astratti l'uno dall'altro, consentono ai team di selezionare gli strumenti migliori per funzioni applicative specifiche senza una conoscenza approfondita delle tecnologie degli altri servizi.
Tuttavia, integrare un altro database in un'architettura aggiunge complessità. È fondamentale valutare se i vantaggi di un database specializzato superino i costi e le complessità. Valutare a fondo pro e contro è essenziale prima di prendere decisioni che influenzeranno la tua applicazione a lungo termine.
"In pratica, realizzare un sistema unificato di gestione dei dati che supporti vari carichi di lavoro e applicazioni è impegnativo. Confrontandolo con l'industria automobilistica, non possiamo immaginare un singolo veicolo che serva a tutti gli scopi: SUV, camion, berline e scuolabus progettati con funzioni specifiche in mente. Allo stesso modo, nel mondo dei database i sistemi sono ottimizzati per esigenze diverse, ed è improbabile una soluzione valida per tutti. Il futuro risiede nello sviluppo di database più specializzati, adattati a requisiti specifici. Sebbene potremmo vedere interfacce unificate o SDK per interagire con sistemi di database diversi, la tendenza continuerà verso soluzioni sempre più specializzate." Charles Xie, Fondatore e CEO di Zilliz.**
Panoramica dei database relazionali
I database relazionali, noti anche come database tradizionali, sono strumenti versatili che gestiscono i dati in formato tabulare. Questa struttura, organizzata in righe e colonne, consente un'archiviazione e un recupero efficienti dei dati, tipicamente gestiti su disco. L'uso di SQL ne aumenta ulteriormente la versatilità, supportando un'ampia gamma di query. Questa adattabilità rende i database relazionali adatti a una varietà di applicazioni. Sono particolarmente apprezzati per la loro capacità di applicare relazioni strutturate tra set di dati, garantendo coerenza e integrità dei dati attraverso schemi predefiniti.
Archiviazione dei dati: righe e colonne
I database relazionali utilizzano una disposizione sistematica di righe e colonne per archiviare i dati. Ogni riga rappresenta un singolo record, mentre ogni colonna rappresenta un campo dati o un attributo. Questo formato organizzato facilita l'accesso e la gestione dei dati, consentendo agli utenti di navigare negli archivi di dati e aggiornare le informazioni all'interno del database in modo efficiente.
Capacità di query
Structured Query Language (SQL) è una caratteristica chiave dei database relazionali, che consente agli utenti di formulare query precise per estrarre e manipolare insieme dati complessi. SQL fornisce un framework solido per filtrare, ordinare e recuperare dati, rendendo semplice eseguire ricerche e operazioni complesse su grandi set di dati. Utilizzando SQL, gli utenti possono identificare rapidamente le informazioni rilevanti e generare report dettagliati basati su criteri specifici.
Proprietà ACID
Le transazioni dei database relazionali sono governate da quattro proprietà chiave note come ACID: atomicità, coerenza, isolamento e durabilità. L'atomicità garantisce che tutti gli aspetti di una transazione vengano completati nel loro insieme, senza lasciare aggiornamenti parziali. La coerenza mantiene l'integrità dei dati, garantendo che le transazioni conducano a stati validi. L'isolamento impedisce alle transazioni di influenzarsi a vicenda finché non sono completamente confermate, evitando così conflitti. Infine, la durabilità garantisce che, una volta confermata una transazione, le modifiche siano permanenti, anche in caso di guasto del sistema.
Panoramica dei database vettoriali
Quindi, che cos'è esattamente un database vettoriale? Al suo interno, un database vettoriale è un sistema specializzato progettato per gestire dati non strutturati sfruttando le loro rappresentazioni vettoriali e gli embedding. Questo approccio consente un rapido recupero delle informazioni semantiche e ricerche di similarità efficienti.
I database vettoriali sono cruciali nel moderno ecosistema dell'AI, in particolare nella Generazione aumentata dal recupero (RAG). RAG migliora le prestazioni dei modelli linguistici di grandi dimensioni (LLM) integrando conoscenza esterna, il che aiuta a mitigare le allucinazioni dell'AI e migliora l'accuratezza delle risposte generate. Questi database gestiscono e recuperano informazioni contestuali che gli LLM utilizzano per produrre risposte più affidabili.
Sono ampiamente applicati in vari domini, inclusi chatbot, sistemi di raccomandazione e ricerche multimediali come il recupero di immagini, video e audio.
Database vettoriali vs database relazionali
I database relazionali tradizionali eccellono nella gestione di dati strutturati, nell'uso di schemi predefiniti e nell'esecuzione di ricerche precise all'interno di formati di dati tabulari. Al contrario, i database vettoriali, con la loro capacità unica di gestire dati non strutturati come immagini, audio, video e testo rappresentando questi tipi di dati come vettori ad alta dimensionalità, aprono un mondo di possibilità. A differenza dei database relazionali, che utilizzano righe e colonne, i database vettoriali archiviano i dati come vettori con più dimensioni, raggruppandoli in cluster in base alla similarità.
Sebbene i database relazionali come MySQL e PostgreSQL siano da tempo la scelta preferita per molti sviluppatori, nel settore si nota un cambiamento verso l’integrazione di funzionalità di ricerca vettoriale in questi sistemi. Gli utenti di PostgreSQL, ad esempio, si rivolgono sempre più a Pgvector per le loro esigenze di database vettoriali, segnalando una tendenza in crescita nel panorama dei database.
Per supportare operazioni basate su vettori, i database relazionali in genere aggiungono tecnologie di indicizzazione come HNSW (Hierarchical Navigable Small World) per eseguire ricerche approssimate del vicino più prossimo nello spazio vettoriale. Questo è essenziale per trovare elementi simili nelle applicazioni basate sull’IA. Inoltre, questi database offrono archiviazione vettoriale insieme ai dati tradizionali e mantengono la compatibilità con SQL, consentendo agli utenti di sfruttare comandi SQL familiari per gestire e interrogare i dati vettoriali.
Tuttavia, a differenza di Pgvector, che non è un motore di ricerca vettoriale completo ma piuttosto un plugin per i database PostgreSQL, i database vettoriali dedicati come Milvus e Zilliz Cloud sono progettati da zero per gestire e interrogare miliardi di vettori ad alta dimensionalità con prestazioni quasi in tempo reale. Questi database specializzati sfruttano tecniche di indicizzazione avanzate per gestire in modo efficiente le ricerche di similarità, fornire prestazioni superiori per le operazioni basate sulla similarità e supportare la gestione di dati vettoriali su larga scala. Offrono inoltre API robuste su misura per applicazioni di IA e machine learning, rendendoli adatti a esigenze complesse e su larga scala relative ai dati vettoriali.
Perché gli indici vettoriali sono importanti
Durante la fase di prototipazione, caricare tutti i dati in memoria è comune per un’elaborazione più rapida e uno sviluppo più semplice. Tuttavia, man mano che i dati aumentano in produzione, questo approccio diventa impraticabile a causa di:
Limitazioni della memoria: La memoria è sia limitata sia più costosa dell’archiviazione su disco.
Problemi di capacità: Dataset di grandi dimensioni possono superare la memoria disponibile.
Impatto sulle prestazioni: Archiviare tutti i dati in memoria può aumentare il tempo di avvio e il consumo di risorse.
Per gestire in modo efficiente dataset di grandi dimensioni in produzione, selezionare la giusta strategia di indicizzazione è cruciale e significativo. Un indice vettoriale appropriato ottimizza le prestazioni della tua applicazione Retrieval Augmented Generation (RAG) bilanciando velocità delle query, esigenze di archiviazione e latenza. Il diagramma seguente aiuta a visualizzare come si comportano i diversi indici in base a tre metriche chiave, sottolineando l’importanza del tuo ruolo nel processo.
Indici supportati da Milvus
Query al secondo (QPS): Misura la capacità dell’indice di gestire query al secondo, indicando throughput ed efficienza.
Archiviazione: Riflette lo spazio su disco richiesto per l’indice, incidendo sui costi dell’infrastruttura e sulla scalabilità.
Latenza: Rappresenta il tempo necessario per elaborare e restituire i risultati delle query, influenzando la reattività dell’applicazione.
Confrontando queste metriche, puoi scegliere l’indice che meglio si adatta al tuo caso d’uso e alle tue esigenze di prestazioni.
Milvus offre un framework flessibile di selezione degli indici, adattato a vari requisiti di archiviazione e prestazioni:
Indice GPU: Ideale per ambienti ad alte prestazioni, supporta l’elaborazione e il recupero rapidi dei dati.
Indice in memoria: Offre un equilibrio tra prestazioni e capacità, adatto a tassi di query al secondo (QPS), e scala fino a terabyte di archiviazione con una latenza media di circa dieci millisecondi.
Indice su disco: Gestisce decine di terabyte con una latenza di circa 100 millisecondi, adatto a dataset più grandi e meno sensibili al tempo. Milvus è unico in quanto unico database vettoriale open-source a supportare gli indici su disco.
Indice di swap: Facilita lo scambio di dati tra S3 o altri object storage e la memoria, riducendo i costi di circa dieci volte e gestendo al contempo la latenza. I tempi di accesso tipici sono di circa 100 millisecondi, ma possono estendersi a qualche secondo per i dati a cui si accede meno frequentemente, rendendolo adatto all'uso offline e ad applicazioni sensibili ai costi.
Dopo aver selezionato un indice, valutane le prestazioni in base a tempo di creazione, accuratezza, prestazioni e utilizzo delle risorse. Ad esempio, un indice non ottimizzato potrebbe supportare solo 20 query al secondo, mentre un indice ottimizzato potrebbe aumentare il QPS di dieci volte a ogni iterazione di tuning, sebbene ciò possa anche aumentare il tempo di creazione.
Per scegliere e mettere a punto efficacemente il tuo indice:
Seleziona il tipo di indice in base alle tue esigenze.
Regola i parametri dell'indice per l'ottimizzazione delle prestazioni.
Esegui benchmark dei tuoi casi d'uso per garantire le prestazioni attese.
Regola i parametri di ricerca per migliorare ulteriormente i risultati.
Per una guida attraverso il processo di ottimizzazione, usa strumenti di benchmarking come VectorDBBench. Sviluppato e reso open-source da Zilliz, VectorDBBench valuta vari database vettoriali, consentendo esperimenti completi e la messa a punto del sistema per prestazioni ottimali.
È disponibile un cheat sheet per una consultazione rapida, che illustra le prestazioni di ciascun indice nel nostro catalogo di indici GPU, aiutandoti a ottimizzare prestazioni ed efficienza dei costi guidandoti verso l'indice migliore per la tua applicazione.
Un cheat sheet sugli indici
Benchmark delle prestazioni dei database relazionali per la ricerca vettoriale
Come accennato, i database relazionali tradizionali spesso usano 1-2 indici vettoriali, il che può portare a problemi di prestazioni quando gestiscono dati vettoriali su larga scala. Per evidenziare questa sfida, VectorDBBench è uno strumento open-source progettato per il benchmarking dei database vettoriali. Valuta vari database mainstream, indici vettoriali, database e servizi cloud, fornendo metriche imparziali su query al secondo (QPS), query per dollaro (QP$) e latenza P99.
Ad esempio, VectorDBBench può confrontare Pgvector con Milvus o Zilliz. I risultati dei benchmark mostrano costantemente che Milvus e Zilliz offrono prestazioni superiori in QPS, velocità e latenza rispetto a Pgvector.
Nota: Questo è un punteggio da 1 a 100 basato sulle prestazioni di ciascun sistema in casi diversi secondo una regola specifica. Un punteggio più alto indica prestazioni migliori.
Nota: Questo è un punteggio >1 basato sulle prestazioni di ciascun sistema in casi diversi secondo una regola specifica. Un punteggio più basso indica prestazioni migliori.
Con VectorDBBench, puoi capire rapidamente quale database offre prestazioni migliori in termini di varie metriche. Puoi anche determinare quale database si adatta meglio alle tue esigenze specifiche.
Casi d'uso dei database vettoriali
I database tradizionali sono utilizzati principalmente per l'elaborazione delle transazioni, il monitoraggio dell'inventario o la gestione delle buste paga, mentre i database vettoriali eccellono nel supportare lo sviluppo di alcuni impressionanti casi d'uso basati sull'IA.
Retrieval Augmented Generation (RAG)
Espandi la conoscenza degli LLM incorporando fonti di dati esterne negli LLM e nelle tue applicazioni di IA.
Sistema di raccomandazione
Raccomanda informazioni o prodotti agli utenti in base ai loro comportamenti e preferenze passati.
Ricerca di similarità multimodale
Esegui query tra diverse modalità come testi, video, audio e immagini.
Ricerca di similarità molecolare
Cerca sottostrutture, superstrutture e altre strutture simili per una molecola specificata.
Conclusione: database vettoriale vs database relazionale
Scegliere il database giusto per la tua applicazione non è solo importante; è essenziale. I database relazionali sono efficaci nella gestione di dati strutturati e nell'esecuzione di query complesse con SQL. Al contrario, i database vettoriali sono progettati per gestire dati non strutturati e ricerche ad alta dimensionalità, offrendo prestazioni migliori per attività di IA e machine learning. Il peso di questa decisione non può essere sottovalutato.
Grazie alle loro capacità avanzate di indicizzazione e ricerca, i database vettoriali spesso superano i database relazionali tradizionali nella gestione di dati su larga scala e ad alta dimensionalità. Tuttavia, l'aggiunta di database vettoriali specializzati può appesantire la tua configurazione e aumentare la complessità, quindi è importante valutare se i vantaggi giustificano la complessità aggiuntiva.
Selezionare la strategia di indicizzazione giusta e strumenti di benchmarking come VectorDBBench può aiutare a ottimizzare le prestazioni e garantire che tu faccia la scelta migliore per le tue esigenze.
Per ulteriori informazioni sulle soluzioni di database e sulle prestazioni, dai un'occhiata a Zilliz Cloud.
Continua a leggere

Vector Lakebase: End the AI Data Silo
Learn how Vector Lakebase unifies vector search, data lakes, and AI data operations so teams can serve RAG and agents without copy-and-sync pipelines.

Zilliz Skills Breakdown: How AI Agents Master Vector Databases
Zilliz's Milvus Skill (pymilvus, 7 files) and Zilliz Cloud Skill (zilliz-cli, 14 modules) bring vector-DB dev and ops into one Claude Code session.

Migrating from S3 Vectors to Zilliz Cloud: Unlocking the Power of Tiered Storage
Learn how Zilliz Cloud bridges cost and performance with tiered storage and enterprise-grade features, and how to migrate data from AWS S3 Vectors to Zilliz Cloud.



