Novità di Milvus 2.3 Beta - 10 volte più veloce con le GPU
Siamo orgogliosi di annunciare la release Beta di Milvus 2.3 a nome della community di Milvus. Questa release Beta contiene nuove funzionalità e miglioramenti che siamo certi aumenteranno le prestazioni delle vostre applicazioni basate sull’AI. Apprezziamo il vostro aiuto nel testare alcune di queste capacità per portarci rapidamente alla release generale! Questo post del blog metterà in evidenza alcune delle funzionalità più importanti. Per un elenco completo delle modifiche, consultate le note di rilascio.
- 📦 PyPI: https://pypi.org/project/milvus/
- 📚 Docs: https://milvus.io/docs
- 🛠️ Note di rilascio: https://github.com/milvus-io/milvus/releases
- 🐳 Docker Image: docker pull milvusdb/milvus
- 🚀 Release: https://github.com/milvus-io/milvus/releases/tag/v2.3.0-beta
Una delle funzionalità di Milvus 2.3 Beta è il supporto per l’accelerazione GPU e l’integrazione basata su RAFT, che consente a Milvus di sfruttare appieno la potenza delle moderne unità di elaborazione grafica. Milvus accelerato da GPU offre prestazioni 10 volte più veloci rispetto alla versione solo CPU. Ciò può migliorare significativamente la velocità e la reattività delle vostre applicazioni basate su AI e machine learning, consentendo un’elaborazione dei dati più rapida e accurata.
Un’altra funzionalità fondamentale di Milvus 2.3 Beta è il supporto alla ricerca per intervallo, che consente agli utenti di cercare dati all’interno di un intervallo specificato. Questo può essere particolarmente utile per le applicazioni che richiedono query di dati complesse, poiché consente una ricerca più precisa e accurata. Inoltre, Milvus 2.3 Beta supporta anche mmap e backup incrementali, tutti elementi che possono contribuire ulteriormente ad aumentare le prestazioni e l’efficienza delle vostre applicazioni AI. Consentendo una gestione e un’archiviazione dei dati più efficienti, queste funzionalità possono garantire che i vostri sistemi AI funzionino continuamente ai massimi livelli.
Nel complesso, i miglioramenti in questa release sono essenziali per qualsiasi sviluppatore che crei applicazioni con funzionalità di ricerca per similarità.
Supporto GPU Nvidia Questa nuova funzionalità introduce la capacità di supportare il calcolo eterogeneo, che può accelerare significativamente carichi di lavoro specializzati. Questa nuova aggiunta consente agli utenti di aspettarsi ricerche di dati vettoriali più rapide ed efficienti, migliorando in definitiva produttività e prestazioni. Abbiamo confrontato RAFT-IVF-Flat (GPU) con IVF-Flat (CPU) e HNSW (CPU) su quattro dataset con un recall del 95%. L’indice GPU ha raggiunto in media un throughput 32x e 8x superiore rispetto a IVF-Flat e HNSW. I risultati della valutazione sono mostrati nella Tabella 1. (Questi benchmark sono stati eseguiti su Knowhere su un host con una CPU a 8 core, 32 GB di RAM e una GPU Nvidia A100)
Tabella 1. I QPS di IVF-Flat, HNSW, RAFT-IVF-Flat su quattro dataset con recall del 95%
| SIFT | GIST | GLOVE | DEEP | |
|---|---|---|---|---|
| IVF-Flat (CPU) | 3097 | 142 | 791 | 723 |
| HNSW (CPU) | 14,537 | 791 | 1,516 | 5,761 |
| RAFT-IVF-Flat (GPU) | 121,568 | 5,737 | 20,163 | 16,557 |
Un ringraziamento speciale va a @wphicks e @cjnolet di Nvidia per i loro preziosi contributi al codice RAFT.
Ricerca per intervallo La ricerca per intervallo è un metodo di ricerca diverso dalla query k-NN. Le query k-NN restituiscono un numero fisso di vicini più prossimi. Per la ricerca per intervallo, dati una query q e una soglia di distanza R, restituisce tutte le entità entro la distanza R da q. La ricerca per intervallo è comunemente utilizzata per trovare tutti i risultati pertinenti all’interno di un intervallo specificato. Ad esempio, può essere d’aiuto (ma non si limita a questo) nella deduplicazione dei dati o nel rilevamento di violazioni del copyright senza perdere candidati simili.
Upsert Upsert è un'operazione che aggiorna il valore di un'entità se esiste già in una collection o ne inserisce una nuova se non esiste. Milvus offre grande flessibilità per aggiungere dati alle tue collection. Per ora, sono disponibili tre opzioni in totale:
- Bulk insert per un throughput elevato nei casi offline.
- Insert per bassa latenza nei casi di streaming online.
- Upsert per i casi in cui non sei sicuro se aggiornare o inserire nuove entità.
Change Data Capture (CDC) Change Data Capture (CDC) è il processo di identificazione e acquisizione delle modifiche ai dati in un database vettoriale in tempo reale e di consegna di tali modifiche ai sistemi downstream. Milvus ora offre backup e sincronizzazione senza downtime basati su questo meccanismo. Gli sviluppatori possono anche utilizzare CDC per acquisire e fornire un flusso continuo di modifiche ai loro workload downstream, come analisi dei dati o auditing personalizzato.
Memory-mapped (mmap) file I/O In scenari di memoria insufficiente in grandi set di dati e in cui le prestazioni delle query non sono critiche, Milvus utilizza mmap per consentire al sistema di trattare parti di un file come se fossero in memoria, riducendo l'uso della memoria e migliorando le prestazioni se tutti i dati si trovano nella cache delle pagine del sistema.
Riepilogo
Oltre a tutte le funzionalità elencate sopra, Milvus 2.3 Beta include diverse correzioni di bug e miglioramenti. Per saperne di più:
- Consulta le note di rilascio per la versione 2.3 Beta per l'elenco completo delle modifiche
- Scarica Milvus e inizia
- Dai un'occhiata ai benchmark di Milvus in questo paper
Continua a leggere

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.

OpenAI o1: What Developers Need to Know
In this article, we will talk about the o1 series from a developer's perspective, exploring how these models can be implemented for sophisticated use cases.

Vector Databases vs. Hierarchical Databases
Use a vector database for AI-powered similarity search; use a hierarchical database for organizing data in parent-child relationships with efficient top-down access patterns.



