Presentazione di Milvus 2.3: una release fondamentale che offre il supporto per GPU, Arm64, CDC e molte altre caratteristiche molto attese.
Notizie entusiasmanti! Dopo otto mesi di sforzi concertati, siamo entusiasti di annunciare il rilascio di Milvus 2.3, una versione miliare che introduce numerose funzionalità molto attese, tra cui il supporto per GPU, Arm64, upsert, acquisizione dei dati di modifica, indice ScaNN e tecnologia MMap. Milvus 2.3 introduce anche un miglioramento delle prestazioni delle query, un bilanciamento e una pianificazione del carico più robusti e una migliore osservabilità e operatività.
Scoprite insieme a me queste nuove funzionalità e miglioramenti e come potete trarre vantaggio da questa release.
Supporto per l'indice GPU che porta a una velocità da 3 a 10 volte superiore in QPS
L'indice GPU è una funzionalità molto attesa dalla comunità Milvus. Grazie a una grande collaborazione con gli ingegneri di Nvidia, Milvus 2.3 ha supportato l'indicizzazione su GPU con il robusto algoritmo RAFT aggiunto a Knowhere, il motore di indicizzazione di Milvus. Grazie al supporto delle GPU, Milvus 2.3 è più di tre volte più veloce in QPS rispetto alle versioni precedenti che utilizzano l'indice HNSW della CPU e quasi dieci volte più veloce per i set di dati specifici che richiedono calcoli pesanti.
Supporto Arm64 per soddisfare la crescente domanda degli utenti
Le CPU Arm stanno diventando sempre più popolari tra i cloud provider e gli sviluppatori. Per soddisfare questa crescente domanda, Milvus fornisce ora immagini Docker per l'architettura ARM64. Grazie a questo nuovo supporto per le CPU, gli utenti di MacOS possono creare le loro applicazioni con Milvus in modo più semplice.
Supporto Upsert per una migliore esperienza utente
Milvus 2.3 introduce un notevole miglioramento supportando l'operazione di upsert. Questa nuova funzionalità consente agli utenti di aggiornare o inserire dati senza problemi e di eseguire entrambe le operazioni in un'unica richiesta attraverso l'interfaccia Upsert. Questa funzione semplifica la gestione dei dati e porta efficienza al tavolo.
Nota:
- La funzione di upsert non si applica agli ID ad incremento automatico.
- Upsert è implementato come una combinazione di
delete
einsert
, che può comportare una certa perdita di prestazioni. Si consiglia di utilizzareinsert
se si usa Milvus in scenari di scrittura intensiva.
Ricerca a distanza per risultati più precisi
Milvus 2.3 consente agli utenti di specificare la distanza tra il vettore in ingresso e i vettori memorizzati in Milvus durante un'interrogazione. Milvus restituisce quindi tutti i risultati corrispondenti all'interno dell'intervallo impostato. Di seguito è riportato un esempio di specificazione della distanza di ricerca utilizzando la funzione di ricerca per intervallo.
// add radius and range_filter to params in search_params
search_params = {"params": {"nprobe": 10, "radius": 10, "range_filter" : 20}, "metric_type": "L2"}
res = collection.search(
vectors, "float_vector", search_params, topK,
"int64 > 100", output_fields=["int64", "float"]
)
In questo esempio, l'utente richiede a Milvus di restituire vettori entro una distanza di 10-20 unità dal vettore di input.
Nota: Le diverse metriche di distanza variano nel modo in cui calcolano le distanze, con conseguenti intervalli di valori e strategie di ordinamento diversi. Pertanto, è essenziale comprendere le loro caratteristiche prima di utilizzare la funzione di ricerca per intervallo.
Indice ScaNN per una maggiore velocità di interrogazione
Milvus 2.3 supporta ora l'indice ScaNN, un indice open-source di prossimità approssimativa (ANN) sviluppato da Google. L'indice ScaNN ha dimostrato prestazioni superiori in vari benchmark, superando HNSW di circa il 20% e risultando circa sette volte più veloce di IVFFlat. Grazie al supporto dell'indice ScaNN, Milvus raggiunge una velocità di interrogazione molto più elevata rispetto alle versioni precedenti.
Indice in crescita per prestazioni stabili e migliori nelle interrogazioni
Milvus comprende due categorie di dati: dati indicizzati e dati in streaming. Milvus può utilizzare gli indici per cercare rapidamente i dati indicizzati, ma può solo cercare brutalmente i dati in streaming riga per riga, il che può avere un impatto sulle prestazioni. Milvus 2.3 introduce il Growing Index, che crea automaticamente indici in tempo reale per i dati in streaming per migliorare le prestazioni delle query.
Iteratore per il recupero dei dati in batch
In Milvus 2.3, Pymilvus ha introdotto un'interfaccia iteratore che consente agli utenti di recuperare più di 16.384 entità in una ricerca o in un intervallo di ricerca. Questa funzione è utile quando gli utenti devono esportare decine di migliaia o addirittura più vettori in lotti.
Supporto per MMap per una maggiore capacità
MMap è una chiamata di sistema UNIX utilizzata per mappare file e altri oggetti in memoria. Milvus 2.3 supporta MMap, che consente agli utenti di caricare i dati sui dischi locali e mapparli in memoria, aumentando così la capacità di una singola macchina.
I risultati dei nostri test indicano che, utilizzando la tecnologia MMap, Milvus può raddoppiare la sua capacità di dati limitando il degrado delle prestazioni al 20%. Questo approccio riduce significativamente i costi complessivi, rendendolo particolarmente vantaggioso per gli utenti con un budget limitato che non vogliono compromettere le prestazioni.
Supporto CDC per una maggiore disponibilità del sistema
Il Change Data Capture (CDC) è una funzione comunemente usata nei sistemi di database che cattura e replica le modifiche dei dati a una destinazione designata. Con la funzione CDC, Milvus 2.3 consente agli utenti di sincronizzare i dati tra i vari centri dati, di eseguire il backup dei dati incrementali e di migrare i dati senza soluzione di continuità, rendendo il sistema più disponibile.
Oltre alle funzioni sopra descritte, Milvus 2.3 introduce un'interfaccia di conteggio per calcolare con precisione il numero di righe di dati memorizzati in una raccolta in tempo reale, supporta la metrica Cosine per misurare la distanza vettoriale e ulteriori operazioni su array JSON. Per ulteriori caratteristiche e informazioni dettagliate, consultare le note di rilascio di Milvus 2.3.
Miglioramenti e correzioni di bug
Oltre alle nuove funzioni, Milvus 2.3 include molti miglioramenti e correzioni di bug per le versioni precedenti.
Migliori prestazioni per il filtraggio dei dati
Milvus esegue il filtraggio scalare prima della ricerca vettoriale nelle query ibride di dati scalari e vettoriali per ottenere risultati più precisi. Tuttavia, le prestazioni dell'indicizzazione possono diminuire se l'utente ha filtrato troppi dati dopo il filtraggio scalare. In Milvus 2.3 abbiamo ottimizzato la strategia di filtraggio di HNSW per risolvere questo problema e migliorare le prestazioni delle query.
Maggiore utilizzo della CPU multi-core
La ricerca approssimata di prossimità (RNA) è un'attività ad alta intensità di calcolo che richiede ingenti risorse di CPU. Nelle versioni precedenti, Milvus poteva utilizzare solo il 70% circa delle risorse CPU multi-core disponibili. Tuttavia, con l'ultima versione, Milvus ha superato questa limitazione e può utilizzare pienamente tutte le risorse CPU multi-core disponibili, migliorando le prestazioni delle query e riducendo lo spreco di risorse.
QueryNode rifatto
QueryNode è un componente cruciale di Milvus, responsabile della ricerca vettoriale. Tuttavia, nelle versioni precedenti, QueryNode presentava stati complessi, code di messaggi duplicate, una struttura di codice non organizzata e messaggi di errore non intuitivi.
In Milvus 2.3, abbiamo aggiornato QueryNode introducendo una struttura di codice stateless e rimuovendo la coda di messaggi per la cancellazione dei dati. Questi aggiornamenti si traducono in un minore spreco di risorse e in una ricerca vettoriale più veloce e stabile.
Code di messaggi migliorate basate su NATS
Abbiamo costruito Milvus su un'architettura basata sui log e nelle versioni precedenti abbiamo utilizzato Pulsar e Kafka come broker di log principali. Tuttavia, questa combinazione ha affrontato tre sfide fondamentali:
- Era instabile in situazioni multi-topic.
- Consuma risorse quando è inattiva e fatica a deduplicare i messaggi.
- Pulsar e Kafka sono strettamente legati all'ecosistema Java, quindi la loro comunità raramente mantiene e aggiorna i loro SDK per Go.
Per risolvere questi problemi, abbiamo unito NATS e Bookeeper come nuovo log broker per Milvus, che si adatta meglio alle esigenze degli utenti.
Bilanciatore di carico ottimizzato
Milvus 2.3 ha adottato un algoritmo di bilanciamento del carico più flessibile, basato sui carichi reali del sistema. Questo algoritmo ottimizzato consente agli utenti di rilevare rapidamente i guasti dei nodi e i carichi sbilanciati e di regolare le pianificazioni di conseguenza. Secondo i risultati dei nostri test, Milvus 2.3 è in grado di rilevare guasti, carichi sbilanciati, stato anomalo dei nodi e altri eventi in pochi secondi e di effettuare prontamente le regolazioni.
Per ulteriori informazioni su Milvus 2.3, consultare le note di rilascio di Milvus 2.3.
Aggiornamenti degli strumenti
Con Milvus 2.3 abbiamo aggiornato anche Birdwatcher e Attu, due strumenti preziosi per il funzionamento e la manutenzione di Milvus.
Aggiornamento di Birdwatcher
Abbiamo aggiornato Birdwatcher, lo strumento di debug di Milvus, introducendo numerose funzionalità e miglioramenti, tra cui:
- API RESTful per una perfetta integrazione con altri sistemi di diagnostica.
- Supporto del comando PProf per facilitare l'integrazione con lo strumento Go pprof.
- Funzionalità di analisi dell'uso dello storage.
- Funzionalità efficienti di analisi dei log.
- Supporto per la visualizzazione e la modifica delle configurazioni in etcd.
Aggiornamento di Attu
Abbiamo lanciato una nuova interfaccia per Attu, uno strumento di amministrazione di database vettoriali tutto in uno. La nuova interfaccia ha un design più lineare ed è più facile da capire.
Per maggiori dettagli, consultare le note di rilascio di Milvus 2.3.
Restiamo in contatto!
Se avete domande o feedback su Milvus, non esitate a contattarci tramite Twitter o LinkedIn. Siete anche invitati a unirvi al nostro canale Slack per chiacchierare direttamente con i nostri ingegneri e con la comunità, oppure a visitare il nostro orario d'ufficio del martedì!
- Supporto per l'indice GPU che porta a una velocità da 3 a 10 volte superiore in QPS
- Supporto Arm64 per soddisfare la crescente domanda degli utenti
- Supporto Upsert per una migliore esperienza utente
- Ricerca a distanza per risultati più precisi
- Indice ScaNN per una maggiore velocità di interrogazione
- Indice in crescita per prestazioni stabili e migliori nelle interrogazioni
- Iteratore per il recupero dei dati in batch
- Supporto per MMap per una maggiore capacità
- Supporto CDC per una maggiore disponibilità del sistema
- Miglioramenti e correzioni di bug
- Aggiornamenti degli strumenti
- Restiamo in contatto!
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word