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

milvus-logo
LFAI
  • Home
  • Blog
  • Milvus wurde für die Suche nach Vektorähnlichkeit in großem Maßstab (eine Billion) entwickelt

Milvus wurde für die Suche nach Vektorähnlichkeit in großem Maßstab (eine Billion) entwickelt

  • Engineering
January 13, 2021
milvus

Jeden Tag wird eine unüberschaubare Anzahl von geschäftskritischen Erkenntnissen verschenkt, weil Unternehmen ihre eigenen Daten nicht sinnvoll nutzen können. Unstrukturierte Daten wie Text, Bild, Video und Audio machen schätzungsweise 80 % aller Daten aus - aber nur 1 % davon wird jemals analysiert. Glücklicherweise machen künstliche Intelligenz (KI), Open-Source-Software und das Mooresche Gesetz die maschinelle Analyse zugänglicher als je zuvor. Mithilfe der vektoriellen Ähnlichkeitssuche ist es möglich, aus riesigen unstrukturierten Datensätzen Werte zu extrahieren. Bei dieser Technik werden unstrukturierte Daten in Merkmalsvektoren umgewandelt, ein maschinenfreundliches numerisches Datenformat, das in Echtzeit verarbeitet und analysiert werden kann.

Die vektorielle Ähnlichkeitssuche findet Anwendung in den Bereichen E-Commerce, Sicherheit, Entwicklung neuer Medikamente und mehr. Diese Lösungen beruhen auf dynamischen Datensätzen mit Millionen, Milliarden oder sogar Billionen von Vektoren, und ihre Nützlichkeit hängt oft davon ab, dass sie nahezu sofortige Ergebnisse liefern. Milvus ist eine Open-Source-Lösung zur Verwaltung von Vektordaten, die von Grund auf für die effiziente Verwaltung und Suche großer Vektordatensätze entwickelt wurde. Dieser Artikel beschreibt den Ansatz von Milvus für die Verwaltung von Vektordaten und wie die Plattform für die Suche nach Vektorähnlichkeiten optimiert wurde.

Springen Sie zu:

LSM-Bäume sorgen für ein effizientes dynamisches Datenmanagement in großem Maßstab

Um ein effizientes dynamisches Datenmanagement zu ermöglichen, verwendet Milvus eine log-strukturierte Merge-Tree (LSM-Baum) Datenstruktur. LSM-Bäume eignen sich gut für den Zugriff auf Daten, die eine hohe Anzahl von Einfügungen und Löschungen aufweisen. Detaillierte Informationen zu den spezifischen Eigenschaften von LSM-Bäumen, die eine leistungsstarke dynamische Datenverwaltung gewährleisten, finden Sie in der von ihren Erfindern veröffentlichten Originalstudie. LSM-Bäume sind die zugrunde liegende Datenstruktur, die von vielen beliebten Datenbanken verwendet wird, darunter BigTable, Cassandra und RocksDB.

Vektoren existieren in Milvus als Entitäten und werden in Segmenten gespeichert. Jedes Segment enthält zwischen einer und ~8 Millionen Entitäten. Jede Entität hat Felder für eine eindeutige ID und Vektoreingaben, wobei letztere zwischen 1 und 32768 Dimensionen darstellen.

Blog_Milvus Was Built for Massive-Scale (Think Trillion) Vector Similarity Search_2.png Blog_Milvus wurde für die Suche nach vektorieller Ähnlichkeit in großem Maßstab (Billionen) entwickelt_2.png

Die Datenverwaltung ist für schnellen Zugriff und begrenzte Fragmentierung optimiert

Wenn Milvus eine Einfügeanforderung erhält, schreibt es neue Daten in das Write-Ahead-Log (WAL). Nachdem die Anforderung erfolgreich in der Protokolldatei aufgezeichnet wurde, werden die Daten in einen veränderbaren Puffer geschrieben. Schließlich führt einer von drei Auslösern dazu, dass der Puffer unveränderlich wird und auf die Festplatte gespült wird:

  1. Zeitgesteuerte Intervalle: Die Daten werden regelmäßig in festgelegten Intervallen (standardmäßig 1 Sekunde) auf die Festplatte geschrieben.
  2. Puffergröße: Die aufgelaufenen Daten erreichen die Obergrenze für den veränderbaren Puffer (128 MB).
  3. Manueller Auslöser: Die Daten werden manuell auf die Festplatte übertragen, wenn der Client die Flush-Funktion aufruft.

Blog_Milvus Was Built for Massive-Scale (Think Trillion) Vector Similarity Search_3.png Blog_Milvus wurde für die Suche nach Vektorähnlichkeit in großem Maßstab (eine Billion) entwickelt_3.png

Benutzer können Dutzende oder Millionen von Vektoren auf einmal hinzufügen und dabei Datendateien unterschiedlicher Größe erzeugen, wenn neue Vektoren eingefügt werden. Dies führt zu einer Fragmentierung, die die Datenverwaltung erschweren und die Vektorähnlichkeitssuche verlangsamen kann. Um eine übermäßige Datenfragmentierung zu verhindern, führt Milvus ständig Datensegmente zusammen, bis die kombinierte Dateigröße eine vom Benutzer konfigurierbare Grenze erreicht (z. B. 1 GB). Bei einer Obergrenze von 1 GB ergibt das Einfügen von 100 Millionen 512-dimensionalen Vektoren zum Beispiel nur ~200 Datendateien.

In inkrementellen Berechnungsszenarien, in denen Vektoren gleichzeitig eingefügt und durchsucht werden, stellt Milvus neu eingefügte Vektordaten sofort für die Suche zur Verfügung, bevor sie mit anderen Daten zusammengeführt werden. Nach der Zusammenführung der Daten werden die ursprünglichen Datendateien entfernt und die neu erstellte zusammengeführte Datei wird stattdessen für die Suche verwendet.

Blog_Milvus Was Built for Massive-Scale (Think Trillion) Vector Similarity Search_4.png Blog_Milvus wurde für die Suche nach Vektorähnlichkeit in großem Maßstab (Think Trillion) entwickelt_4.png

Blog_Milvus Was Built for Massive-Scale (Think Trillion) Vector Similarity Search_5.png Blog_Milvus wurde für die massive (Think Trillion) Vektor-Ähnlichkeitssuche_5.png entwickelt

Die Ähnlichkeitssuche wird durch die Indizierung von Vektordaten beschleunigt

Standardmäßig verlässt sich Milvus bei der Abfrage von Vektordaten auf die Brute-Force-Suche. Dieser Ansatz, der auch als erschöpfende Suche bezeichnet wird, prüft bei jeder Abfrage alle Vektordaten. Bei Datensätzen, die Millionen oder Milliarden von mehrdimensionalen Vektoren enthalten, ist dieser Prozess zu langsam, um in den meisten Szenarien der Ähnlichkeitssuche nützlich zu sein. Um die Abfragezeit zu verkürzen, werden Algorithmen verwendet, um einen Vektorindex zu erstellen. Die indizierten Daten werden so geclustert, dass ähnliche Vektoren näher beieinander liegen, so dass die Ähnlichkeitssuchmaschine nur einen Teil der Gesamtdaten abfragen muss, was die Abfragezeiten drastisch verkürzt, ohne dass die Genauigkeit darunter leidet.

Die meisten der von Milvus unterstützten Vektorindex-Typen verwenden ANN-Suchalgorithmen (approximate nearest neighbor). Es gibt zahlreiche ANN-Indizes, und jeder von ihnen ist mit Kompromissen zwischen Leistung, Genauigkeit und Speicheranforderungen verbunden. Milvus unterstützt quantisierungs-, graphen- und baumbasierte Indizes, die alle unterschiedlichen Anwendungsszenarien dienen. In der technischen Dokumentation von Milvus finden Sie weitere Informationen über die Erstellung von Indizes und die spezifischen Typen von Vektorindizes, die unterstützt werden.

Bei der Indexerstellung werden eine Menge Metadaten erzeugt. Die Indizierung von 100 Millionen 512-dimensionalen Vektoren, die in 200 Datendateien gespeichert sind, führt beispielsweise zu 200 zusätzlichen Indexdateien. Um den Dateistatus effizient zu überprüfen und neue Dateien zu löschen oder einzufügen, ist ein effizientes Metadaten-Management-System erforderlich. Milvus verwendet Online Transactional Processing (OLTP), eine Datenverarbeitungstechnik, die sich gut für die Aktualisierung und/oder Löschung kleiner Datenmengen in einer Datenbank eignet. Milvus verwendet SQLite oder MySQL für die Verwaltung von Metadaten.

Erfahren Sie mehr über Milvus

Milvus ist eine Open-Source-Plattform zur Verwaltung von Vektordaten, die sich derzeit bei LF AI & Data, einer Dachorganisation der Linux Foundation, in der Entwicklungsphase befindet. Milvus wurde 2019 von Zilliz, dem Data-Science-Softwareunternehmen, das das Projekt initiiert hat, als Open Source veröffentlicht. Weitere Informationen zu Milvus finden Sie auf der Website des Unternehmens. Wenn Sie sich für die Vektorähnlichkeitssuche oder die Nutzung von KI zur Erschließung des Potenzials unstrukturierter Daten interessieren, werden Sie Mitglied unserer Open-Source-Community auf GitHub.

    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