Dieses Kapitel bietet eine Einführung in die schnelle Entwicklung mit Milvus unter Verwendung von Python.
Durch Ausführen des von uns bereitgestellten Beispielcodes erhalten Sie ein erstes Verständnis für die Funktionen von Milvus.
Versionsanforderungen
- Milvus 2.3.0
- Python 3 (3.7.1 oder höher)
- PyMilvus 2.3.x
Installieren Sie das Milvus Python SDK
python3 -m pip install pymilvus==
Beispielcode herunterladen
Verwenden Sie den folgenden Befehl, um hello_milvus.py direkt herunterzuladen, oder verwenden Sie den folgenden Befehl zum Herunterladen.
$ wget https://www.tizi365.com/storage/hello_milvus.py
Erläuterung des Beispielcodes
Der Beispielcode führt die folgenden Schritte aus.
- Importieren des PyMilvus-Pakets:
from pymilvus import (
connections,
utility,
FieldSchema,
CollectionSchema,
DataType,
Collection,
)
- Verbindung zum Server herstellen:
connections.connect("default", host="localhost", port="19530")
- Eine Sammlung erstellen:
fields = [
FieldSchema(name="pk", dtype=DataType.INT64, is_primary=True, auto_id=False),
FieldSchema(name="random", dtype=DataType.DOUBLE),
FieldSchema(name="embeddings", dtype=DataType.FLOAT_VECTOR, dim=8)
]
schema = CollectionSchema(fields, "hello_milvus is the simplest demo example, used to introduce the API")
hello_milvus = Collection("hello_milvus", schema)
- Vektoren in die Sammlung einfügen:
import random
entities = [
[i for i in range(3000)], # Feld pk
[float(random.randrange(-20, -10)) for _ in range(3000)], # Feld random
[[random.random() for _ in range(8)] for _ in range(3000)], # Feld embeddings
]
insert_result = hello_milvus.insert(entities)
hello_milvus.flush()
- Einen Index auf den Entitäten erstellen:
index = {
"index_type": "IVF_FLAT",
"metric_type": "L2",
"params": {"nlist": 128},
}
hello_milvus.create_index("embeddings", index)
- Die Sammlung in den Speicher laden und eine Vektorähnlichkeitssuche durchführen:
hello_milvus.load()
vectors_to_search = entities[-1][-2:]
search_params = {
"metric_type": "L2",
"params": {"nprobe": 10},
}
result = hello_milvus.search(vectors_to_search, "embeddings", search_params, limit=3, output_fields=["random"])
- Vektorabfragen durchführen:
result = hello_milvus.query(expr="random > -14", output_fields=["random", "embeddings"])
- Gemischte Suche durchführen:
result = hello_milvus.search(vectors_to_search, "embeddings", search_params, limit=3, expr="random > -12", output_fields=["random"])
- Entitäten anhand des Primärschlüssels löschen:
expr = f"pk in [{entities[0][0]}, {entities[0][1]}]"
hello_milvus.delete(expr)
- Die Sammlung löschen:
utility.drop_collection("hello_milvus")
Ausführen des Beispielscodes
Führen Sie den folgenden Befehl aus, um den Beispielscode auszuführen.
$ python3 hello_milvus.py
Im Folgenden werden die zurückgegebenen Ergebnisse und die Abfrage-Latenzzeit angezeigt:
=== Verbindung zu Milvus herstellen ===
Existiert die Sammlung namens hello_milvus in Milvus: Falsch
=== Erstellen der Sammlung `hello_milvus` ===
=== Einfügen von Entitäten ===
Anzahl der Entitäten in Milvus: 3000
=== Erstellen des IVF_FLAT Index ===
=== Laden ===
=== Suche basierend auf Vektor-Ähnlichkeit ===
Treffer: (Entfernung: 0,0, ID: 2998), Zufälliges Feld: -11,0
Treffer: (Entfernung: 0,11455299705266953, ID: 1581), Zufälliges Feld: -18,0
Treffer: (Entfernung: 0,1232629269361496, ID: 2647), Zufälliges Feld: -13,0
Treffer: (Entfernung: 0,0, ID: 2999), Zufälliges Feld: -11,0
Treffer: (Entfernung: 0,10560893267393112, ID: 2430), Zufälliges Feld: -18,0
Treffer: (Entfernung: 0,13938161730766296, ID: 377), Zufälliges Feld: -14,0
Such-Latenzzeit = 0,2796 Sekunden
=== Abfrage mit `random > -14` ===
Abfrageergebnis:
-{'pk': 9, 'random': -13,0, 'Einbettungen': [0,298433, 0,931987, 0,949756, 0,598713, 0,290125, 0,094323, 0,064444, 0,306993]}
Such-Latenzzeit = 0,2970 Sekunden
=== Durchführung einer gemischten Suche mit `random > -12` ===
Treffer: (Entfernung: 0,0, ID: 2998), Zufälliges Feld: -11,0
Treffer: (Entfernung: 0,15773043036460876, ID: 472), Zufälliges Feld: -11,0
Treffer: (Entfernung: 0,3273330628871918, ID: 2146), Zufälliges Feld: -11,0
Treffer: (Entfernung: 0,0, ID: 2999), Zufälliges Feld: -11,0
Treffer: (Entfernung: 0,15844076871871948, ID: 2218), Zufälliges Feld: -11,0
Treffer: (Entfernung: 0,1622171700000763, ID: 1403), Zufälliges Feld: -11,0
Such-Latenzzeit = 0,3028 Sekunden
=== Löschen mit Ausdruck `pk in [0, 1]` ===
Abfrage vor der Löschung basierend auf dem Ausdruck `pk in [0, 1]` -> Ergebnis:
-{'pk': 0, 'random': -18,0, 'Einbettungen': [0,142279, 0,414248, 0,378628, 0,971863, 0,535941, 0,107011, 0,207052, 0,98182]}
-{'pk': 1, 'random': -15,0, 'Einbettungen': [0,57512, 0,358512, 0,439131, 0,862369, 0,083284, 0,294493, 0,004961, 0,180082]}
Abfrage nach der Löschung basierend auf dem Ausdruck `pk in [0, 1]` -> Ergebnis: []
=== Löschen der Sammlung `hello_milvus` ===