Was ist Milvus?
Milvus ist eine leistungsstarke, hoch skalierbare Vektordatenbank, die effizient in einer Vielzahl von Umgebungen läuft, von einem Laptop bis hin zu großen verteilten Systemen. Sie ist sowohl als Open-Source-Software als auch als Cloud-Service verfügbar.
Milvus ist ein Open-Source-Projekt der LF AI & Data Foundation und steht unter der Apache 2.0-Lizenz. Die meisten Mitwirkenden sind Experten aus der High-Performance-Computing (HPC)-Gemeinschaft, die sich auf die Entwicklung 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.
Unstrukturierte Daten, Einbettungen und Milvus
Unstrukturierte Daten, wie z. B. Text, Bilder und Audio, variieren in ihrem Format und weisen eine umfangreiche zugrunde liegende Semantik auf, 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, die 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. Am wichtigsten ist jedoch, dass Milvus zahlreiche hardwarenahe Code-Optimierungen integriert, die von Vektorisierung auf Assembler-Ebene bis hin zu Multi-Thread-Parallelisierung und 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, bei denen 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.
- Schlüsselwort-Suche: Schlüsselwortsuche 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)
Erweiterte Datentypen
Zusätzlich zu den primitiven Datentypen unterstützt Milvus verschiedene fortgeschrittene Datentypen und ihre jeweils anwendbaren Abstandsmetriken.
Beschleunigung
Suchalgorithmen Milvus unterstützt eine Reihe von einstellbaren Indizierungs- und Suchalgorithmen. Details finden Sie unter In-memory Index, On-disk Index und GPU Index.
Partitionen und Partitionsschlüssel Partitionen sind Unterabteilungen einer Milvus-Sammlung. Sie können ein skalares Feld als Partitionsschlüssel wählen, um die Suchleistung zu verbessern. Weitere Informationen finden Sie unter Verwalten von Partitionen und Verwenden von Partitionsschlüsseln.
Abstimmbares Konsistenzmodell Konsistenz stellt sicher, dass jeder Milvus-Knoten oder jede Replik dieselbe Sicht auf die Daten hat, wenn sie zu einem bestimmten Zeitpunkt Daten schreiben oder lesen. Sie können die Konsistenzstufe bei der Durchführung von ANN-Suchen in Milvus leicht abstimmen. Details finden Sie unter Konsistenz.
Hochdurchsatz-Datenimport Um eine große Datenmenge in Milvus zu importieren, anstatt sie nacheinander einzufügen, sollten Sie unsere Hochdurchsatz-Datenimport-Tools verwenden. Einzelheiten finden Sie unter Vorbereiten von Quelldaten und Importieren von Daten.
Unterstützung von Mehrmandantenfähigkeit Milvus hat viele Funktionen implementiert, die auf Mehrmandantenszenarien ausgerichtet sind, einschließlich Partitionsschlüssel, Clustering-Schlüssel und mehr. Details finden Sie unter Mehrmandanten-Strategien.
Sicherheit und Autorisierung
Abstimmbares Konsistenzmodell Konsistenz stellt sicher, dass jeder Milvus-Knoten oder jede Replik dieselbe Sicht auf die Daten hat, wenn sie zu einem bestimmten Zeitpunkt Daten schreiben oder lesen. Sie können die Konsistenzstufe bei der Durchführung von ANN-Suchen in Milvus leicht abstimmen. Für Details siehe Konsistenz.
Datenisolierung und Ressourcenkontrolle Für Multi-Tenancy-Szenarien ist die Datenisolierung die grundlegende Sicherheitsanforderung. Milvus implementiert mehrere Funktionen, um Ihre Sicherheitsbedenken auszuräumen. Details finden Sie unter Verwalten von Ressourcengruppen und Clustering Compaction.
AI-Integrationen
Einbettungsmodell-Integrationen Einbettungsmodelle konvertieren unstrukturierte Daten in ihre numerische Darstellung 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 intuitive Benutzeroberfläche, die Ihnen hilft, Milvus und die darin gespeicherten Daten zu verwalten. 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 Bereitstellung 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 Migrationen.