Skalierbare und rasend schnelle Ähnlichkeitssuche mit der Milvus-Vektordatenbank
Titelbild
Einführung
In diesem Artikel werden wir einige interessante Aspekte behandeln, die für Vektordatenbanken und die Ähnlichkeitssuche im großen Maßstab relevant sind. In der heutigen, sich schnell entwickelnden Welt gibt es neue Technologien, neue Unternehmen und neue Datenquellen, und folglich müssen wir immer wieder neue Wege finden, um diese Daten zu speichern, zu verwalten und für Erkenntnisse zu nutzen. Strukturierte, tabellarische Daten werden seit Jahrzehnten in relationalen Datenbanken gespeichert, und Business Intelligence lebt von der Analyse und Gewinnung von Erkenntnissen aus solchen Daten. Betrachtet man jedoch die aktuelle Datenlandschaft, so handelt es sich bei mehr als 80-90 % der Daten um unstrukturierte Informationen wie Text, Video, Audio, Webserverprotokolle, soziale Medien und mehr". Unternehmen nutzen die Möglichkeiten des maschinellen Lernens und des Deep Learning, um Erkenntnisse aus solchen Daten zu gewinnen, da herkömmliche abfragebasierte Methoden möglicherweise nicht ausreichen oder gar nicht möglich sind. Es gibt ein riesiges, ungenutztes Potenzial, um aus solchen Daten wertvolle Erkenntnisse zu gewinnen, und wir stehen erst am Anfang!
"Da die meisten Daten auf der Welt unstrukturiert sind, stellt die Möglichkeit, sie zu analysieren und darauf zu reagieren, eine große Chance dar. - Mikey Shulman, Head of ML, Kensho
Unstrukturierte Daten haben, wie der Name schon sagt, keine implizite Struktur, wie eine Tabelle mit Zeilen und Spalten (daher auch tabellarische oder strukturierte Daten genannt). Im Gegensatz zu strukturierten Daten gibt es keine einfache Möglichkeit, den Inhalt von unstrukturierten Daten in einer relationalen Datenbank zu speichern. Bei der Nutzung unstrukturierter Daten zur Gewinnung von Erkenntnissen gibt es drei wesentliche Herausforderungen:
- Speicherung: Normale relationale Datenbanken sind für die Speicherung strukturierter Daten geeignet. Sie können zwar NoSQL-Datenbanken verwenden, um solche Daten zu speichern, aber die Verarbeitung dieser Daten, um die richtigen Darstellungen für KI-Anwendungen in großem Umfang zu extrahieren, ist mit zusätzlichem Aufwand verbunden.
- Repräsentation: Computer verstehen keine Texte oder Bilder wie wir. Sie verstehen nur Zahlen, und wir müssen unstrukturierte Daten in eine nützliche numerische Darstellung umwandeln, typischerweise Vektoren oder Einbettungen.
- Abfragen: Sie können unstrukturierte Daten nicht direkt auf der Grundlage bestimmter bedingter Anweisungen abfragen, wie dies bei SQL für strukturierte Daten möglich ist. Stellen Sie sich ein einfaches Beispiel vor: Sie versuchen, anhand eines Fotos Ihres Lieblingsschuhs nach ähnlichen Schuhen zu suchen! Sie können weder rohe Pixelwerte für die Suche verwenden, noch können Sie strukturierte Merkmale wie Schuhform, Größe, Stil, Farbe und mehr darstellen. Stellen Sie sich nun vor, Sie müssten dies für Millionen von Schuhen tun!
Damit Computer unstrukturierte Daten verstehen, verarbeiten und darstellen können, wandeln wir sie in der Regel in dichte Vektoren um, die oft als Einbettungen bezeichnet werden.
Abbildung 1
Es gibt eine Vielzahl von Methoden, die insbesondere das Deep Learning nutzen, darunter Convolutional Neural Networks (CNNs) für visuelle Daten wie Bilder und Transformers für Textdaten, die zur Umwandlung solcher unstrukturierter Daten in Embeddings verwendet werden können. Zilliz hat einen hervorragenden Artikel über verschiedene Einbettungstechniken!
Mit dem Speichern dieser Einbettungsvektoren ist es jedoch nicht getan. Man muss auch in der Lage sein, ähnliche Vektoren abzufragen und herauszufinden. Warum, fragen Sie? Ein Großteil der realen Anwendungen wird durch Vektorähnlichkeitssuche für KI-basierte Lösungen angetrieben. Dazu gehören die visuelle (Bild-)Suche in Google, Empfehlungssysteme in Netflix oder Amazon, Textsuchmaschinen in Google, multimodale Suche, Datendeduplizierung und vieles mehr!
Die Speicherung, Verwaltung und Abfrage von Vektoren in großem Umfang ist keine einfache Aufgabe. Man braucht dafür spezialisierte Werkzeuge und Vektordatenbanken sind das effektivste Werkzeug für diese Aufgabe! In diesem Artikel werden wir die folgenden Aspekte behandeln:
- Vektoren und Vektorähnlichkeitssuche
- Was ist eine Vektordatenbank?
- Milvus - die fortschrittlichste Vektordatenbank der Welt
- Durchführen einer visuellen Bildsuche mit Milvus - Ein Anwendungsfall
Legen wir los!
Vektoren und vektorielle Ähnlichkeitssuche
Wir haben bereits festgestellt, dass es notwendig ist, unstrukturierte Daten wie Bilder und Texte als Vektoren darzustellen, da Computer nur Zahlen verstehen können. In der Regel nutzen wir KI-Modelle, genauer gesagt Deep-Learning-Modelle, um unstrukturierte Daten in numerische Vektoren umzuwandeln, die von Maschinen eingelesen werden können. Diese Vektoren sind in der Regel eine Liste von Fließkommazahlen, die zusammen das zugrunde liegende Element (Bild, Text usw.) darstellen.
Verstehen von Vektoren
Im Bereich der Verarbeitung natürlicher Sprache (NLP) gibt es viele Modelle zur Einbettung von Wörtern wie Word2Vec, GloVe und FastText, die dabei helfen können, Wörter als numerische Vektoren darzustellen. Im Laufe der Zeit haben sich Transformer-Modelle wie BERT entwickelt, mit denen kontextbezogene Einbettungsvektoren und bessere Darstellungen für ganze Sätze und Absätze gelernt werden können.
In ähnlicher Weise gibt es im Bereich der Computer Vision Modelle wie Convolutional Neural Networks (CNNs), die beim Lernen von Darstellungen aus visuellen Daten wie Bildern und Videos helfen können. Mit dem Aufkommen von Transformers gibt es auch Vision Transformers, die eine bessere Leistung als normale CNNs erbringen können.
Abbildung 2
Der Vorteil solcher Vektoren besteht darin, dass wir sie für die Lösung realer Probleme nutzen können, z. B. für die visuelle Suche, bei der man typischerweise ein Foto hochlädt und Suchergebnisse mit visuell ähnlichen Bildern erhält. Google hat dies als eine sehr beliebte Funktion in seine Suchmaschine integriert, wie im folgenden Beispiel dargestellt.
Abbildung 3
Solche Anwendungen werden mit Datenvektoren und einer vektoriellen Ähnlichkeitssuche betrieben. Betrachten Sie zwei Punkte in einem kartesischen X-Y-Koordinatenraum. Der Abstand zwischen zwei Punkten kann als einfacher euklidischer Abstand berechnet werden, der durch die folgende Gleichung dargestellt wird.
Abbildung 4
Stellen Sie sich nun vor, dass jeder Datenpunkt ein Vektor mit D-Dimensionen ist. Dann könnten Sie immer noch den euklidischen Abstand oder sogar andere Abstandsmetriken wie den Hamming- oder Cosinus-Abstand verwenden, um herauszufinden, wie nahe die beiden Datenpunkte beieinander liegen. Auf diese Weise lässt sich eine Vorstellung von Nähe oder Ähnlichkeit entwickeln, die als quantifizierbare Metrik verwendet werden kann, um ähnliche Elemente anhand eines Referenzelements unter Verwendung ihrer Vektoren zu finden.
Verständnis der vektoriellen Ähnlichkeitssuche
Bei der vektoriellen Ähnlichkeitssuche, die oft auch als Suche nach dem nächsten Nachbarn (NN) bezeichnet wird, geht es im Wesentlichen um die Berechnung der paarweisen Ähnlichkeit (oder des Abstands) zwischen einem Referenzobjekt (für das wir ähnliche Objekte finden wollen) und einer Sammlung vorhandener Objekte (in der Regel in einer Datenbank) und die Rückgabe der obersten "k" nächsten Nachbarn, die die obersten "k" ähnlichsten Objekte sind. Die Schlüsselkomponente zur Berechnung dieser Ähnlichkeit ist die Ähnlichkeitsmetrik, die euklidischer Abstand, inneres Produkt, Kosinusabstand, Hamming-Abstand usw. sein kann. Je kleiner der Abstand ist, desto ähnlicher sind die Vektoren.
Die Herausforderung bei der exakten Suche nach dem nächsten Nachbarn (NN) ist die Skalierbarkeit. Sie müssen jedes Mal N-Distanzen berechnen (unter der Annahme von N vorhandenen Elementen), um ähnliche Elemente zu erhalten. Das kann sehr langsam sein, vor allem wenn man die Daten nicht irgendwo speichert und indiziert (wie eine Vektordatenbank!). Um die Berechnung zu beschleunigen, nutzen wir in der Regel die ungefähre Suche nach dem nächsten Nachbarn, die oft auch als ANN-Suche bezeichnet wird und die Speicherung der Vektoren in einem Index beinhaltet. Der Index hilft bei der Speicherung dieser Vektoren in einer intelligenten Weise, um einen schnellen Abruf von "ungefähr" ähnlichen Nachbarn für ein Referenzabfrageelement zu ermöglichen. Typische ANN-Indizierungsmethoden sind:
- Vektor-Transformationen: Dazu gehört das Hinzufügen zusätzlicher Transformationen zu den Vektoren wie Dimensionsreduktion (z. B. PCA \ t-SNE), Rotation usw.
- Vektor-Kodierung: Dazu gehört die Anwendung von Techniken auf der Grundlage von Datenstrukturen wie Locality Sensitive Hashing (LSH), Quantisierung, Bäume usw., die zu einem schnelleren Auffinden ähnlicher Elemente beitragen können.
- Nicht-erschöpfende Suchmethoden: Diese werden meist verwendet, um eine erschöpfende Suche zu verhindern, und umfassen Methoden wie Nachbarschaftsgraphen, invertierte Indizes usw.
Daraus ergibt sich, dass Sie für die Entwicklung einer Anwendung zur Suche nach Vektorähnlichkeit eine Datenbank benötigen, die Ihnen bei der effizienten Speicherung, Indizierung und Abfrage (Suche) in großem Umfang helfen kann. Hier kommen die Vektordatenbanken ins Spiel!
Was ist eine Vektordatenbank?
Da wir nun wissen, wie Vektoren zur Darstellung unstrukturierter Daten verwendet werden können und wie die Vektorsuche funktioniert, können wir die beiden Konzepte miteinander kombinieren, um eine Vektordatenbank aufzubauen.
Vektordatenbanken sind skalierbare Datenplattformen für die Speicherung, Indizierung und Abfrage von Einbettungsvektoren, die aus unstrukturierten Daten (Bilder, Text usw.) mithilfe von Deep-Learning-Modellen generiert werden.
Die Verarbeitung einer großen Anzahl von Vektoren für die Ähnlichkeitssuche (selbst mit Indizes) kann sehr teuer sein. Trotzdem sollten die besten und fortschrittlichsten Vektordatenbanken die Möglichkeit bieten, Millionen oder Milliarden von Zielvektoren einzufügen, zu indizieren und zu durchsuchen und darüber hinaus einen Indizierungsalgorithmus und eine Ähnlichkeitsmetrik Ihrer Wahl festzulegen.
Vektordatenbanken sollten vor allem die folgenden Hauptanforderungen an ein robustes Datenbankmanagementsystem für den Einsatz im Unternehmen erfüllen:
- Skalierbar: Vektordatenbanken sollten in der Lage sein, Milliarden von Einbettungsvektoren zu indizieren und eine ungefähre Suche nach dem nächsten Nachbarn durchzuführen.
- Zuverlässig: Vektordatenbanken sollten in der Lage sein, interne Fehler ohne Datenverlust und mit minimalen betrieblichen Auswirkungen zu bewältigen, d.h. fehlertolerant sein
- Schnell: Abfrage- und Schreibgeschwindigkeiten sind für Vektordatenbanken wichtig. Für Plattformen wie Snapchat und Instagram, auf denen pro Sekunde Hunderte oder Tausende von neuen Bildern hochgeladen werden können, ist die Geschwindigkeit ein unglaublich wichtiger Faktor.
Vektordatenbanken speichern nicht nur Datenvektoren. Sie sind auch für die Verwendung effizienter Datenstrukturen verantwortlich, um diese Vektoren für einen schnellen Abruf zu indizieren und CRUD-Operationen (Erstellen, Lesen, Aktualisieren und Löschen) zu unterstützen. Vektordatenbanken sollten idealerweise auch die Attributfilterung unterstützen, d. h. die Filterung auf der Grundlage von Metadatenfeldern, die in der Regel skalare Felder sind. Ein einfaches Beispiel wäre die Suche nach ähnlichen Schuhen auf der Grundlage der Bildvektoren für eine bestimmte Marke. Hier wäre die Marke das Attribut, nach dem gefiltert werden würde.
Abbildung 5
Die obige Abbildung zeigt, wie Milvus, die Vektordatenbank, über die wir gleich sprechen werden, Attributfilterung verwendet. Milvus führt das Konzept einer Bitmaske in den Filterungsmechanismus ein, um ähnliche Vektoren mit einer Bitmaske von 1 zu behalten, die bestimmte Attributfilter erfüllen. Mehr Details dazu hier.
Milvus - Die fortschrittlichste Vektordatenbank der Welt
Milvus ist eine Open-Source-Plattform zur Verwaltung von Vektordatenbanken, die speziell für große Vektordatenmengen und die Rationalisierung von Operationen des maschinellen Lernens (MLOps) entwickelt wurde.
Abbildung 6
Zilliz ist die Organisation, die hinter der Entwicklung von Milvus steht, der fortschrittlichsten Vektordatenbank der Welt, um die Entwicklung von Datenstrukturen der nächsten Generation zu beschleunigen. Milvus ist derzeit ein Abschlussprojekt der LF AI & Data Foundation und konzentriert sich auf die Verwaltung massiver unstrukturierter Datensätze für Speicherung und Suche. Die Effizienz und Zuverlässigkeit der Plattform vereinfacht den Prozess der Bereitstellung von KI-Modellen und MLOps in großem Maßstab. Milvus hat ein breites Anwendungsspektrum, das von der Arzneimittelforschung über Computer Vision, Empfehlungssysteme und Chatbots bis hin zu vielen anderen Bereichen reicht.
Hauptmerkmale von Milvus
Milvus ist vollgepackt mit nützlichen Funktionen und Möglichkeiten, wie z. B.:
- Rasante Suchgeschwindigkeiten bei einer Billion Vektordatensätzen: Die durchschnittliche Latenz der Vektorsuche und -abfrage wurde bei einer Billion Vektordatensätzen in Millisekunden gemessen.
- Vereinfachte Verwaltung unstrukturierter Daten: Milvus verfügt über umfangreiche APIs, die für Data-Science-Workflows entwickelt wurden.
- Zuverlässige, stets verfügbare Vektordatenbank: Die integrierten Replikations- und Failover-/Failback-Funktionen von Milvus stellen sicher, dass Daten und Anwendungen jederzeit unterbrechungsfrei funktionieren.
- Hochgradig skalierbar und elastisch: Die Skalierbarkeit auf Komponentenebene ermöglicht eine bedarfsgerechte Auf- und Abwärtsskalierung.
- Hybride Suche: Neben Vektoren unterstützt Milvus Datentypen wie Boolean, String, Ganzzahlen, Gleitkommazahlen und mehr. Milvus kombiniert die skalare Filterung mit einer leistungsstarken vektoriellen Ähnlichkeitssuche (wie im Beispiel der Schuhähnlichkeit oben gezeigt).
- Vereinheitlichte Lambda-Struktur: Milvus kombiniert Stream- und Stapelverarbeitung für die Datenspeicherung, um Aktualität und Effizienz auszugleichen.
- Zeitreise: Milvus unterhält eine Zeitleiste für alle Einfüge- und Löschvorgänge von Daten. Es ermöglicht Benutzern, Zeitstempel in einer Suche anzugeben, um eine Datenansicht zu einem bestimmten Zeitpunkt abzurufen.
- Von der Gemeinschaft unterstützt und von der Industrie anerkannt: Mit über 1.000 Nutzern in Unternehmen, 10.5K+ Sternen auf GitHub und einer aktiven Open-Source-Community sind Sie nicht allein, wenn Sie Milvus verwenden. Als Graduiertenprojekt der LF AI & Data Foundation genießt Milvus institutionelle Unterstützung.
Bestehende Ansätze zur Verwaltung und Suche von Vektordaten
Eine gängige Methode zum Aufbau eines KI-Systems, das auf der Suche nach Vektorähnlichkeit basiert, ist die Kombination von Algorithmen wie Approximate Nearest Neighbor Search (ANNS) mit Open-Source-Bibliotheken wie:
- Facebook AI Similarity Search (FAISS): Dieses Framework ermöglicht eine effiziente Ähnlichkeitssuche und Clustering von dichten Vektoren. Es enthält Algorithmen, die in Vektorsätzen beliebiger Größe suchen, bis hin zu solchen, die möglicherweise nicht in den Arbeitsspeicher passen. Es unterstützt Indizierungsfunktionen wie invertierter Multiindex und Produktquantisierung.
- Spotifys Annoy (Approximate Nearest Neighbors Oh Yeah): Dieses Framework verwendet zufällige Projektionen und baut einen Baum auf, um ANNS in großem Umfang für dichte Vektoren zu ermöglichen
- ScaNN (Scalable Nearest Neighbors) von Google: Dieses Framework führt eine effiziente Vektorähnlichkeitssuche in großem Maßstab durch. Besteht aus Implementierungen, die Suchraumbeschneidung und Quantisierung für Maximum Inner Product Search (MIPS) umfassen.
Obwohl jede dieser Bibliotheken auf ihre eigene Weise nützlich ist, sind diese Algorithmus-Bibliotheks-Kombinationen aufgrund verschiedener Einschränkungen nicht mit einem vollwertigen Vektordatenverwaltungssystem wie Milvus gleichzusetzen. Wir werden nun einige dieser Einschränkungen diskutieren.
Beschränkungen bestehender Ansätze
Bestehende Ansätze zur Verwaltung von Vektordaten, wie sie im vorigen Abschnitt besprochen wurden, weisen die folgenden Einschränkungen auf:
- Flexibilität: Bestehende Systeme speichern in der Regel alle Daten im Hauptspeicher und können daher nicht ohne Weiteres im verteilten Modus auf mehreren Rechnern betrieben werden und eignen sich nicht für die Verarbeitung großer Datenmengen.
- Dynamische Datenverarbeitung: Daten werden oft als statisch angenommen, sobald sie in bestehende Systeme eingespeist werden, was die Verarbeitung dynamischer Daten erschwert und eine Suche in nahezu Echtzeit unmöglich macht.
- Erweiterte Abfrageverarbeitung: Die meisten Tools unterstützen keine fortgeschrittene Abfrageverarbeitung (z. B. Attributfilterung, hybride Suche und Multi-Vektor-Abfragen), was für den Aufbau realer Ähnlichkeitssuchmaschinen, die fortgeschrittene Filterung unterstützen, unerlässlich ist.
- Optimierungen für heterogenes Rechnen: Nur wenige Plattformen bieten Optimierungen für heterogene Systemarchitekturen sowohl auf CPUs als auch auf GPUs (außer FAISS), was zu Effizienzverlusten führt.
Milvus versucht, all diese Einschränkungen zu überwinden, und wir werden dies im nächsten Abschnitt im Detail diskutieren.
Der Milvus-Vorteil - Verstehen von Knowhere
Milvus versucht, die Beschränkungen bestehender Systeme, die auf ineffizientem Vektordatenmanagement und Algorithmen für die Ähnlichkeitssuche basieren, auf folgende Weise anzugehen und erfolgreich zu lösen:
- Es erhöht die Flexibilität, indem es Unterstützung für eine Vielzahl von Anwendungsschnittstellen bietet (einschließlich SDKs in Python, Java, Go, C++ und RESTful APIs)
- Es unterstützt mehrere Vektorindex-Typen (z. B. quantisierungsbasierte Indizes und graphenbasierte Indizes) und eine erweiterte Abfrageverarbeitung
- Milvus verarbeitet dynamische Vektordaten mit einem log-structured merge-tree (LSM-Baum), so dass das Einfügen und Löschen von Daten effizient ist und die Suche in Echtzeit abläuft.
- Milvus bietet auch Optimierungen für heterogene Rechnerarchitekturen auf modernen CPUs und GPUs, so dass Entwickler Systeme für bestimmte Szenarien, Datensätze und Anwendungsumgebungen anpassen können.
Knowhere, die Vektorausführungsmaschine von Milvus, ist eine Betriebsschnittstelle für den Zugriff auf Dienste in den oberen Schichten des Systems und auf Vektorähnlichkeitssuchbibliotheken wie Faiss, Hnswlib und Annoy in den unteren Schichten des Systems. Darüber hinaus ist Knowhere auch für heterogenes Computing zuständig. Knowhere steuert, auf welcher Hardware (z.B. CPU oder GPU) die Indexerstellung und Suchanfragen ausgeführt werden sollen. Daher kommt auch der Name Knowhere - Knowhere weiß, wo die Operationen ausgeführt werden sollen. Weitere Hardwaretypen, einschließlich DPU und TPU, werden in zukünftigen Versionen unterstützt.
Abbildung 7
Die Berechnungen in Milvus umfassen hauptsächlich Vektor- und Skalaroperationen. Knowhere verarbeitet in Milvus nur die Vektoroperationen. Die obige Abbildung veranschaulicht die Knowhere-Architektur in Milvus. Die unterste Schicht ist die Systemhardware. Die Indexbibliotheken von Drittanbietern befinden sich oberhalb der Hardware. Dann interagiert Knowhere mit dem Indexknoten und dem Abfrageknoten auf der obersten Ebene über CGO. Knowhere erweitert nicht nur die Funktionen von Faiss, sondern optimiert auch die Leistung und bietet mehrere Vorteile, darunter Unterstützung für BitsetView, Unterstützung für weitere Ähnlichkeitsmetriken, Unterstützung für den AVX512-Befehlssatz, automatische SIMD-Befehlsauswahl und andere Leistungsoptimierungen. Details können hier gefunden werden.
Milvus-Architektur
Die folgende Abbildung veranschaulicht die Gesamtarchitektur der Milvus-Plattform. Milvus trennt den Datenfluss vom Kontrollfluss und ist in vier Schichten unterteilt, die in Bezug auf Skalierbarkeit und Notfallwiederherstellung unabhängig sind.
Abbildung 8
- Zugriffsschicht: Die Zugriffsschicht besteht aus einer Gruppe zustandsloser Proxys und dient als Frontschicht des Systems und Endpunkt für die Benutzer.
- Koordinator-Dienst: Der Koordinatordienst ist für die Verwaltung der Clustertopologieknoten, den Lastausgleich, die Zeitstempelerzeugung, die Datendeklaration und die Datenverwaltung zuständig.
- Worker-Knoten: Der Worker- oder Ausführungsknoten führt die vom Coordinator-Dienst erteilten Anweisungen und die vom Proxy initiierten DML-Befehle (Data Manipulation Language) aus. Ein Worker-Knoten in Milvus ist vergleichbar mit einem Datenknoten in Hadoop oder einem Region-Server in HBase
- Speicherung: Dies ist der Eckpfeiler von Milvus, der für die Persistenz der Daten verantwortlich ist. Die Speicherschicht besteht aus Metaspeicher, Log-Broker und Objektspeicher.
Mehr Details über die Architektur finden Sie hier!
Durchführen einer visuellen Bildsuche mit Milvus - ein Anwendungsfall
Open-Source-Vektordatenbanken wie Milvus ermöglichen es jedem Unternehmen, sein eigenes visuelles Bildsuchsystem mit einer minimalen Anzahl von Schritten zu erstellen. Entwickler können vortrainierte KI-Modelle verwenden, um ihre eigenen Bilddatensätze in Vektoren zu konvertieren, und dann Milvus nutzen, um die Suche nach ähnlichen Produkten anhand von Bildern zu ermöglichen. Im Folgenden sehen wir uns an, wie ein solches System entworfen und aufgebaut werden kann.
Abbildung 9
In diesem Arbeitsablauf können wir ein Open-Source-Framework wie towhee verwenden, um ein vorab trainiertes Modell wie ResNet-50 zu nutzen und Vektoren aus Bildern zu extrahieren, diese Vektoren mit Leichtigkeit in Milvus zu speichern und zu indizieren und auch eine Zuordnung von Bild-IDs zu den tatsächlichen Bildern in einer MySQL-Datenbank zu speichern. Sobald die Daten indiziert sind, können wir jedes neue Bild mühelos hochladen und mit Milvus eine skalierte Bildsuche durchführen. Die folgende Abbildung zeigt ein Beispiel für eine visuelle Bildsuche.
Abbildung 10
Schauen Sie sich das detaillierte Tutorial an, das dank Milvus auf GitHub veröffentlicht wurde.
Fazit
Wir haben in diesem Artikel eine ganze Reihe von Themen behandelt. Wir begannen mit den Herausforderungen bei der Darstellung unstrukturierter Daten, der Nutzung von Vektoren und der vektoriellen Ähnlichkeitssuche auf Skala mit Milvus, einer Open-Source-Vektordatenbank. Wir haben Details darüber besprochen, wie Milvus strukturiert ist, welche Schlüsselkomponenten es antreiben und wie ein reales Problem, die visuelle Bildsuche mit Milvus, gelöst werden kann. Probieren Sie es aus und beginnen Sie, Ihre eigenen realen Probleme mit Milvus zu lösen!
Hat Ihnen dieser Artikel gefallen? Nehmen Sie Kontakt mit mir auf, um mehr darüber zu diskutieren oder Feedback zu geben!
Über den Autor
Dipanjan (DJ) Sarkar ist ein Data Science Lead, Google Developer Expert - Machine Learning, Autor, Berater und AI Advisor. Verbinden: http://bit.ly/djs_linkedin
- Einführung
- Vektoren und vektorielle Ähnlichkeitssuche
- Was ist eine Vektordatenbank?
- Milvus - Die fortschrittlichste Vektordatenbank der Welt
- Durchführen einer visuellen Bildsuche mit Milvus - ein Anwendungsfall
- Fazit
- Über den Autor
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word