Demistificare la divergenza dei risultati dei benchmark: Milvus vs. Qdrant
Con la crescente popolarità della GenAI, un numero sempre maggiore di database vettoriali è entrato nel mercato. All'inizio dello scorso anno, abbiamo introdotto VectorDB Bench per fornire approfondimenti sulle prestazioni delle tecnologie emergenti di database vettoriali.
Di recente, sviluppatori profondamente coinvolti in questo ambito si sono rivolti a noi di Zilliz, cercando di comprendere le sostanziali discrepanze tra i risultati dei benchmark di Qdrant e le nostre conclusioni in VectorDB Bench. In particolare, avevano bisogno di chiarimenti sulle scarse prestazioni di Milvus nei risultati del benchmark di Qdrant. In risposta a queste richieste, il nostro team di ingegneria di Zilliz ha avviato un'indagine completa per scoprire le cause alla radice di queste discrepanze.
Questo post del blog fornisce un'analisi tecnica approfondita delle differenze tra i benchmark, con particolare attenzione alla discrepanza nelle prestazioni di Milvus. Senza ulteriori indugi, approfondiamo i dettagli di questa indagine.
Motivo #1: versione obsoleta di Milvus
Le discrepanze nei risultati dei benchmark derivano principalmente dalle diverse versioni di Milvus utilizzate nei test. Il report del benchmark di Qdrant, basato su Milvus v2.1 e pubblicato il 10 agosto 2022, non coglie pienamente i significativi progressi compiuti nelle versioni successive. Dai un'occhiata ai dati grezzi di questo report. Da allora, Milvus ha subito notevoli miglioramenti.
In Milvus v2.2.1, abbiamo aggiornato il motore vettoriale (noto anche come Knowhere) e rivisto la strategia di parallelismo. Gli aggiornamenti successivi in v2.2.3 hanno apportato ulteriori miglioramenti nelle prestazioni di ricerca. Il nostro white paper evidenzia questi progressi, dimostrando che Milvus 2.2.3 è quattro volte più veloce di Milvus 2.0 nelle prestazioni di query (latenza e throughput) e nella scalabilità (collezioni su scala di miliardi e repliche multiple).
In seguito, v2.2.9 ha migliorato le prestazioni della ricerca filtrata. In v2.2.12, abbiamo introdotto una migliore efficienza di ricerca con un overhead minimo per valori top-K elevati, prestazioni di scrittura migliorate in scenari con partition key abilitata o multi-partizione, e un utilizzo della CPU ottimizzato per macchine più grandi. Inoltre, v2.3.2 ha segnato un significativo miglioramento delle prestazioni con una copia dei dati ridotta al minimo durante il caricamento e migliori inserimenti bulk.
Questi continui miglioramenti hanno trasformato sostanzialmente le capacità di Milvus. Di conseguenza, i benchmark basati su Milvus 2.1 non riflettono più accuratamente le prestazioni attuali della tecnologia. Per comprendere meglio le capacità più recenti di Milvus, gli sviluppatori sono incoraggiati a consultare VectorDB Bench, che utilizza Milvus 2.3 per i test.
Motivo #2: uso improprio di Milvus
Il benchmark di Qdrant sulle prestazioni di Milvus deriva in parte dal fatto che ha utilizzato solo Growing Segments. Come suggerisce il nome, Milvus ottimizza con due tipi di segment: Growing e Sealed Segments. I Growing Segments stanno ancora ricevendo dati finché non raggiungono una soglia predefinita. Questi segmenti danno priorità all'inserimento rapido dei dati e utilizzano una strategia di ricerca brute-force, il che porta a prestazioni di query più lente.
D'altro canto, i Sealed Segment non ricevono più dati e, pertanto, dispongono di un indice, con conseguenti significativi miglioramenti delle prestazioni. Milvus sigilla automaticamente i Growing Segment quando raggiunge una soglia predefinita, consentendo così anche a questi dati di beneficiare dei miglioramenti prestazionali quando vengono utilizzati con un indice.
Il benchmark di Qdrant si è concentrato solo sull'utilizzo dei Growing Segment, il che ha naturalmente portato alle prestazioni più lente riportate. Concentrarsi solo sui Growing Segment è diverso da come Milvus viene utilizzato nelle applicazioni reali e vanifica lo scopo della strategia dei segmenti contenuta in Milvus.
Inoltre, per aiutare gli utenti a bilanciare freschezza dei dati ed efficienza di ricerca, Milvus v2.3 ha introdotto il supporto per l'indice IVF-FLAT per gli indici in crescita. Inoltre, Milvus v2.3.4 ha introdotto l'indice Binlog per i Growing Segment. Questo aggiornamento consente l'uso di indici avanzati come IVF o Fast Scan in questi segmenti, potenziando potenzialmente le prestazioni di ricerca fino a dieci volte. Di conseguenza, questo miglioramento della funzionalità ha reso i precedenti risultati del benchmark di Qdrant ancora meno rilevanti.
Motivo n. 3: ottimizzazione guidata dai benchmark per Qdrant
Le eccezionali prestazioni di benchmark di Qdrant rispetto ad altri fornitori derivano dall'uso di segmenti super-grandi per il benchmarking. Sebbene questa strategia abbia prodotto risultati degni di nota nei benchmark, la sua applicabilità nel mondo reale è discutibile. Nei database vettoriali, la dimensione dei segmenti è cruciale. L'attenzione di Qdrant sui segmenti di grandi dimensioni ha migliorato i punteggi dei benchmark, ma potrebbe compromettere la flessibilità operativa nell'uso quotidiano.
I database vettoriali efficaci devono gestire carichi di lavoro diversi e requisiti dei dati in evoluzione. I segmenti super-grandi, pur essendo efficaci nei benchmark, potrebbero avere difficoltà con le query variegate tipiche delle situazioni reali. Introducono complessità nella gestione e potrebbero aumentare le richieste di risorse.
Sebbene le ottimizzazioni guidate dai benchmark di Qdrant, come i segmenti super-grandi, mostrino prestazioni impressionanti, la loro praticità in ambienti dinamici e reali solleva preoccupazioni. Questo mette in discussione la rilevanza complessiva di tali risultati di benchmark nelle effettive distribuzioni di database vettoriali.
Considerazioni finali: un percorso verso decisioni eque e informate
Quando si tratta di database vettoriali, un benchmarking affidabile e completo è vitale. VectorDB Bench, sviluppato da Zilliz, fornisce dati sulle prestazioni reali per gli sviluppatori. Riconoscendo la difficoltà di raggiungere un'imparzialità assoluta nei benchmark, condividiamo le nostre intuizioni per arricchire la conoscenza collettiva in questo ambito.
L'ANN Benchmark è uno strumento prezioso per chi cerca valutazioni imparziali, fornendo valutazioni standardizzate dei database vettoriali. Con l'avanzare della tecnologia in questo campo, sottolineiamo la necessità di sforzi di benchmarking chiari, trasparenti e collaborativi. Gli sviluppatori devono accedere a benchmark veritieri e precisi o condurre i propri test sui propri dati per prendere decisioni informate nella scelta di un database vettoriale.
Continua a leggere

Introducing Loon: A New Storage Engine for Vector Data That Never Stops Changing
Loon is a new storage engine for Milvus 3.0 and Zilliz Vector Lakebase, built to manage evolving vector datasets with ColumnGroups, row ID alignment, and Manifests.

DeepSeek-OCR Explained: Optical Compression for Scalable Long-Context and RAG Systems
Discover how DeepSeek-OCR uses visual tokens and Contexts Optical Compression to boost long-context LLM efficiency and reshape RAG performance.

Cosmos World Foundation Model Platform for Physical AI
NVIDIA's Cosmos platform enables safe, digital twin training of GenAI models for physical applications, overcoming data scarcity and safety challenges.


