Was ist die Milvus-Vektordatenbank?
Milvus wurde 2019 mit dem Hauptziel entwickelt, große Mengen von Einbettungsvektoren zu speichern, zu indizieren und zu verwalten, die von tiefen neuronalen Netzwerken und anderen maschinellen Lernmodellen generiert werden.
Als Datenbank, die speziell für die Verarbeitung von Vektorabfragen konzipiert ist, kann Milvus Vektoren im Bereich von zig Milliarden indizieren. Im Gegensatz zu vorhandenen relationalen Datenbanken, die hauptsächlich mit vordefinierten Mustern und strukturierten Daten umgehen, wurde Milvus von Grund auf entwickelt, um mit Einbettungsvektoren aus unstrukturierten Daten umzugehen.
Mit der kontinuierlichen Expansion des Internets sind unstrukturierte Daten, darunter E-Mails, Papierdokumente, IoT-Sensordaten, Facebook-Fotos, Proteinstrukturen usw., immer häufiger geworden. Um Computern zu ermöglichen, unstrukturierte Daten zu verstehen und zu verarbeiten, müssen diese Daten mithilfe von Einbettungstechniken in Vektoren umgewandelt werden. Milvus speichert und indiziert diese Vektoren. Milvus kann die Ähnlichkeitsdistanz zwischen zwei Vektoren analysieren, indem ihre Ähnlichkeitsdistanz berechnet wird und deren Korrelation erschlossen wird. Wenn zwei Einbettungsvektoren sehr ähnlich sind, deutet dies darauf hin, dass auch die ursprünglichen Datenquellen ähnlich sind.
Milvus-Workflow:
Schlüsselkonzepte
Wenn Sie nicht vertraut sind mit der Welt der Vektordatenbanken und der Ähnlichkeitssuche, könnten Ihnen die folgenden Schlüsselkonzepte helfen.
Erfahren Sie mehr über Milvus-Begriffe.
Unstrukturierte Daten
Unstrukturierte Daten, einschließlich Bilder, Videos, Audio und natürlicher Sprache, beziehen sich auf Informationen, die kein vordefiniertes Modell oder keine organisatorische Struktur aufweisen. Dieser Datentyp macht etwa 80 % der globalen Daten aus und kann mithilfe verschiedener künstlicher Intelligenz- und maschineller Lernmodelle in Vektoren umgewandelt werden.
Einbettungsvektoren
Einbettungsvektoren sind die Merkmalsabstraktionen unstrukturierter Daten (wie E-Mails, IoT-Sensordaten, Instagram-Fotos, Proteinstrukturen usw.). Aus mathematischer Sicht bestehen Einbettungsvektoren aus Gleitkommazahlen oder binären Arrays. Moderne Einbettungstechniken werden verwendet, um unstrukturierte Daten in Einbettungsvektoren umzuwandeln.
Vektorsimilarity-Suche
Die Vektorsimilarity-Suche beinhaltet den Vergleich eines Vektors mit einer Datenbank, um den dem Abfragevektor am ähnlichsten Vektor zu finden. Durch die Verwendung von Algorithmen zur approximativen nächsten Nachbarsuche (ANN) kann der Suchprozess beschleunigt werden. Wenn zwei Einbettungsvektoren sehr ähnlich sind, deutet dies darauf hin, dass auch die ursprüngliche Datenquelle ähnlich ist.
Warum Milvus wählen?
- Hohe Leistung für die Vektorsuche in großen Datenmengen.
- Unterstützung durch eine entwicklerzentrierte Community mit Unterstützung für Mehrsprachigkeit und Toolketten.
- Erreicht Skalierbarkeit und hohe Zuverlässigkeit in der Cloud und bleibt auch im Falle von Ausfällen stabil.
- Ermöglicht eine gemischte Suche durch Kombination von skalaren Filtern mit der Vektorsimilarity-Suche.
Welche Indizes und metrischen Standards werden unterstützt?
Indizes sind die organisatorischen Einheiten von Daten. Bevor Sie die eingefügten Entitäten suchen oder abfragen, müssen Sie den Indextyp und den Ähnlichkeitsmetrikstandard deklarieren. Wenn Sie den Indextyp nicht angeben, verwendet Milvus standardmäßig die brute-force-Suche.
Indextypen
Milvus unterstützt die meisten Vektorindextypen für die approximative nächste Nachbarsuche (ANNS), einschließlich:
- FLAT: Geeignet für Szenarien, die nach vollständig genauen und präzisen Suchergebnissen in kleinen (Millionen) Datensätzen suchen.
- IVF_FLAT: Basierend auf Quantisierungsindex, geeignet für Szenarien, die ein ideales Gleichgewicht zwischen Genauigkeit und Abfragegeschwindigkeit suchen. Es gibt auch eine GPU-Version namens GPU_IVF_FLAT.
- IVF_SQ8: Basierend auf Quantisierungsindex, geeignet für Szenarien, die aufgrund sehr begrenzter Ressourcen eine signifikante Reduzierung des Festplatten-, CPU- und GPU-Speicherverbrauchs anstreben.
- IVF_PQ: Basierend auf Quantisierungsindex, geeignet für Szenarien, die eine hohe Abfragegeschwindigkeit auch zu Lasten der Genauigkeit anstreben. Es gibt auch eine GPU-Version namens GPU_IVF_PQ.
- HNSW: Basierend auf Graphindex, geeignet für Szenarien mit sehr hohen Anforderungen an die Sucheffizienz.
Für genauere Informationen, siehe Vektorindex.
Ähnlichkeitsmetriken
In Milvus werden Ähnlichkeitsmetriken zur Messung der Ähnlichkeit zwischen Vektoren verwendet. Die Auswahl einer guten Distanzmetrik kann die Klassifizierungs- und Clusteringleistung signifikant verbessern. Abhängig von der Form der Eingabedaten werden spezifische Ähnlichkeitsmetriken ausgewählt, um die beste Leistung zu erzielen.
Übliche Metriken für Gleitkommavektoren sind:
- Euklidischer Abstand (L2): Diese Metrik wird häufig im Bereich der Computer Vision verwendet.
- Inneres Produkt (IP): Diese Metrik wird häufig im Bereich der natürlichen Sprachverarbeitung verwendet.
Übliche Metriken für binäre Einbettungen sind:
- Hamming-Abstand: Diese Metrik wird häufig im Bereich der natürlichen Sprachverarbeitung verwendet.
- Jaccard-Ähnlichkeit: Diese Metrik wird häufig für die molekulare Ähnlichkeitssuche verwendet.
Beispielanwendungen
Milvus erleichtert die Integration der Ähnlichkeitssuche in Ihre Anwendungen. Zu den Beispielanwendungen von Milvus gehören:
- Ähnlichkeitssuche für Bilder: Macht Bilder durchsuchbar und liefert fast sofort die ähnlichsten Bilder aus einer großen Datenbank zurück.
- Ähnlichkeitssuche für Videos: Durch die Umwandlung von Schlüsselbildern in Vektoren und die Eingabe der Ergebnisse in Milvus kann es Milliarden von Videos in Echtzeit durchsuchen und empfehlen.
- Ähnlichkeitssuche für Audio: Schnelle Abfrage großer Mengen von Audiodaten, wie Sprache, Musik, Soundeffekte und ähnliche Töne.
- Empfehlungssysteme: Empfehlen von Informationen oder Produkten basierend auf dem Nutzerverhalten und den Bedürfnissen.
- Frage-Antwort-Systeme: Interaktive digitale Frage-Antwort-Chatbots, die automatisch Benutzerfragen beantworten können.
- Klassifizierung von DNA-Sequenzen: Klassifiziert Gene in Millisekunden durch den Vergleich ähnlicher DNA-Sequenzen.
- Textsuchmaschinen: Hilft Benutzern, die gesuchten Informationen durch den Vergleich von Schlüsselwörtern mit einer Textdatenbank zu finden.
Designkonzept von Milvus
Als Cloud-basierte Vektordatenbank trennt Milvus in seinem Design die Speicherung von der Berechnung. Um die Elastizität und Flexibilität zu verbessern, sind alle Komponenten in Milvus zustandslos.
Das System ist in vier Ebenen unterteilt:
- Zugriffsebene: Besteht aus einer Gruppe zustandsloser Proxies, die als die Frontend-Ebene des Systems und die Endpunkte für Benutzer dienen.
- Koordinierungsdienst: Dieser Dienst weist Aufgaben den Worker-Knoten zu und fungiert als zentraler Dreh- und Angelpunkt des Systems.
- Worker-Knoten: Diese Knoten fungieren als die Arme und Beine des Systems, befolgen Anweisungen des Koordinierungsdienstes und führen DML/DDL-Befehle aus, die von Benutzern auf eine simple Weise ausgelöst werden.
- Speicher: Dies ist das Rückgrat des Systems, das für die Datenpersistenz verantwortlich ist. Es umfasst Metadatenspeicher, Log-Agenten und Objektspeicher.
.
Entwicklertools
Milvus bietet eine Vielzahl von APIs und Tools für Entwicklung und Betrieb.
API-Zugriff
Milvus bietet Client-Bibliotheken, die um die Milvus-API herum verpackt sind und verwendet werden können, um programmgesteuert Daten von Anwendungscode einzufügen, zu löschen und abzufragen:
- PyMilvus
- Node.js SDK
- Go SDK
- Java SDK
Milvus-Ökosystem-Tools
Das Milvus-Ökosystem bietet einige nützliche Tools, darunter:
- Milvus CLI
- Attu: Ein grafisches Managementsystem für Milvus.
- MilvusDM (Milvus-Datenmigration): Ein Open-Source-Tool speziell für das Importieren und Exportieren von Daten mit Milvus.
- Milvus-Kapazitätsplanungstool: Hilft bei der Schätzung der erforderlichen Rohdateigröße, Speicherplatz und stabilen Festplattengröße durch verschiedene Indextypen.
Milvus-Beschränkungen
Milvus ist bestrebt, die beste Vektordatenbank für die Steuerung von KI-Anwendungen und Vektorähnlichkeitssuchen bereitzustellen. Das Team arbeitet jedoch kontinuierlich daran, mehr Funktionen und optimale Tools einzuführen, um die Benutzererfahrung zu verbessern. Auf dieser Seite werden einige bekannte Beschränkungen aufgelistet, die Benutzer bei der Verwendung von Milvus möglicherweise feststellen.
Länge von Ressourcennamen
Ressource | Limit |
---|---|
Sammlung | 255 Zeichen |
Feld | 255 Zeichen |
Index | 255 Zeichen |
Partition | 255 Zeichen |
Namensregeln
Ressourcennamen können aus Zahlen, Buchstaben und Unterstrichen (_) bestehen. Die Namen müssen mit einem Buchstaben oder Unterstrich beginnen.
Anzahl der Ressourcen
Ressource | Limit |
---|---|
Sammlung | 65.536 |
Verbindungen/Agenten | 65.536 |
Anzahl der Ressourcen in Sammlungen
Ressource | Limit |
---|---|
Partition | 4.096 |
Shard | 64 |
Feld | 64 |
Index | 1 |
Entität | Unbegrenzt |
Zeichenlänge
Datentyp | Limit |
---|---|
VARCHAR | 65.535 |
Vektordimension
Attribut | Limit |
---|---|
Dimension | 32.768 |
Eingabe und Ausgabe für jede RPC
Operation | Limit |
---|---|
Einfügeoperation | 512 MB |
Suchoperation | 512 MB |
Abfrageoperation | 512 MB |
Ladebeschränkung
In der aktuellen Version muss die zu ladende Datenmenge innerhalb von 90% der Gesamtarbeitsspeicherressourcen aller Abfrageknoten liegen, um Arbeitsspeicherressourcen für die Ausführungs-Engine zu reservieren.
Suchbegrenzung
Vektor | Begrenzung |
---|---|
topk (Anzahl der zurückzugebenden ähnlichsten Ergebnisse) |
16,384 |
nq (Anzahl der Suchanfragen) |
16,384 |