Was ist Milvus?
Milvus ist ein Raubvogel der Gattung Milvus aus der Familie der Habichte (Accipaitridae), der für seine Fluggeschwindigkeit, sein scharfes Sehvermögen und seine bemerkenswerte Anpassungsfähigkeit bekannt ist.
Zilliz hat den Namen Milvus für seine hochleistungsfähige, hoch skalierbare Open-Source-Vektordatenbank gewählt, die effizient in einer Vielzahl von Umgebungen läuft, von einem Laptop bis zu großen verteilten Systemen. Sie ist sowohl als Open-Source-Software als auch als Cloud-Service verfügbar.
Milvus wurde von Zilliz entwickelt und bald darauf an die LF AI & Data Foundation unter der Linux Foundation gespendet und hat sich zu einem der weltweit führenden Open-Source-Vektordatenbankprojekte entwickelt. Es wird unter der Apache 2.0-Lizenz vertrieben, und die meisten Mitwirkenden sind Experten aus der High-Performance-Computing (HPC)-Gemeinschaft, die sich auf den Aufbau von Großsystemen und die Optimierung von hardwaregerechtem Code spezialisiert haben. Zu den wichtigsten Mitwirkenden gehören Experten von Zilliz, ARM, NVIDIA, AMD, Intel, Meta, IBM, Salesforce, Alibaba und Microsoft.
Interessanterweise ist jedes Open-Source-Projekt von Zilliz nach einem Vogel benannt, was eine Namenskonvention ist, die Freiheit, Weitsicht und die agile Entwicklung von Technologie symbolisiert.
Unstrukturierte Daten, Einbettungen und Milvus
Unstrukturierte Daten, wie Texte, Bilder und Audiodaten, haben unterschiedliche Formate und eine umfangreiche zugrunde liegende Semantik, was ihre Analyse schwierig macht. Um diese Komplexität zu bewältigen, werden Einbettungen verwendet, um unstrukturierte Daten in numerische Vektoren umzuwandeln, die ihre wesentlichen Merkmale erfassen. Diese Vektoren werden dann in einer Vektordatenbank gespeichert, was schnelle und skalierbare Such- und Analysevorgänge ermöglicht.
Milvus bietet robuste Datenmodellierungsfunktionen, mit denen Sie Ihre unstrukturierten oder multimodalen Daten in strukturierten Sammlungen organisieren können. Milvus unterstützt eine breite Palette von Datentypen für die Modellierung verschiedener Attribute, darunter gängige Zahlen- und Zeichentypen, verschiedene Vektortypen, Arrays, Sets und JSON, was Ihnen den Aufwand für die Pflege mehrerer Datenbanksysteme erspart.
Unstrukturierte Daten, Einbettungen und Milvus
Milvus bietet drei Bereitstellungsmodi, die ein breites Spektrum an Datenskalen abdecken - vom lokalen Prototyping in Jupyter Notebooks bis hin zu massiven Kubernetes-Clustern, die Dutzende von Milliarden Vektoren verwalten:
- Milvus Lite ist eine Python-Bibliothek, die einfach in Ihre Anwendungen integriert werden kann. Als leichtgewichtige Version von Milvus ist sie ideal für schnelles Prototyping in Jupyter Notebooks oder die Ausführung auf Edge-Geräten mit begrenzten Ressourcen. Erfahren Sie mehr.
- Milvus Standalone ist eine Serverimplementierung für eine einzelne Maschine, bei der alle Komponenten in einem einzigen Docker-Image gebündelt sind, um eine einfache Bereitstellung zu ermöglichen. Erfahren Sie mehr.
- Milvus Distributed kann auf Kubernetes-Clustern bereitgestellt werden und verfügt über eine Cloud-native Architektur, die für Szenarien im Milliardenmaßstab oder noch größer ausgelegt ist. Diese Architektur gewährleistet Redundanz bei kritischen Komponenten. Erfahren Sie mehr.
Was macht Milvus so schnell?
Milvus wurde vom ersten Tag an als hocheffizientes Vektordatenbanksystem konzipiert. In den meisten Fällen übertrifft Milvus andere Vektordatenbanken um das 2-5fache (siehe die Ergebnisse des VectorDBBench). Diese hohe Leistung ist das Ergebnis mehrerer wichtiger Designentscheidungen:
Hardware-gerechte Optimierung: Um Milvus in verschiedenen Hardwareumgebungen einsetzen zu können, haben wir seine Leistung speziell für viele Hardwarearchitekturen und Plattformen optimiert, darunter AVX512, SIMD, GPUs und NVMe SSD.
Erweiterte Suchalgorithmen: Milvus unterstützt eine breite Palette von In-Memory- und On-Disk-Indizierungs-/Suchalgorithmen, einschließlich IVF, HNSW, DiskANN und mehr, die alle tiefgreifend optimiert wurden. Im Vergleich zu gängigen Implementierungen wie FAISS und HNSWLib bietet Milvus eine um 30-70 % bessere Leistung.
Suchmaschine in C++: Über 80 % der Leistung einer Vektordatenbank wird durch ihre Suchmaschine bestimmt. Milvus verwendet C++ für diese kritische Komponente aufgrund der hohen Leistung, der Low-Level-Optimierung und der effizienten Ressourcenverwaltung dieser Sprache. Vor allem aber integriert Milvus zahlreiche hardwarenahe Code-Optimierungen, die von der Vektorisierung auf Assembler-Ebene bis hin zur Multi-Thread-Parallelisierung und dem Scheduling reichen, um die Möglichkeiten der Hardware voll auszuschöpfen.
Spaltenorientiert: Milvus ist ein spaltenorientiertes Vektor-Datenbanksystem. Die Hauptvorteile ergeben sich aus den Datenzugriffsmustern. Bei der Durchführung von Abfragen liest eine spaltenorientierte Datenbank nur die spezifischen Felder, die an der Abfrage beteiligt sind, und nicht ganze Zeilen, was die Menge der abgerufenen Daten erheblich reduziert. Darüber hinaus können Operationen auf spaltenbasierte Daten leicht vektorisiert werden, so dass Operationen auf die gesamten Spalten auf einmal angewendet werden können, was die Leistung weiter verbessert.
Was macht Milvus so skalierbar?
Im Jahr 2022 unterstützte Milvus Vektoren im Milliardenbereich und im Jahr 2023 skalierte es mit gleichbleibender Stabilität auf Dutzende von Milliarden und unterstützte Großszenarien für über 300 große Unternehmen, darunter Salesforce, PayPal, Shopee, Airbnb, eBay, NVIDIA, IBM, AT&T, LINE, ROBLOX, Inflection usw.
Die Cloud-native und hochgradig entkoppelte Systemarchitektur von Milvus stellt sicher, dass das System kontinuierlich mit dem Datenwachstum wachsen kann:
Hochgradig entkoppelte Systemarchitektur von Milvus
Milvus selbst ist vollständig zustandslos, sodass es mit Hilfe von Kubernetes oder öffentlichen Clouds leicht skaliert werden kann. Darüber hinaus sind die Milvus-Komponenten gut entkoppelt, wobei die drei kritischsten Aufgaben - die Suche, das Einfügen von Daten und die Indizierung/Verdichtung - als leicht parallelisierbare Prozesse konzipiert sind, wobei die komplexe Logik ausgegliedert ist. Dadurch wird sichergestellt, dass die entsprechenden Abfrage-, Daten- und Indexknoten unabhängig voneinander skaliert werden können, wodurch Leistung und Kosteneffizienz optimiert werden.
Von Milvus unterstützte Arten von Suchvorgängen
Milvus unterstützt verschiedene Arten von Suchfunktionen, um die Anforderungen verschiedener Anwendungsfälle zu erfüllen:
- ANN-Suche: Findet die besten K Vektoren, die Ihrem Abfragevektor am nächsten kommen.
- Filternde Suche: Führt eine ANN-Suche unter bestimmten Filterbedingungen durch.
- Bereichssuche: Findet Vektoren innerhalb eines bestimmten Radius von Ihrem Abfragevektor.
- Hybride Suche: Führt die ANN-Suche auf der Grundlage mehrerer Vektorfelder durch.
- Volltextsuche: Volltextsuche auf der Grundlage von BM25.
- Neu ordnen: Passt die Reihenfolge der Suchergebnisse auf der Grundlage zusätzlicher Kriterien oder eines sekundären Algorithmus an und verfeinert die ursprünglichen ANN-Suchergebnisse.
- Abrufen: Ruft Daten anhand ihrer Primärschlüssel ab.
- Abfragen: Ruft Daten anhand bestimmter Ausdrücke ab.
Umfassender Funktionssatz
Zusätzlich zu den oben erwähnten Schlüsselfunktionen bietet Milvus eine Reihe von Funktionen, die um ANN-Suchen herum implementiert wurden, so dass Sie die Möglichkeiten von Milvus voll ausschöpfen können.
API und SDK
- RESTful API (offiziell)
- PyMilvus (Python SDK) (offiziell)
- Go SDK (offiziell)
- Java SDK (offiziell)
- Node.js (JavaScript) SDK (offiziell)
- C# (beigesteuert von Microsoft)
- C++ SDK (offiziell)
- Rust SDK (in Entwicklung)
Erweiterte Datentypen
Zusätzlich zu den primitiven Datentypen unterstützt Milvus verschiedene fortgeschrittene Datentypen und ihre jeweils anwendbaren Distanzmetriken.
- Spärliche Vektoren
- Binäre Vektoren
- JSON-Unterstützung
- Array-Unterstützung
- Text (in Entwicklung)
- Geolocation (in Entwicklung)
Warum Milvus?
Hohe Leistung in großem Maßstab und hohe Verfügbarkeit
Milvus verfügt über eine verteilte Architektur, die Rechen- und Speicherfunktionen voneinander trennt. Milvus kann horizontal skaliert werden und sich an verschiedene Datenverkehrsmuster anpassen, wobei eine optimale Leistung erreicht wird, indem die Abfrageknoten für leseintensive Arbeitslasten und die Datenknoten für schreibintensive Arbeitslasten unabhängig voneinander erhöht werden. Die zustandslosen Microservices auf K8s ermöglichen eine schnelle Wiederherstellung nach einem Ausfall und gewährleisten eine hohe Verfügbarkeit. Die Unterstützung von Replikaten erhöht die Fehlertoleranz und den Durchsatz weiter, indem Datensegmente auf mehrere Abfrageknoten geladen werden. Siehe Benchmark für den Leistungsvergleich.
Unterstützung für verschiedene Vektorindex-Typen und Hardware-Beschleunigung
Milvus trennt das System und den Kern der Vektorsuchmaschine, so dass alle wichtigen Vektorindex-Typen unterstützt werden, die für verschiedene Szenarien optimiert sind, einschließlich HNSW, IVF, FLAT (Brute-Force), SCANN und DiskANN, mit quantisierungsbasierten Variationen und mmap. Milvus optimiert die Vektorsuche für erweiterte Funktionen wie die Filterung von Metadaten und die Bereichssuche. Darüber hinaus implementiert Milvus Hardwarebeschleunigung, um die Leistung der Vektorsuche zu verbessern, und unterstützt GPU-Indizierung, wie z. B. CAGRA von NVIDIA.
Flexible Mehrmandantenfähigkeit und Hot/Cold Storage
Milvus unterstützt Multi-Tenancy durch Isolierung auf Datenbank-, Sammlungs-, Partitions- oder Partitionsschlüssel-Ebene. Die flexiblen Strategien ermöglichen es einem einzigen Cluster, Hunderte bis Millionen von Mandanten zu verwalten, und gewährleisten außerdem eine optimierte Suchleistung und flexible Zugriffskontrolle. Milvus steigert die Kosteneffizienz durch Hot/Cold Storage. Daten, auf die häufig zugegriffen wird, können im Arbeitsspeicher oder auf SSDs gespeichert werden, um eine bessere Leistung zu erzielen, während Daten, auf die weniger häufig zugegriffen wird, auf einem langsameren, kostengünstigen Speicher abgelegt werden. Dieser Mechanismus kann die Kosten erheblich senken und gleichzeitig eine hohe Leistung für wichtige Aufgaben gewährleisten.
Sparse Vector für Volltextsuche und hybride Suche
Neben der semantischen Suche über Dense Vector unterstützt Milvus auch die Volltextsuche mit BM25 sowie erlernte Sparse Embedding Verfahren wie SPLADE und BGE-M3. Benutzer können Sparse Vector und Dense Vector in der gleichen Sammlung speichern und Funktionen definieren, um die Ergebnisse mehrerer Suchanfragen neu zu ordnen. Siehe Beispiele für die hybride Suche mit semantischer Suche und Volltextsuche.
Datensicherheit und feinkörnige Zugriffskontrolle
Milvus gewährleistet die Datensicherheit durch die Implementierung von obligatorischer Benutzerauthentifizierung, TLS-Verschlüsselung und rollenbasierter Zugriffskontrolle (RBAC). Die Benutzerauthentifizierung stellt sicher, dass nur autorisierte Benutzer mit gültigen Anmeldeinformationen auf die Datenbank zugreifen können, während die TLS-Verschlüsselung die gesamte Kommunikation innerhalb des Netzwerks sichert. Darüber hinaus ermöglicht RBAC eine fein abgestufte Zugriffskontrolle, indem Benutzern auf der Grundlage ihrer Rollen spezifische Berechtigungen zugewiesen werden. Diese Funktionen machen Milvus zu einer robusten und sicheren Wahl für Unternehmensanwendungen, die sensible Daten vor unbefugtem Zugriff und möglichen Verstößen schützen.
AI-Integrationen
Einbettungsmodell-Integrationen Einbettungsmodelle konvertieren unstrukturierte Daten in ihre numerische Repräsentation im hochdimensionalen Datenraum, so dass Sie sie in Milvus speichern können. Derzeit sind in PyMilvus, dem Python-SDK, mehrere Einbettungsmodelle integriert, so dass Sie Ihre Daten schnell in Vektoreinbettungen aufbereiten können. Details finden Sie unter Einbettungsübersicht.
Integration von Reranking-Modellen Im Bereich des Information Retrieval und der generativen KI ist ein Reranker ein unverzichtbares Werkzeug, das die Reihenfolge der Ergebnisse der ersten Suche optimiert. PyMilvus integriert auch mehrere Reranking-Modelle, um die Reihenfolge der Ergebnisse aus den ersten Suchen zu optimieren. Einzelheiten finden Sie unter Reranker-Übersicht.
LangChain und andere KI-Tool-Integrationen In der GenAI-Ära gewinnen Tools wie LangChain viel Aufmerksamkeit von Anwendungsentwicklern. Als Kernkomponente dient Milvus normalerweise als Vektorspeicher in solchen Tools. Um zu erfahren, wie Sie Milvus in Ihre bevorzugten KI-Tools integrieren können, lesen Sie bitte unsere Integrationen und Tutorials.
Werkzeuge und Ökosystem
Attu Attu ist eine intuitiv bedienbare Benutzeroberfläche, mit der Sie Milvus und die darin gespeicherten Daten verwalten können. Details finden Sie im Attu-Repository.
Birdwatcher Birdwatcher ist ein Debugging-Tool für Milvus. Mit ihm können Sie sich mit etcd verbinden, um den Zustand Ihres Milvus-Systems zu überprüfen oder es im laufenden Betrieb zu konfigurieren. Details finden Sie unter BirdWatcher.
Promethus- und Grafana-Integrationen Prometheus ist ein Open-Source-Toolkit zur Systemüberwachung und Alarmierung für Kubernetes. Grafana ist ein Open-Source-Visualisierungs-Stack, der mit allen Datenquellen verbunden werden kann. Sie können Promethus & Grafana als Überwachungsdienstanbieter verwenden, um die Leistung von Milvus distributed visuell zu überwachen. Details finden Sie unter Bereitstellen von Überwachungsdiensten.
Milvus Backup Milvus Backup ist ein Tool, mit dem Benutzer Milvus-Daten sichern und wiederherstellen können. Es bietet sowohl CLI als auch API, um sich in verschiedene Anwendungsszenarien einzupassen. Einzelheiten finden Sie unter Milvus Backup.
Milvus Capture Data Change (CDC) Milvus-CDC kann inkrementelle Daten in Milvus-Instanzen erfassen und synchronisieren und stellt die Zuverlässigkeit von Geschäftsdaten sicher, indem es sie nahtlos zwischen Quell- und Zielinstanzen überträgt, was eine einfache inkrementelle Sicherung und Notfallwiederherstellung ermöglicht. Einzelheiten finden Sie unter Milvus CDC.
Milvus-Konnektoren Milvus hat eine Reihe von Konnektoren für die nahtlose Integration von Milvus mit Tools von Drittanbietern, wie z. B. Apache Spark, geplant. Derzeit können Sie unseren Spark-Konnektor verwenden, um Ihre Milvus-Daten für die Verarbeitung durch maschinelles Lernen in Apache Spark einzuspeisen. Einzelheiten finden Sie unter Spark-Milvus Connector.
Vector Transmission Services (VTS) Milvus bietet eine Reihe von Tools, mit denen Sie Ihre Daten zwischen einer Milvus-Instanz und einer Reihe von Datenquellen übertragen können, darunter Zilliz-Cluster, Elasticsearch, Postgres (PgVector) und eine andere Milvus-Instanz. Einzelheiten finden Sie unter VTS.