Zusammenarbeit mit Milvus
Erstellen einer Sammlung in Milvus
In Milvus werden Sammlungen verwendet, um Entitäten zu speichern und zu verwalten. Eine Sammlung in Milvus entspricht einer Tabelle in einem relationalen Datenbankmanagementsystem (RDBMS).
Siehe "Eine Sammlung erstellen ", um eine Sammlung in Milvus zu erstellen.
Daten in Milvus eingeben
Milvus unterstützt Standardwerte für Skalarfelder mit Ausnahme eines Primärschlüsselfeldes. Sie können einige Felder während Dateneinfügungen leer lassen.
Weitere Informationen finden Sie unter Einträge einfügen.
Es ist aus folgenden Gründen empfehlenswert, die Daten stapelweise einzugeben:
-
Die Anzahl der Vektoren, die in einem einzelnen GRPC-API-Aufruf aufgenommen werden können, ist durch die maximale Nachrichtengröße begrenzt, die zulässig ist durchKafka. In IBM Cloudist die maximale Nachrichtenlänge auf 1 MB begrenzt.
-
Die maximale Anzahl Zeilen, die gleichzeitig eingefügt werden können, hängt von der Gesamtgröße der Daten ab, die Sie aufnehmen möchten. Die genaue Zahl nimmt mit der Zunahme der Dimensionen des Vektors und dem Vorhandensein von Nicht-Vektorfeldern in der Zeile ab.
Verwenden Sie die API zum Einfügen von Massendaten zum Einfügen von Datasets mit mehr als 500.000 Vektoren. Die API zum Einfügen von Massendaten bietet eine bessere Leistung als die API zum Einfügen von Massendaten, wenn größere Datasets aufgenommen werden. Die Verwendung von.npy-Dateien wird empfohlen, um große Datensätze zu importieren. Wenn Sie die API zum Einfügen im Stapelbetrieb verwenden, löschen Sie die Objektgruppe nach jeweils 500.000 Zeilen manuell. Weitere Informationen finden Sie unter API für Masseneinfügungen.
Erstellen von Indizes in Milvus
Erstellen Sie einen Index, bevor Sie die Annähernde-Nächste-Nachbarn-Suche (ANN) in Milvus durchführen.
IBM unterstützt offiziell die folgenden Indizes:
Indizes, die nicht in dieser Liste aufgeführt sind, funktionieren möglicherweise, werden aber nicht von IBMvalidiert.
Wenn die Anzahl der Zeilen in einem Segment weniger als 1024 beträgt, erstellt Milvus keine Indizes für dieses Segment. Stattdessen wird standardmäßig brute-force
für Suchanfragen verwendet. Sobald die Zeilenzahl in dem Segment
diesen Schwellenwert überschreitet, beginnt Milvus automatisch mit der Erstellung der Indizes.
- HNSW
- SKANN
- FLAT
- IVF-FLAT
- IVF_PQ
Sie können den Index erstellen, indem Sie den Vektorfeldnamen und Indexparameter angeben. Weitere Informationen finden Sie unter Index-Vektorfelder.
Durchführung einer Vektorähnlichkeitssuche in Milvus
In Milvus können Sie eine Vektorähnlichkeitssuche durchführen, nachdem Sie die Parameter für Ihr Suchszenario vorbereitet haben.
- Weitere Informationen zur Einzelvektor- und Multivektorsuche finden Sie unter Vektorähnlichkeitssuche.
- Weitere Informationen zur hybriden (Multi-Vektor-)Suche finden Sie unter Hybridsuche.
- GroupBy Weitere Informationen zur Hybrid-Suche mit GroupBy finden Sie im Abschnitt "Verbesserungen" der Hybrid-Suche GroupBy.
Durchführung einer Abfrage basierend auf Skalarfilterung in Milvus
In Milvus können Sie eine Abfrage basierend auf Skalarfilterung durchführen. Weitere Informationen finden Sie unter Get & Skalarabfrage.
Sie können die folgenden Suchtypen durchführen:
- Bereichssuche: Zum Suchen von Vektoren innerhalb eines bestimmten Entfernungsbereichs vom Abfragevektor. Weitere Informationen finden Sie unter Bereichssuche.
- Gruppierungssuche: Um Ergebnisse basierend auf einem bestimmten Feld zu erhalten und so für Vielfalt in den Ergebnissen zu sorgen. Weitere Informationen finden Sie unter Gruppierungssuche.
Wenn Sie eine Suchabfrage mit skalarer Filterung für ein großes Dataset ausführen, ist es wichtig, den Begrenzungsparameter anzupassen, um Abfrageergebnisse effektiv zu verwalten. Verwenden Sie den folgenden Ansatz zum Einstellen der limit
Parameter:
hello_milvus.query(expr=query_condition, output_fields=["random", "embeddings"], limit=100,offset=0)
Die Summe der Werte von limit
Und offset
Parameter müssen im Bereich von[ 1, 16384] .
Entitäten aus Milvus mithilfe des Primärschlüssels löschen
In Milvus können Sie die Entitäten mithilfe des Primärschlüssels löschen. Bereiten Sie den Booleschen Ausdruck vor, der die zu löschenden Entitäten filtert.
Weitere Informationen finden Sie unter Entitäten löschen.
Abwurf einer Sammlung von Milvus
Eine Sammlung von Milvus fallen zu lassen, ist unumkehrbar. Sie können die gelöschten Daten nicht wiederherstellen.
Fügen Sie Ihrem .ipynb
oder Python Skript folgendes hinzu, um eine Sammlung abzulegen...
from pymilvus import utility
utility.drop_collection(<collection name>)
Bewährte Verfahren
Im Folgenden finden Sie einige bewährte Vorgehensweisen:
- Wenn es lange Varchar-Felder (mehr als 256 Zeichen) gibt, sollten Nicht-Vektorfelder außerhalb von Milvus bleiben. Sie können sie in einem COS-Bucket oder Speicher-Bucket aufbewahren und eine Referenzsuche durchführen.
- Stellen Sie sicher, dass diePyMilvus Version ist2.4.0 oder später. Milvus 2.4.0 oder spätere Versionen unterstützen die spärliche Vektorsuche, die Hybridsuche (
sparse_dense
) und Multi-Vektor-Suche. - Beim Laden von Sammlungen mittels Batch-Einfügen folgen Sie dem Muster: Im Stapel einfügen, Speicher freigeben und dann den Vorgang wiederholen.
- Führen Sie keine parallele Aufnahme aller Sammlungen gleichzeitig durch. Nehmen Sie die Nahrung sequenziell auf und spülen Sie zwischen den Aufnahmen.
- Die maximale Größe jeder Kollektion sollte der maximalen Anzahl an Vektoren entsprechen, die in einer T-Shirt-Größe unterstützt werden.
- Wenn Sie mehrere Sammlungen oder Partitionen geladen haben, stellen Sie sicher, dass die Summe der Vektoren in allen geladenen Entitäten die T-Shirt-Größe nicht überschreitet. Sie können immer noch mehr Vektoren speichern als die T-Shirt-Größenbeschränkung, solange die Anzahl der geladenen Vektoren innerhalb der Beschränkung liegt.
Während Milvus kann es zu einer leichten Verzögerung von etwa 20 Sekunden kommen. Laufende Suchen und Upsert-Abfragen können fehlschlagen. Sie können die Abfragen sofort wiederholen.
Musterbücher für Milvus
Mit diesen Beispielnotizbüchern können Sie die Funktionen von Milvus mit Schritt-für-Schritt-Anleitungen ausprobieren. Um auf die Beispielnotizbücher zuzugreifen, siehe Beispielnotizbücher Milvus.