Milvus Server Docker-Installation und Paketierungsabhängigkeiten
Milvus ist eine beliebte Open-Source-Vektordatenbank mit erheblicher Verbreitung in Generative-AI- und RAG-Anwendungsfällen (Retrieval Augmented Generation). Als Organisation ziehen Sie möglicherweise in Betracht, Milvus in Ihren Technologie-Stack zu integrieren, und es ist wichtig, die wichtigsten Abhängigkeiten und Anforderungen zu verstehen.
Milvus bietet flexible Bereitstellungsoptionen für seinen Server:
Lokal: Führen Sie Milvus als einzelnen Docker-Container auf Ihrem Rechner aus. Für Anforderungen im großen Maßstab stellen Sie Milvus über einen Kubernetes-Cluster hinweg bereit.
Cloud (Zilliz): Zilliz bietet Milvus als verwalteten Cloud-Dienst auf AWS, GCP oder Azure an und stellt zusätzliche erweiterte Funktionen sowie eine unkomplizierte Erfahrung bereit.
Der Rest dieses Blogs befasst sich mit der lokalen Installation von Milvus. Bitte beachten Sie, dass dies für Milvus Version 2.4 und höher gilt.
Überblick über Abhängigkeiten
Ausgehend von einer sauberen Installation umfassen die wichtigsten Abhängigkeiten für den eigenständigen Milvus-Server:
FAISS: Eine Bibliothek für effiziente Ähnlichkeitssuche und Clustering dichter Vektoren.
etcd: Ein verteilter Schlüssel-Wert-Speicher, der zum Speichern von Milvus-Metadaten verwendet wird.
Pulsar/Kafka: Ein verteiltes Pub-Sub-Messaging-System zur Verarbeitung von Echtzeit-Datenaufnahme, -Verarbeitung und Kommunikation zwischen Komponenten.
Tantivy: Eine in Rust geschriebene Volltextsuchmaschinen-Bibliothek für textbasierte Suchfunktionen.
RocksDB: Eine persistente Speicher-Engine.
Minio/S3/GCS/Azure Blob Storage: Kompatibilität mit verschiedenen Objektspeicherlösungen.
Kubernetes: Eine verteilte containerisierte Bereitstellungsplattform.
StorageClass und Persistent Volumes: Kubernetes-Ressourcen werden verwendet, um die Speicheranforderungen von etcd und Pulsar zu verwalten.
Prometheus und Grafana: Visualisierung für das Milvus-Monitoring, mit dem Benutzer die Leistung verfolgen und Probleme beheben können.
Docker-Image-Größe ~500MB
Die Docker-Image-Größe für den eigenständigen Milvus-Container beträgt etwa 500MB. Die neuesten Releases finden Sie auf der Milvus-Docker-Hub-Seite unter https://hub.docker.com/r/milvusdb/milvus/tags.
Aktualisierungshäufigkeit ~1x pro Monat (viele kleine Releases und 1 angeheftetes Release pro Monat)
Milvus hat einen recht häufigen Release-Zyklus mit ungefähr einem Hauptrelease pro Monat. Die kleineren Releases enthalten Verbesserungen und Fehlerbehebungen. Typischerweise gibt es ein „angeheftetes“ Release pro Monat.
Wir empfehlen nicht, das neueste Minor-Release für die Produktion zu verwenden. Zilliz Cloud ist immer auf dem neuesten stabilen Release, das typischerweise eine Version hinter dem neuesten liegt. Zum Beispiel ist die neueste Version derzeit 2.4, aber das neueste Release, das wir für die Produktion empfehlen, ist 2.3.x.
SDKs
Wir bieten sechs SDKs (Software Development Kits) an in: Python, Node, Go, C#, Java, Ruby
Um das Python-SDK zu installieren, führen Sie einfach pip install pymilvus aus.
Es ist wichtig sicherzustellen, dass die von Ihnen gewählten SDK- und Milvus-Server-Versionen hinsichtlich Haupt- und Nebenversion übereinstimmen. Beispielsweise ist Pymilvus Version 2.4.0 mit einer lokalen Milvus-Server-Version 2.4.0-rc.1-dev kompatibel. Ebenso ist Pymilvus Version 2.3.6 mit Zilliz Version 2.3.x kompatibel.
Installation
Die Installation des eigenständigen Milvus-Dockers ist einfach. Das Wichtigste ist, die neueste docker-compose.yml entweder von der Dokumentationsseite oder direkt von GitHub herunterzuladen. Ich zeige unten einen wget-Befehl. Sie können den wget-Befehl an die Version anpassen, die Sie verwenden. Außerdem muss Docker installiert sein.
Unten finden Sie Beispiel-Python-Code zur Installation und Verbindung.
import pymilvus
from pymilvus import (connections, MilvusClient, utility)
print(f"Pymilvus: {pymilvus.__version__}")
###########################################################################################
# Download the latest .yaml file: https://milvus.io/docs/install_standalone-docker.md
# Or download manually from milvus github:
# !wget https://github.com/milvus-io/milvus/releases/download/v2.4.0-rc.1/milvus-standalone-docker-compose.yml -O docker-compose.yml
############################################################################################
# Start Docker
!docker compose up -d
# Verify which local port the Milvus server is listening on
!docker ps -a #19530/tcp
# Connect to the local server.
connection = connections.connect(
alias="default",
host='localhost', # or '0.0.0.0' or 'localhost'
port='19530'
)
# Print server version.
print(utility.get_server_version())
# Use no-schema Milvus client (flexible json key:value format).
mc = MilvusClient(connections=connection)
# Check if a collection already exists.
collection_name = "movies"
has = utility.has_collection(collection_name)
print(f"Collection '{collection_name}' exists in Milvus?")
print(f"Answer --> {has}!")
# Stop the local Milvus server.
!docker compose down
Zusammenfassung
Dies sind die wichtigsten Abhängigkeiten und die Häufigkeit von Release-Updates für die Bereitstellung des Milvus-Servers auf eigenständigem Docker. Das Verständnis dieser Details kann Ihnen helfen, die Integration von Milvus in den Technologie-Stack Ihrer Organisation besser zu planen und vorzubereiten.
Weiterlesen

Zilliz Cloud Introduces Advanced BYOC-I Solution for Ultimate Enterprise Data Sovereignty
Explore Zilliz Cloud BYOC-I, the solution that balances AI innovation with data control, enabling secure deployments in finance, healthcare, and education sectors.

Optimizing Embedding Model Selection with TDA Clustering: A Strategic Guide for Vector Databases
Discover how Topological Data Analysis (TDA) reveals hidden embedding model weaknesses and helps optimize vector database performance.

DeepRAG: Thinking to Retrieval Step by Step for Large Language Models
Discover DeepRAG, an advanced retrieval-augmented generation (RAG) model that improves LLM accuracy by retrieving only essential data through step-by-step reasoning.



