Milvus ist eine leistungsstarke Open-Source-Vektordatenbank, die sich durch Ähnlichkeitssuche und KI-gestützte Analysen auszeichnet. In diesem Blogbeitrag führen wir dich durch die ersten Schritte der Nutzung von Milvus mit Python und zeigen dir, wie du eine Collection erstellst, Daten einfügst und eine einfache Suche durchführst.
Einrichtung der Umgebung
Zuerst richten wir die Umgebung ein und importieren die notwendigen Bibliotheken:
from pymilvus import MilvusClient
from pymilvus import model
import os
from pathlib import Path
cache_dir = Path("./model_cache")
cache_dir.mkdir(exist_ok=True)
os.environ['HF_HOME'] = str(cache_dir)
Verbindung mit Milvus
Als Nächstes erstellen wir eine Instanz des MilvusClient
:
client = MilvusClient("milvus_demo.db")
Erstellen einer Collection
Jetzt erstellen wir eine Collection, um unsere Vektordaten zu speichern. Falls die Collection bereits existiert, wird sie zunächst gelöscht:
if client.has_collection(collection_name="demo_collection"):
client.drop_collection(collection_name="demo_collection")
client.create_collection(collection_name="demo_collection", dimension=768)
Vorbereitung und Einfügen von Daten
Wir verwenden eine Standard-Embedding-Funktion, um unsere Textdaten in Vektoren umzuwandeln:
embedding_fn = model.DefaultEmbeddingFunction()
docs = [
"Artificial intelligence was founded as an academic discipline in 1956.",
"Alan Turing was the first person to conduct substantial research in AI.",
"Born in Maida Vale, London, Turing was raised in southern England.",
]
vectors = embedding_fn.encode_documents(docs)
print("Dim:", embedding_fn.dim, vectors[0].shape)
Nun bereiten wir die Daten für das Einfügen vor:
data = [
{"id": i, "vector": vectors[i], "text": docs[i], "subject": "history"}
for i in range(len(vectors))
]
print("Data has", len(data), "entities, each with fields: ", data[0].keys())
print("Vector dim:", len(data[0]["vector"]))
res = client.insert(collection_name="demo_collection", data=data)
Durchführung einer Suche
Zum Schluss führen wir eine einfache Suchoperation durch:
query_vectors = embedding_fn.encode_queries(["Who is Alan Turing?"])
res = client.search(
collection_name="demo_collection", # target collection
data=query_vectors, # query vectors
limit=2, # number of returned entities
output_fields=["text", "subject"], # specifies fields to be returned
)
print(res)
Diese Suche gibt die zwei ähnlichsten Einträge zu unserer Abfrage zurück, einschließlich ihrer Text- und Themenfelder.
Fazit
In diesem Blogbeitrag haben wir die Grundlagen der Nutzung von Milvus mit Python behandelt. Wir haben gelernt, wie man einen Client einrichtet, eine Collection erstellt, Vektordaten einfügt und eine einfache Suche durchführt. Dieses Wissen bildet die Grundlage für komplexere Anwendungen, die die leistungsstarke Vektor-Ähnlichkeitssuche von Milvus nutzen.
Vergiss nicht, die Dokumentation von Milvus zu erkunden, um fortgeschrittene Funktionen und Optimierungen kennenzulernen, während du deine Reise mit dieser vielseitigen Vektordatenbank fortsetzt.