Vektorsuchlösungen mit dem Milvus 2.0 Bootcamp schnell testen und bereitstellen
Mit der Veröffentlichung von Milvus 2.0 hat das Team das Milvus bootcamp überarbeitet. Das neue und verbesserte Bootcamp bietet aktualisierte Anleitungen und leichter verständliche Codebeispiele für eine Vielzahl von Anwendungsfällen und Deployments. Zusätzlich wurde diese neue Version für Milvus 2.0 aktualisiert, eine neu konzipierte Version der weltweit fortschrittlichsten Vektordatenbank.
Testen Sie Ihr System mit Benchmark-Datensätzen von 1M und 100M unter Last
Das benchmark directory enthält Vektor-Benchmark-Tests mit 1 Million und 100 Millionen, die zeigen, wie Ihr System auf unterschiedlich große Datensätze reagiert.
Erkunden und erstellen Sie beliebte Lösungen für die Vektorähnlichkeitssuche
Das solution directory umfasst die beliebtesten Anwendungsfälle für die Vektorähnlichkeitssuche. Jeder Anwendungsfall enthält eine Notebook-Lösung und eine per Docker bereitstellbare Lösung. Zu den Anwendungsfällen gehören:
- Bildähnlichkeitssuche
- Videoähnlichkeitssuche
- Audioähnlichkeitssuche
- Empfehlungssystem
- Molekulare Suche
- Frage-Antwort-System
Stellen Sie schnell eine vollständig erstellte Anwendung auf jedem System bereit
Die Quick-Deploy-Lösungen sind dockerisierte Lösungen, mit denen Benutzer vollständig erstellte Anwendungen auf jedem System bereitstellen können. Diese Lösungen sind ideal für kurze Demos, erfordern jedoch im Vergleich zu Notebooks zusätzlichen Aufwand zur Anpassung und zum Verständnis.
Verwenden Sie szenariospezifische Notebooks, um vorkonfigurierte Anwendungen einfach bereitzustellen
Die Notebooks enthalten ein einfaches Beispiel für die Bereitstellung von Milvus zur Lösung des Problems in einem bestimmten Anwendungsfall. Jedes der Beispiele kann von Anfang bis Ende ausgeführt werden, ohne dass Dateien oder Konfigurationen verwaltet werden müssen. Jedes Notebook ist außerdem leicht nachvollziehbar und anpassbar, wodurch sie ideale Basisdateien für andere Projekte sind.
Notebook-Beispiel für Bildähnlichkeitssuche
Die Bildähnlichkeitssuche ist eine der zentralen Ideen hinter vielen verschiedenen Technologien, einschließlich autonomer Autos, die Objekte erkennen. Dieses Beispiel erklärt, wie man mit Milvus einfach Computer-Vision-Programme erstellt.
Dieses Beispiel behandelt drei Dinge:
- Milvus-Server
- Redis-Server (für Metadatenspeicherung)
- Vortrainiertes Resnet-18-Modell.
Schritt 1: Erforderliche Pakete herunterladen
Beginnen Sie damit, alle erforderlichen Pakete für dieses Projekt herunterzuladen. Dieses Notebook enthält eine Tabelle, in der die zu verwendenden Pakete aufgeführt sind.
pip install -r requirements.txt
Schritt 2: Serverstart
Nachdem die Pakete installiert sind, starten Sie die Server und stellen Sie sicher, dass beide ordnungsgemäß laufen. Befolgen Sie unbedingt die richtigen Anweisungen zum Starten der Milvus- und Redis-Server.
Schritt 3: Projektdaten herunterladen
Standardmäßig ruft dieses Notebook einen Ausschnitt der VOCImage-Daten zur Verwendung als Beispiel ab, aber jedes Verzeichnis mit Bildern sollte funktionieren, solange es der Dateistruktur folgt, die oben im Notebook zu sehen ist.
! gdown "https://drive.google.com/u/1/uc?id=1jdudBiUu41kL-U5lhH3ari_WBRXyedWo&export=download"
! tar -xf 'VOCdevkit.zip'
! rm 'VOCdevkit.zip'
Schritt 4: Mit den Servern verbinden
In diesem Beispiel laufen die Server auf den Standardports auf dem localhost.
connections.connect(host="127.0.0.1", port=19537)
red = redis.Redis(host = '127.0.0.1', port=6379, db=0)
Schritt 5: Eine Collection erstellen
Nachdem die Server gestartet wurden, erstellen Sie eine Collection in Milvus, um alle Vektoren zu speichern. In diesem Beispiel ist die Dimensionsgröße auf 512 festgelegt, die Größe der resnet-18-Ausgabe, und die Ähnlichkeitsmetrik ist auf die euklidische Distanz (L2) festgelegt. Milvus unterstützt eine Vielzahl verschiedener Ähnlichkeitsmetriken.
collection_name = "image_similarity_search"
dim = 512
default_fields = [
schema.FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True),
schema.FieldSchema(name="vector", dtype=DataType.FLOAT_VECTOR, dim=dim)
]
default_schema = schema.CollectionSchema(fields=default_fields, description="Image test collection")
collection = Collection(name=collection_name, schema=default_schema)
Schritt 6: Einen Index für die Collection erstellen
Sobald die Collection erstellt wurde, erstellen Sie einen Index dafür. In diesem Fall wird der IVF_SQ8-Index verwendet. Dieser Index erfordert den Parameter 'nlist', der Milvus angibt, wie viele Cluster innerhalb jeder Datendatei (Segment) erstellt werden sollen. Unterschiedliche Indizes erfordern unterschiedliche Parameter.
default_index = {"index_type": "IVF_SQ8", "params": {"nlist": 2048}, "metric_type": "L2"}
collection.create_index(field_name="vector", index_params=default_index)
collection.load()
Schritt 7: Modell und Data Loader einrichten
Nachdem der IVF_SQ8-Index erstellt wurde, richten Sie das neuronale Netzwerk und den Data Loader ein. Das in diesem Beispiel verwendete vortrainierte pytorch resnet-18 wird ohne seine letzte Schicht verwendet, die Vektoren für die Klassifizierung komprimiert und wertvolle Informationen verlieren kann.
model = torch.hub.load('pytorch/vision:v0.9.0', 'resnet18', pretrained=True)
encoder = torch.nn.Sequential(*(list(model.children())[:-1]))
Der Datensatz und der Data Loader müssen so geändert werden, dass sie die Bilder vorverarbeiten und in Batches zusammenfassen können, während sie auch die Dateipfade der Bilder bereitstellen. Dies kann mit einem leicht modifizierten torchvision-Dataloader erfolgen. Für die Vorverarbeitung müssen die Bilder zugeschnitten und normalisiert werden, da das resnet-18-Modell auf eine bestimmte Größe und einen bestimmten Wertebereich trainiert wurde.
dataset = ImageFolderWithPaths(data_dir, transform=transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])]))
dataloader = torch.utils.data.DataLoader(dataset, num_workers=0, batch_si
Schritt 8: Vektoren in die Collection einfügen
Nachdem die Collection eingerichtet wurde, können die Bilder verarbeitet und in die erstellte Collection geladen werden. Zunächst werden die Bilder vom Dataloader abgerufen und durch das resnet-18-Modell geleitet. Die daraus resultierenden Vektor-Embeddings werden dann in Milvus eingefügt, das für jeden Vektor eine eindeutige ID zurückgibt. Die Vektor-IDs und Bilddateipfade werden dann als Schlüssel-Wert-Paare in den Redis-Server eingefügt.
steps = len(dataloader)
step = 0
for inputs, labels, paths in dataloader:
with torch.no_grad():
output = encoder(inputs).squeeze()
output = output.numpy()
mr = collection.insert([output.tolist()])
ids = mr.primary_keys
for x in range(len(ids)):
red.set(str(ids[x]), paths[x])
if step%5 == 0:
print("Insert Step: " + str(step) + "/" + str(steps))
step += 1
Schritt 9: Eine Vektor-Ähnlichkeitssuche durchführen
Sobald alle Daten in Milvus und Redis eingefügt wurden, kann die eigentliche Vektor-Ähnlichkeitssuche durchgeführt werden. Für dieses Beispiel werden drei zufällig ausgewählte Bilder aus dem Redis-Server für eine Vektor-Ähnlichkeitssuche abgerufen.
random_ids = [int(red.randomkey()) for x in range(3)]
search_images = [x.decode("utf-8") for x in red.mget(random_ids)]
Diese Bilder durchlaufen zunächst dieselbe Vorverarbeitung wie in Schritt 7 und werden dann durch das resnet-18-Modell geleitet.
transform_ops = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])])
embeddings = [transform_ops(Image.open(x)) for x in search_images]
embeddings = torch.stack(embeddings, dim=0)
with torch.no_grad():
embeddings = encoder(embeddings).squeeze().numpy()
Anschließend werden die resultierenden Vektoreinbettungen verwendet, um eine Suche durchzuführen. Legen Sie zuerst die Suchparameter fest, einschließlich des Namens der zu durchsuchenden Sammlung, nprobe (die Anzahl der zu durchsuchenden Cluster) und top_k (die Anzahl der zurückgegebenen Vektoren). In diesem Beispiel sollte die Suche sehr schnell sein.
search_params = {"metric_type": "L2", "params": {"nprobe": 32}}
start = time.time()
results = collection.search(embeddings, "vector", param=search_params, limit=3, expr=None)
end = time.time() - start
Schritt 10: Ergebnisse der Bildsuche
Die von den Abfragen zurückgegebenen Vektor-IDs werden verwendet, um die entsprechenden Bilder zu finden. Anschließend wird Matplotlib verwendet, um die Ergebnisse der Bildsuche anzuzeigen.
Abbildung 1.
Abbildung 2.
Abbildung 3.
Erfahren Sie, wie Sie Milvus in verschiedenen Umgebungen bereitstellen
Der Bereitstellungsabschnitt des neuen Bootcamps enthält alle Informationen zur Verwendung von Milvus in verschiedenen Umgebungen und Setups. Er umfasst die Bereitstellung von Mishards, die Verwendung von Kubernetes mit Milvus, Lastverteilung und mehr. Jede Umgebung verfügt über eine detaillierte Schritt-für-Schritt-Anleitung, die erklärt, wie Milvus darin zum Laufen gebracht wird.
Bleiben Sie mit uns in Kontakt
- Lesen Sie unseren Blog.
- Interagieren Sie mit unserer Open-Source-Community auf Slack.
- Nutzen Sie Milvus, die weltweit beliebteste Vektordatenbank, auf GitHub oder tragen Sie dazu bei.
Weiterlesen

We spent 8 years making vector databases faster. Then we stopped.
Rarely queried embeddings still need to stay searchable. See how Vector Lakebase enables on-demand vector search without always-on compute costs.

Introducing Customer-Managed Encryption Keys (CMEK) on Zilliz Cloud
We're announcing the general availability of Customer-Managed Encryption Keys (CMEK) on Zilliz Cloud.

Why Deepseek is Waking up AI Giants Like OpenAI And Why You Should Care
Discover how DeepSeek R1's open-source AI model with superior reasoning capabilities and lower costs is disrupting the AI landscape and challenging tech giants like OpenAI.



