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

milvus-logo
LFAI
  • Home
  • Blog
  • Was ist in Milvus 1.0 enthalten?

Was ist in Milvus 1.0 enthalten?

  • Engineering
April 29, 2021
milvus

Milvus.jpeg Milvus.jpeg

Milvus ist eine Open-Source-Vektordatenbank, die für die Verwaltung riesiger Millionen-, Milliarden- oder sogar Billionen-Vektordatensätze entwickelt wurde. Milvus hat ein breites Anwendungsspektrum, das von der Entdeckung neuer Medikamente über Computer Vision und autonomes Fahren bis hin zu Empfehlungsmaschinen, Chatbots und vielem mehr reicht.

Im März 2021 veröffentlichte Zilliz, das Unternehmen hinter Milvus, die erste Version der Plattform mit Langzeitunterstützung - Milvus v1.0. Nach monatelangen, umfangreichen Tests ist eine stabile, produktionsreife Version der weltweit beliebtesten Vektordatenbank nun bereit für den Einsatz. Dieser Blog-Artikel behandelt einige Milvus-Grundlagen sowie die wichtigsten Funktionen von v1.0.


Milvus-Distributionen

Milvus ist in einer reinen CPU- und einer GPU-fähigen Distribution verfügbar. Erstere verlässt sich bei der Indexerstellung und der Suche ausschließlich auf die CPU; letztere ermöglicht eine hybride Suche und Indexerstellung mit CPU und GPU, die Milvus weiter beschleunigt. Bei der Hybrid-Distribution kann beispielsweise die CPU für die Suche und die GPU für die Indexerstellung verwendet werden, was die Abfrageeffizienz weiter verbessert.

Beide Milvus-Distributionen sind in Docker verfügbar. Sie können Milvus entweder aus Docker kompilieren (wenn Ihr Betriebssystem dies unterstützt) oder Milvus aus dem Quellcode unter Linux kompilieren (andere Betriebssysteme werden nicht unterstützt).


Vektoren einbetten

Vektoren werden in Milvus als Entitäten gespeichert. Jede Entität hat ein Vektor-ID-Feld und ein Vektorfeld. Milvus v1.0 unterstützt nur ganzzahlige Vektor-IDs. Bei der Erstellung einer Sammlung in Milvus können die Vektor-IDs automatisch generiert oder manuell definiert werden. Milvus stellt sicher, dass automatisch generierte Vektor-IDs eindeutig sind, manuell definierte IDs können jedoch innerhalb von Milvus dupliziert werden. Wenn IDs manuell definiert werden, sind die Benutzer dafür verantwortlich, dass alle IDs eindeutig sind.


Partitionen

Milvus unterstützt die Erstellung von Partitionen in einer Sammlung. In Situationen, in denen Daten regelmäßig eingefügt werden und historische Daten nicht von Bedeutung sind (z. B. Streaming-Daten), können Partitionen verwendet werden, um die Vektorähnlichkeitssuche zu beschleunigen. Eine Sammlung kann bis zu 4.096 Partitionen haben. Die Angabe einer Vektorsuche innerhalb einer bestimmten Partition schränkt die Suche ein und kann die Abfragezeit erheblich reduzieren, insbesondere bei Sammlungen, die mehr als eine Billion Vektoren enthalten.


Optimierungen des Indexalgorithmus

Milvus baut auf mehreren weit verbreiteten Indexbibliotheken auf, darunter Faiss, NMSLIB und Annoy. Milvus ist weit mehr als ein einfacher Wrapper für diese Indexbibliotheken. Hier sind einige der wichtigsten Verbesserungen, die an den zugrunde liegenden Bibliotheken vorgenommen wurden:

  • Optimierungen der IVF-Indexleistung unter Verwendung des Elkan k-means Algorithmus.
  • Optimierungen der FLAT-Suche.
  • Unterstützung von IVF_SQ8H-Hybridindizes, die die Größe von Indexdateien um bis zu 75 % reduzieren können, ohne die Datengenauigkeit zu beeinträchtigen. IVF_SQ8H baut auf IVF_SQ8 auf, mit identischem Recall, aber viel schnellerer Abfragegeschwindigkeit. Es wurde speziell für Milvus entwickelt, um die parallele Verarbeitungskapazität von GPUs und das Potenzial für Synergien zwischen CPU/GPU-Co-Processing zu nutzen.
  • Dynamische Befehlssatzkompatibilität.


Suche, Indexerstellung und andere Milvus-Optimierungen

Die folgenden Optimierungen wurden an Milvus vorgenommen, um die Such- und Indexerstellungsleistung zu verbessern.

  • Die Suchleistung wird in Situationen optimiert, in denen die Anzahl der Abfragen (nq) geringer ist als die Anzahl der CPU-Threads.
  • Milvus kombiniert Suchanfragen von einem Client, die die gleichen TopK- und Suchparameter verwenden.
  • Der Indexaufbau wird unterbrochen, wenn Suchanfragen eintreffen.
  • Milvus lädt Sammlungen beim Start automatisch in den Speicher vor.
  • Mehrere GPU-Geräte können zur Beschleunigung der Vektorähnlichkeitssuche zugewiesen werden.


Abstandsmetriken

Milvus ist eine Vektordatenbank, die zur Unterstützung der vektoriellen Ähnlichkeitssuche entwickelt wurde. Die Plattform wurde mit Blick auf MLOps und KI-Anwendungen auf Produktionsebene entwickelt. Milvus unterstützt eine breite Palette von Abstandsmetriken zur Berechnung der Ähnlichkeit, z. B. den euklidischen Abstand (L2), das innere Produkt (IP), den Jaccard-Abstand, Tanimoto, Hamming-Abstand, Superstruktur und Substruktur. Die letzten beiden Metriken werden häufig bei der molekularen Suche und der KI-gestützten Entdeckung neuer Medikamente verwendet.


Protokollierung

Milvus unterstützt Log-Rotation. In der Systemkonfigurationsdatei milvus.yaml können Sie die Größe einer einzelnen Protokolldatei, die Anzahl der Protokolldateien und die Protokollausgabe auf stdout festlegen.


Verteilte Lösung

Mishards, eine Milvus Sharding-Middleware, ist die verteilte Lösung für Milvus. Mit einem Schreibknoten und einer unbegrenzten Anzahl von Leseknoten setzt Mishards das Rechenpotenzial von Serverclustern frei. Zu den Funktionen gehören die Weiterleitung von Anfragen, die Aufteilung von Lese- und Schreibvorgängen, dynamische/horizontale Skalierung und vieles mehr.


Überwachung

Milvus ist kompatibel mit Prometheus, einem Open-Source-Toolkit zur Systemüberwachung und Alarmierung. Milvus fügt Unterstützung für Pushgateway in Prometheus hinzu, was es Prometheus ermöglicht, kurzlebige Batch-Metriken zu erfassen. Das Überwachungs- und Warnsystem funktioniert wie folgt:

  • Der Milvus-Server sendet angepasste Metrikdaten an Pushgateway.
  • Pushgateway sorgt dafür, dass kurzlebige Metrikdaten sicher an Prometheus gesendet werden.
  • Prometheus holt sich weiterhin Daten von Pushgateway.
  • Alertmanager wird verwendet, um die Alarmschwelle für verschiedene Indikatoren festzulegen und Alarme per E-Mail oder Nachricht zu senden.


Verwaltung von Metadaten

Milvus verwendet standardmäßig SQLite für die Verwaltung von Metadaten. SQLite ist in Milvus implementiert und muss nicht konfiguriert werden. In einer Produktionsumgebung wird empfohlen, MySQL für die Metadatenverwaltung zu verwenden.


Beteiligen Sie sich an unserer Open-Source-Community:

  • Finden Sie Milvus auf GitHub oder tragen Sie dazu bei.
  • Interagieren Sie mit der Community über Slack.
  • Verbinden Sie sich mit uns auf Twitter.

    Try Managed Milvus for Free

    Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

    Get Started

    Like the article? Spread the word

    Weiterlesen