Übersicht über die Bereitstellungsoptionen von Milvus
Milvus ist eine hochleistungsfähige, skalierbare Vektordatenbank. Sie unterstützt Anwendungsfälle unterschiedlichster Größenordnungen, von lokal in Jupyter-Notebooks ausgeführten Demos bis hin zu riesigen Kubernetes-Clustern, die mehrere zehn Milliarden Vektoren verarbeiten. Derzeit gibt es drei Milvus-Bereitstellungsoptionen: Milvus Lite, Milvus Standalone und Milvus Distributed.
Milvus Lite
Milvus Lite ist eine Python-Bibliothek, die in Ihre Anwendungen importiert werden kann. Als leichtgewichtige Version von Milvus eignet sie sich ideal für die schnelle Prototypenerstellung in Jupyter-Notebooks oder für den Einsatz auf Smart-Geräten mit begrenzten Ressourcen. Milvus Lite unterstützt dieselben APIs wie andere Milvus-Bereitstellungsarten. Der clientseitige Code, der mit Milvus Lite interagiert, kann auch mit Milvus-Instanzen in anderen Bereitstellungsmodi verwendet werden.
Um Milvus Lite in Ihre Anwendungen zu integrieren, führen Sie „ pip install pymilvus “ aus, um es zu installieren, und verwenden Sie die Anweisung „ MilvusClient("./demo.db") “, um eine Vektordatenbank mit einer lokalen Datei zu instanziieren, in der alle Ihre Daten gespeichert werden. Weitere Informationen finden Sie unter „Milvus Lite ausführen“.
Milvus Standalone
Milvus Standalone ist eine Serverbereitstellung auf einem einzelnen Rechner. Alle Komponenten von Milvus Standalone sind in einem einzigen Docker-Image zusammengefasst, was die Bereitstellung vereinfacht. Wenn Sie eine Produktionsumgebung betreiben, aber lieber auf Kubernetes verzichten möchten, ist der Betrieb von Milvus Standalone auf einem einzelnen Rechner mit ausreichendem Arbeitsspeicher eine gute Option. Standardmäßig nutzt Milvus Standalone „Woodpecker“ (eingebettet) als Nachrichtenwarteschlange, sodass kein separater Messaging-Dienst betrieben werden muss.
Milvus Distributed
Milvus Distributed kann auf Kubernetes-Clustern bereitgestellt werden. Diese Bereitstellung zeichnet sich durch eine cloudnative Architektur aus, bei der die Erfassungslast und Suchanfragen separat von isolierten Knoten verarbeitet werden, was Redundanz für kritische Komponenten ermöglicht. Sie bietet höchste Skalierbarkeit und Verfügbarkeit sowie Flexibilität bei der Anpassung der zugewiesenen Ressourcen für jede Komponente. Milvus Distributed ist die erste Wahl für Unternehmensanwender, die groß angelegte Vektorsuchsysteme im Produktivbetrieb einsetzen. Standardmäßig nutzt Milvus Distributed Woodpecker als Nachrichtenwarteschlange, das als dedizierter Dienst neben Milvus bereitgestellt wird.
Wählen Sie die richtige Bereitstellung für Ihren Anwendungsfall
Die Wahl des Bereitstellungsmodus hängt in der Regel vom Entwicklungsstand Ihrer Anwendung ab:
Für schnelles Prototyping
Wenn Sie schnell einen Prototyp erstellen oder zu Lernzwecken arbeiten möchten, beispielsweise für RAG-Demos (Retrieval Augmented Generation), KI-Chatbots oder multimodale Suche, eignet sich Milvus Lite allein oder in Kombination mit Milvus Standalone. Sie können Milvus Lite in Notebooks für das schnelle Prototyping nutzen und verschiedene Ansätze wie unterschiedliche Chunking-Strategien bei RAG ausprobieren. Möglicherweise möchten Sie die mit Milvus Lite erstellte Anwendung in einer kleinen Produktionsumgebung bereitstellen, um echte Nutzer zu bedienen, oder die Idee anhand größerer Datensätze – beispielsweise mit mehr als einigen Millionen Vektoren – validieren. In diesem Fall ist Milvus Standalone die richtige Wahl. Die Anwendungslogik für Milvus Lite kann weiterhin gemeinsam genutzt werden, da alle Milvus-Bereitstellungen über dieselbe clientseitige API verfügen. Die in Milvus Lite gespeicherten Daten lassen sich zudem mit einem Befehlszeilentool auf Milvus Standalone übertragen.
Bereitstellung in einer kleinen Produktionsumgebung
Für die frühe Produktionsphase, in der das Projekt noch nach der Produkt-Markt-Passung sucht und Agilität wichtiger ist als Skalierbarkeit, ist Milvus Standalone die beste Wahl. Es lässt sich bei ausreichenden Maschinenressourcen immer noch auf bis zu 100 Millionen Vektoren skalieren, erfordert dabei jedoch deutlich weniger DevOps-Aufwand als die Wartung eines K8s-Clusters.
Groß angelegter Produktionsbetrieb
Wenn Ihr Unternehmen schnell wächst und der Datenumfang die Kapazität eines einzelnen Servers übersteigt, ist es an der Zeit, Milvus Distributed in Betracht zu ziehen. Sie können Milvus Standalone aufgrund seiner Benutzerfreundlichkeit weiterhin für Entwicklungs- oder Staging-Umgebungen nutzen und gleichzeitig den K8s-Cluster betreiben, auf dem Milvus Distributed läuft. Dies ermöglicht Ihnen den Umgang mit mehreren zehn Milliarden Vektoren und bietet Ihnen zudem Flexibilität bei der Anpassung der Knotengröße an Ihre spezifische Arbeitslast, beispielsweise bei Szenarien mit vielen Lesezugriffen und seltenen Schreibvorgängen oder umgekehrt mit vielen Schreibvorgängen und wenigen Lesezugriffen.
Lokale Suche auf Edge-Geräten
Für die Suche in privaten oder sensiblen Daten auf Edge-Geräten können Sie Milvus Lite direkt auf dem Gerät bereitstellen, ohne für die Text- oder Bildsuche auf einen cloudbasierten Dienst angewiesen zu sein. Dies eignet sich beispielsweise für die Suche in firmeneigenen Dokumenten oder die Objekterkennung direkt auf dem Gerät.
Die Wahl des Milvus-Bereitstellungsmodus hängt von der Phase und dem Umfang Ihres Projekts ab. Milvus bietet eine flexible und leistungsstarke Lösung für verschiedene Anforderungen, vom schnellen Prototyping bis hin zum groß angelegten Einsatz in Unternehmen.
- Milvus Lite wird für kleinere Datensätze mit bis zu einigen Millionen Vektoren empfohlen.
- Milvus Standalone eignet sich für mittelgroße Datensätze mit bis zu 100 Millionen Vektoren.
- Milvus Distributed ist für groß angelegte Bereitstellungen konzipiert und kann Datensätze von 100 Millionen bis zu mehreren zehn Milliarden Vektoren verarbeiten.
Unabhängig vom Bereitstellungsmodus stützt sich jede Milvus-Instanz auf eine Nachrichtenwarteschlange, einen Objektspeicher und einen Metadatenspeicher – standardmäßig Woodpecker, MinIO und etcd. Um mehr über diese Abhängigkeiten zu erfahren, sie anzupassen oder externe Dienste anzubinden, lesen Sie den Abschnitt „Dateninfrastruktur“.
Wählen Sie die für Ihren Anwendungsfall geeignete Bereitstellungsoption
Vergleich der Funktionen
| Funktion | Milvus Lite | Milvus Standalone | Milvus Distributed |
|---|---|---|---|
| SDK / Client-Bibliothek | Python- -gRPC | Python- Go- Java- Node.js- C#- RESTful | Python Java Go Node.js C# RESTful |
| Datentypen | Dichter Vektor Sparse-Vektor Binärvektor Boolescher Wert Ganzzahl Gleitkomma VarChar Array JSON | Dichter Vektor Sparse-Vektor Binärvektor Boolescher Wert Ganzzahl Gleitkomma VarChar Array JSON | Dichter Vektor Sparse-Vektor Binärvektor Boolesche Werte Ganzzahl Gleitkomma VarChar Array JSON |
| Suchfunktionen | Vektorsuche (ANN-Suche) Metadatenfilterung Bereichssuche Skalare Abfrage Entitäten nach Primärschlüssel abrufen Hybride Suche | Vektorsuche (ANN-Suche) Metadatenfilterung Bereichssuche Skalare Abfrage Entitäten nach Primärschlüssel abrufen Hybride Suche | Vektorsuche (ANN-Suche) Metadatenfilterung Bereichssuche Skalare Abfrage Entitäten nach Primärschlüssel abrufen Hybride Suche |
| CRUD-Operationen | ✔️ | ✔️ | ✔️ |
| Erweiterte Datenverwaltung | k. A. | Zugriffskontrolle Partition Partitionsschlüssel | Zugriffskontroll- -Partition -Partitionsschlüssel Gruppierung physischer Ressourcen |
| Konsistenzstufen | Stark | Stark Begrenzte Veralterung Sitzung Eventuell | Stark Begrenzte Veralterung Sitzungs Eventual |
| Nachrichtenwarteschlange | k. A. | Woodpecker (eingebettet) | Woodpecker (Dienst) |