🚀 Testen Sie Zilliz Cloud, die vollständig verwaltete Milvus, kostenlos – erleben Sie 10x schnellere Leistung! Jetzt testen>>

milvus-logo
LFAI
  • Home
  • Blog
  • Enthüllung von Milvus 2.3: Ein Meilenstein-Release mit Unterstützung für GPU, Arm64, CDC und vielen anderen, mit Spannung erwarteten Funktionen

Enthüllung von Milvus 2.3: Ein Meilenstein-Release mit Unterstützung für GPU, Arm64, CDC und vielen anderen, mit Spannung erwarteten Funktionen

  • News
August 28, 2023
Owen Jiao, Fendy Feng

Aufregende Neuigkeiten! Nach acht Monaten konzertierter Bemühungen freuen wir uns, die Veröffentlichung von Milvus 2.3 bekannt zu geben, einer Meilensteinversion, die zahlreiche, mit Spannung erwartete Funktionen mit sich bringt, darunter Unterstützung für GPU, Arm64, Upsert, Änderungsdatenerfassung, ScaNN-Index und MMap-Technologie. Milvus 2.3 bietet außerdem eine verbesserte Abfrageleistung, eine robustere Lastverteilung und Zeitplanung sowie eine bessere Beobachtbarkeit und Bedienbarkeit.

Sehen Sie sich mit mir diese neuen Funktionen und Verbesserungen an und erfahren Sie, wie Sie von dieser Version profitieren können.

Unterstützung für GPU-Index, der zu einer 3-10-fachen Beschleunigung in QPS führt

GPU-Index ist eine von der Milvus-Gemeinschaft mit Spannung erwartete Funktion. Dank einer großartigen Zusammenarbeit mit den Nvidia-Ingenieuren unterstützt Milvus 2.3 die GPU-Indizierung mit dem robusten RAFT-Algorithmus, der zu Knowhere, der Milvus-Index-Engine, hinzugefügt wurde. Mit der GPU-Unterstützung ist Milvus 2.3 in QPS mehr als dreimal schneller als ältere Versionen, die den CPU-HNSW-Index verwenden, und fast zehnmal schneller für bestimmte Datensätze, die umfangreiche Berechnungen erfordern.

Arm64-Unterstützung, um die wachsende Nachfrage der Benutzer zu befriedigen

Arm-CPUs werden bei Cloud-Anbietern und Entwicklern immer beliebter. Um dieser wachsenden Nachfrage gerecht zu werden, bietet Milvus jetzt Docker-Images für die ARM64-Architektur an. Mit dieser neuen CPU-Unterstützung können MacOS-Benutzer ihre Anwendungen mit Milvus nahtloser erstellen.

Upsert-Unterstützung für eine bessere Benutzererfahrung

Milvus 2.3 führt eine bemerkenswerte Verbesserung ein, indem es den Upsert-Vorgang unterstützt. Diese neue Funktionalität ermöglicht es den Benutzern, Daten nahtlos zu aktualisieren oder einzufügen und beide Vorgänge in einer einzigen Anfrage über die Upsert-Schnittstelle durchzuführen. Diese Funktion rationalisiert die Datenverwaltung und sorgt für mehr Effizienz.

Anmerkung:

  • Die Upsert-Funktion gilt nicht für automatisch inkrementierende IDs.
  • Upsert ist als Kombination von delete und insert implementiert, was zu einem gewissen Leistungsverlust führen kann. Wir empfehlen die Verwendung von insert, wenn Sie Milvus in schreibintensiven Szenarien verwenden.

Bereichssuche für genauere Ergebnisse

Milvus 2.3 ermöglicht es den Benutzern, während einer Abfrage den Abstand zwischen dem Eingabevektor und den in Milvus gespeicherten Vektoren anzugeben. Milvus gibt dann alle übereinstimmenden Ergebnisse innerhalb des festgelegten Bereichs zurück. Nachfolgend ein Beispiel für die Angabe des Suchabstands unter Verwendung der Bereichssuchfunktion.

// 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 diesem Beispiel möchte der Benutzer, dass Milvus Vektoren innerhalb eines Abstands von 10 bis 20 Einheiten vom Eingabevektor zurückgibt.

Hinweis: Verschiedene Abstandsmetriken unterscheiden sich in der Art und Weise, wie sie Abstände berechnen, was zu unterschiedlichen Wertebereichen und Sortierstrategien führt. Daher ist es unerlässlich, ihre Eigenschaften zu verstehen, bevor man die Funktion der Abstandssuche verwendet.

ScaNN-Index für höhere Abfragegeschwindigkeit

Milvus 2.3 unterstützt jetzt den ScaNN-Index, einen von Google entwickelten Open-Source-Index für approximative nächste Nachbarn (ANN). Der ScaNN-Index hat in verschiedenen Benchmarks eine überragende Leistung gezeigt, die HNSW um etwa 20 % übertrifft und etwa siebenmal schneller ist als IVFFlat. Mit der Unterstützung des ScaNN-Index erreicht Milvus im Vergleich zu älteren Versionen eine wesentlich höhere Abfragegeschwindigkeit.

Wachsender Index für stabile und bessere Abfrageleistung

Milvus umfasst zwei Kategorien von Daten: indizierte Daten und Streaming-Daten. Milvus kann Indizes verwenden, um indizierte Daten schnell zu durchsuchen, kann aber Streaming-Daten nur brutal Zeile für Zeile durchsuchen, was die Leistung beeinträchtigen kann. Milvus 2.3 führt den Growing Index ein, der automatisch Echtzeit-Indizes für Streaming-Daten erstellt, um die Abfrageleistung zu verbessern.

Iterator für den Datenabruf in Stapeln

In Milvus 2.3 hat Pymilvus eine Iterator-Schnittstelle eingeführt, die es den Benutzern ermöglicht, mehr als 16.384 Entitäten in einer Suche oder Bereichssuche abzurufen. Diese Funktion ist praktisch, wenn Benutzer Zehntausende oder noch mehr Vektoren in Stapeln exportieren müssen.

Unterstützung für MMap zur Erhöhung der Kapazität

MMap ist ein UNIX-Systemaufruf, der verwendet wird, um Dateien und andere Objekte im Speicher abzubilden. Milvus 2.3 unterstützt MMap, das es dem Benutzer ermöglicht, Daten auf lokale Festplatten zu laden und sie im Speicher abzubilden, wodurch die Kapazität einer einzelnen Maschine erhöht wird.

Unsere Testergebnisse zeigen, dass Milvus mit der MMap-Technologie seine Datenkapazität verdoppeln und gleichzeitig die Leistungseinbußen auf maximal 20 % begrenzen kann. Dieser Ansatz senkt die Gesamtkosten erheblich, so dass er besonders für Benutzer mit knappem Budget, die keine Kompromisse bei der Leistung eingehen wollen, von Vorteil ist.

CDC-Unterstützung für höhere Systemverfügbarkeit

Change Data Capture (CDC) ist eine häufig verwendete Funktion in Datenbanksystemen, die Datenänderungen erfasst und an ein bestimmtes Ziel repliziert. Mit der CDC-Funktion ermöglicht Milvus 2.3 den Anwendern die Synchronisierung von Daten über Rechenzentren hinweg, die Sicherung inkrementeller Daten und die nahtlose Migration von Daten, wodurch die Verfügbarkeit des Systems erhöht wird.

Zusätzlich zu den oben genannten Funktionen führt Milvus 2.3 eine Zählschnittstelle ein, um die Anzahl der in einer Sammlung gespeicherten Datenzeilen in Echtzeit genau zu berechnen, unterstützt die Cosinus-Metrik zur Messung der Vektordistanz und bietet mehr Operationen für JSON-Arrays. Weitere Funktionen und detaillierte Informationen finden Sie in den Versionshinweisen zu Milvus 2.3.

Erweiterungen und Fehlerbehebungen

Zusätzlich zu den neuen Funktionen enthält Milvus 2.3 viele Verbesserungen und Fehlerkorrekturen für ältere Versionen.

Verbesserte Leistung beim Filtern von Daten

Milvus führt eine skalare Filterung vor der Vektorsuche in hybriden skalaren und vektoriellen Datenabfragen durch, um genauere Ergebnisse zu erzielen. Die Indizierungsleistung kann jedoch abnehmen, wenn der Benutzer zu viele Daten nach der skalaren Filterung herausgefiltert hat. In Milvus 2.3 haben wir die Filterstrategie von HNSW optimiert, um dieses Problem zu lösen, was zu einer verbesserten Abfrageleistung führt.

Erhöhte Multi-Core-CPU-Nutzung

Approximate Nearest Search (ANN) ist eine rechenintensive Aufgabe, die massive CPU-Ressourcen erfordert. In früheren Versionen konnte Milvus nur etwa 70 % der verfügbaren Multi-Core-CPU-Ressourcen nutzen. Mit der neuesten Version hat Milvus diese Einschränkung jedoch überwunden und kann alle verfügbaren Multi-Core-CPU-Ressourcen vollständig nutzen, was zu einer verbesserten Abfrageleistung und einer geringeren Ressourcenverschwendung führt.

Überarbeiteter QueryNode

QueryNode ist eine wichtige Komponente in Milvus, die für die Vektorsuche verantwortlich ist. In älteren Versionen hatte QueryNode jedoch komplexe Zustände, doppelte Nachrichtenwarteschlangen, eine unorganisierte Codestruktur und nicht intuitive Fehlermeldungen.

In Milvus 2.3 haben wir QueryNode verbessert, indem wir eine zustandslose Codestruktur eingeführt und die Nachrichtenwarteschlange zum Löschen von Daten entfernt haben. Diese Aktualisierungen führen zu einer geringeren Ressourcenverschwendung und einer schnelleren und stabileren Vektorsuche.

Verbesserte Nachrichten-Warteschlangen auf der Grundlage von NATS

Wir haben Milvus auf einer protokollbasierten Architektur aufgebaut und in früheren Versionen Pulsar und Kafka als zentrale Protokollbroker verwendet. Diese Kombination stand jedoch vor drei großen Herausforderungen:

  • Sie war in Situationen mit mehreren Themen instabil.
  • Sie verbrauchte Ressourcen, wenn sie nicht genutzt wurde, und hatte Schwierigkeiten, Nachrichten zu deduplizieren.
  • Pulsar und Kafka sind eng mit dem Java-Ökosystem verbunden, so dass ihre Go-SDKs von der Community selten gewartet und aktualisiert werden.

Um diese Probleme zu lösen, haben wir NATS und Bookeeper zu unserem neuen Log-Broker für Milvus kombiniert, der den Bedürfnissen der Benutzer besser entspricht.

Optimierter Lastverteiler

Milvus 2.3 hat einen flexibleren Lastausgleichsalgorithmus eingeführt, der auf der tatsächlichen Systemlast basiert. Mit diesem optimierten Algorithmus können Benutzer Knotenausfälle und unausgewogene Lasten schnell erkennen und die Planungen entsprechend anpassen. Unseren Testergebnissen zufolge kann Milvus 2.3 Fehler, unausgewogene Last, anormale Knotenzustände und andere Ereignisse innerhalb von Sekunden erkennen und umgehend Anpassungen vornehmen.

Weitere Informationen über Milvus 2.3 finden Sie in den Milvus 2.3 Release Notes.

Tool-Upgrades

Zusammen mit Milvus 2.3 haben wir auch Birdwatcher und Attu, zwei wertvolle Tools für den Betrieb und die Wartung von Milvus, aktualisiert.

Birdwatcher-Aktualisierung

Wir haben Birdwatcher, das Debug-Tool von Milvus, aktualisiert und zahlreiche Funktionen und Verbesserungen eingeführt, darunter:

  • RESTful API für die nahtlose Integration mit anderen Diagnosesystemen.
  • PProf-Befehlsunterstützung, um die Integration mit dem Go pprof-Tool zu erleichtern.
  • Funktionen zur Analyse der Speichernutzung.
  • Effiziente Funktionen zur Protokollanalyse.
  • Unterstützung für das Anzeigen und Ändern von Konfigurationen in etcd.

Attu-Aktualisierung

Wir haben eine brandneue Oberfläche für Attu eingeführt, ein All-in-One-Tool zur Verwaltung von Vektordatenbanken. Die neue Oberfläche ist übersichtlicher gestaltet und leichter zu verstehen.

Weitere Details finden Sie in den Milvus 2.3 Release Notes.

Lassen Sie uns in Kontakt bleiben!

Wenn Sie Fragen oder Feedback zu Milvus haben, zögern Sie bitte nicht, uns über Twitter oder LinkedIn zu kontaktieren. Sie können auch gerne unserem Slack-Kanal beitreten, um sich direkt mit unseren Ingenieuren und der Community auszutauschen, oder besuchen Sie unsere Dienstagssprechstunde!

Like the article? Spread the word

Weiterlesen