Lokale Ausführung von Milvus Lite
Diese Seite veranschaulicht, wie Milvus lokal mit Milvus Lite ausgeführt werden kann. Milvus Lite ist die schlanke Version von Milvus, einer Open-Source-Vektordatenbank, die KI-Anwendungen mit Vektoreinbettungen und Ähnlichkeitssuche unterstützt.
Überblick
Milvus Lite kann in Ihre Python-Anwendung importiert werden und bietet die zentralen Vektorsuchfunktionen von Milvus. Milvus Lite ist bereits im Python-SDK von Milvus enthalten. Es kann einfach mit pip install pymilvus
eingesetzt werden.
Mit Milvus Lite können Sie innerhalb weniger Minuten eine KI-Anwendung mit vektorieller Ähnlichkeitssuche erstellen! Milvus Lite kann in den folgenden Umgebungen eingesetzt werden:
- Jupyter Notebook / Google Colab
- Laptops
- Edge-Geräte
Milvus Lite nutzt dieselbe API wie Milvus Standalone und Distributed und deckt die meisten Funktionen ab, wie z. B. die Persistenz und Verwaltung von Vektordaten, Vektor-CRUD-Operationen, Sparse- und Dense-Vektor-Suche, Metadatenfilterung, Multi-Vektor- und Hybrid-Suche. Zusammen bieten sie eine konsistente Erfahrung über verschiedene Arten von Umgebungen hinweg, von Edge-Geräten bis hin zu Clustern in der Cloud, passend zu Anwendungsfällen unterschiedlicher Größe. Mit demselben clientseitigen Code können Sie GenAI-Anwendungen mit Milvus Lite auf einem Laptop oder Jupyter Notebook, Milvus Standalone auf einem Docker-Container oder Milvus Distributed auf einem Kubernetes-Cluster mit Milliarden von Vektoren in der Produktion ausführen.
Voraussetzungen
Milvus Lite unterstützt derzeit die folgenden Umgebungen:
- Ubuntu >= 20.04 (x86_64 und arm64)
- MacOS >= 11.0 (Apple Silicon M1/M2 und x86_64)
Bitte beachten Sie, dass Milvus Lite nur für kleine Anwendungsfälle der Vektorsuche geeignet ist. Für große Anwendungsfälle empfehlen wir Milvus Standalone oder Milvus Distributed. Sie können auch das vollständig verwaltete Milvus auf der Zilliz Cloud in Betracht ziehen.
Milvus Lite einrichten
pip install -U pymilvus
Wir empfehlen die Verwendung von pymilvus
. Da milvus-lite
in pymilvus
Version 2.4.2 oder höher enthalten ist, können Sie pip install
mit -U
verwenden, um ein Update auf die neueste Version zu erzwingen. milvus-lite
wird automatisch installiert.
Wenn Sie das Paket milvus-lite
explizit installieren möchten, oder wenn Sie eine ältere Version von milvus-lite
installiert haben und diese aktualisieren möchten, können Sie pip install -U milvus-lite
verwenden.
Verbindung zu Milvus Lite
Wenn Sie in pymilvus
einen lokalen Dateinamen als uri-Parameter von MilvusClient angeben, wird Milvus Lite verwendet.
from pymilvus import MilvusClient
client = MilvusClient("./milvus_demo.db")
Nach Ausführung des obigen Codeausschnitts wird eine Datenbankdatei mit dem Namen milvus_demo.db im aktuellen Ordner erstellt.
HINWEIS: Beachten Sie, dass dieselbe API auch für Milvus Standalone, Milvus Distributed und Zilliz Cloud gilt. Der einzige Unterschied besteht darin, dass der lokale Dateiname durch den Endpunkt des Remote-Servers und die Anmeldedaten ersetzt wird, z. B.
client = MilvusClient(uri="http://localhost:19530", token="username:password")
.
Beispiele
Im Folgenden finden Sie eine einfache Demo, die zeigt, wie Milvus Lite für die Textsuche verwendet wird. Es gibt umfangreichere Beispiele für die Verwendung von Milvus Lite zur Erstellung von Anwendungen wie RAG, Bildsuche und die Verwendung von Milvus Lite in beliebten RAG-Frameworks wie LangChain und LlamaIndex!
from pymilvus import MilvusClient
import numpy as np
client = MilvusClient("./milvus_demo.db")
client.create_collection(
collection_name="demo_collection",
dimension=384 # The vectors we will use in this demo has 384 dimensions
)
# Text strings to search from.
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.",
]
# For illustration, here we use fake vectors with random numbers (384 dimension).
vectors = [[ np.random.uniform(-1, 1) for _ in range(384) ] for _ in range(len(docs)) ]
data = [ {"id": i, "vector": vectors[i], "text": docs[i], "subject": "history"} for i in range(len(vectors)) ]
res = client.insert(
collection_name="demo_collection",
data=data
)
# This will exclude any text in "history" subject despite close to the query vector.
res = client.search(
collection_name="demo_collection",
data=[vectors[0]],
filter="subject == 'history'",
limit=2,
output_fields=["text", "subject"],
)
print(res)
# a query that retrieves all entities matching filter expressions.
res = client.query(
collection_name="demo_collection",
filter="subject == 'history'",
output_fields=["text", "subject"],
)
print(res)
# delete
res = client.delete(
collection_name="demo_collection",
filter="subject == 'history'",
)
print(res)
Begrenzungen
Wenn Sie Milvus Lite verwenden, beachten Sie bitte, dass einige Funktionen nicht unterstützt werden. Die folgenden Tabellen fassen die Nutzungsgrenzen von Milvus Lite zusammen.
Sammlung
Methode/Parameter | Unterstützt in Milvus Lite |
---|---|
create_collection() | Unterstützung mit begrenzten Parametern |
collection_name | Y |
dimension | Y |
primary_field_name | Y |
id_type | Y |
vector_field_name | Y |
metric_type | Y |
auto_id | Y |
schema | Y |
index_params | Y |
enable_dynamic_field | Y |
num_shards | N |
partition_key_field | N |
num_partitions | N |
consistency_level | N (unterstützt nur Strong ; jede andere Konfiguration wird als Strong behandelt). |
get_collection_stats() | Unterstützt das Abrufen von Sammlungsstatistiken. |
collection_name | Y |
timeout | Y |
describe_collection() | num_shards , consistency_level und collection_id in der Antwort sind ungültig. |
timeout | Y |
has_collection() | Unterstützt die Prüfung, ob eine Sammlung existiert. |
collection_name | Y |
timeout | Y |
list_collections() | Unterstützt die Auflistung aller Sammlungen. |
drop_collection() | Unterstützt das Fallenlassen einer Sammlung. |
collection_name | Y |
timeout | Y |
rename_collection() | Das Umbenennen einer Sammlung wird nicht unterstützt. |
Feld & Schema
Methode/Parameter | Unterstützt in Milvus Lite |
---|---|
create_schema() | Unterstützung mit begrenzten Parametern |
auto_id | Y |
enable_dynamic_field | Y |
primary_field | Y |
partition_key_field | N |
add_field() | Unterstützung mit begrenzten Parametern |
field_name | Y |
datatype | Y |
is_primary | Y |
max_length | Y |
element_type | Y |
max_capacity | Y |
dim | Y |
is_partition_key | N |
Einfügen & Suchen
Methode/Parameter | Unterstützt in Milvus Lite |
---|---|
suchen() | Unterstützung mit begrenzten Parametern |
collection_name | Y |
data | Y |
filter | Y |
limit | Y |
output_fields | Y |
search_params | Y |
timeout | Y |
partition_names | N |
anns_field | Y |
Abfrage() | Unterstützung mit begrenzten Parametern |
collection_name | Y |
filter | Y |
output_fields | Y |
timeout | Y |
ids | Y |
partition_names | N |
get() | Unterstützung mit begrenzten Parametern |
collection_name | Y |
ids | Y |
output_fields | Y |
timeout | Y |
partition_names | N |
löschen() | Unterstützung mit begrenzten Parametern |
collection_name | Y |
ids | Y |
timeout | Y |
filter | Y |
partition_name | N |
einfügen() | Unterstützung mit begrenzten Parametern |
collection_name | Y |
data | Y |
timeout | Y |
partition_name | N |
upsert() | Unterstützung mit begrenzten Parametern |
collection_name | Y |
data | Y |
timeout | Y |
partition_name | N |
Laden & Freigeben
Verfahren/Parameter | Unterstützt in Milvus Lite |
---|---|
load_collection() | Y |
collection_name | Y |
timeout | Y |
release_collection() | Y |
collection_name | Y |
timeout | Y |
get_load_state() | Die Abfrage des Ladestatus wird nicht unterstützt. |
refresh_load() | Das Laden der entladenen Daten einer geladenen Sammlung wird nicht unterstützt. |
close() | Y |
Index
Methode/Parameter | Unterstützt in Milvus Lite |
---|---|
list_indexes() | Das Auflisten von Indizes wird unterstützt. |
collection_name | Y |
field_name | Y |
create_index() | Unterstützt nur den Indextyp FLAT . |
index_params | Y |
timeout | Y |
drop_index() | Das Löschen von Indizes wird unterstützt. |
collection_name | Y |
index_name | Y |
timeout | Y |
describe_index() | Das Beschreiben von Indizes wird unterstützt. |
collection_name | Y |
index_name | Y |
timeout | Y |
Vektor-Index-Typen
Milvus Lite unterstützt nur den Index-Typ FLAT. Es verwendet den FLAT-Typ unabhängig vom angegebenen Index-Typ in der Sammlung.
Suchfunktionen
Milvus Lite unterstützt Sparse Vector, Multi-Vector, Hybrid Search.
Partitionierung
Milvus Lite unterstützt keine Partitionen und partitionierungsbezogene Methoden.
Benutzer & Rollen
Milvus Lite unterstützt keine Benutzer und Rollen und damit verbundene Methoden.
Alias
Milvus Lite unterstützt keine Aliasnamen und aliasbezogene Methoden.
Migration von Daten aus Milvus Lite
Alle in Milvus Lite gespeicherten Daten können einfach exportiert und in andere Milvus-Bereitstellungsarten geladen werden, wie Milvus Standalone auf Docker, Milvus Distributed auf K8s oder vollständig verwaltetes Milvus auf Zilliz Cloud.
Milvus Lite bietet ein Kommandozeilen-Tool, das Daten in eine json-Datei ausgeben kann, die in Milvus und Zilliz Cloud(der vollständig verwaltete Cloud-Service für Milvus) importiert werden kann. Der Befehl milvus-lite wird zusammen mit dem Python-Paket milvus-lite installiert.
# Install
pip install -U "pymilvus[bulk_writer]"
milvus-lite dump -h
usage: milvus-lite dump [-h] [-d DB_FILE] [-c COLLECTION] [-p PATH]
optional arguments:
-h, --help show this help message and exit
-d DB_FILE, --db-file DB_FILE
milvus lite db file
-c COLLECTION, --collection COLLECTION
collection that need to be dumped
-p PATH, --path PATH dump file storage dir
Das folgende Beispiel exportiert alle Daten aus der Sammlung demo_collection
, die in ./milvus_demo.db
(Milvus Lite Datenbankdatei) gespeichert sind
Zum Exportieren von Daten:
milvus-lite dump -d ./milvus_demo.db -c demo_collection -p ./data_dir
# ./milvus_demo.db: milvus lite db file
# demo_collection: collection that need to be dumped
#./data_dir : dump file storage dir
Mit der Dump-Datei können Sie Daten über Data Import in die Zilliz-Cloud hochladen oder über Bulk Insert auf die Milvus-Server hochladen.
Wie geht es weiter?
Nachdem Sie sich mit Milvus Lite verbunden haben, können Sie:
Quickstart prüfen, um zu sehen, was Milvus alles kann.
Lernen Sie die Grundfunktionen von Milvus kennen:
Verteilen Sie Ihren Milvus-Cluster auf Clouds:
Erkunden Sie Milvus Backup, ein Open-Source-Tool für Milvus-Datensicherungen.
Birdwatcher, ein Open-Source-Tool zum Debuggen von Milvus und dynamischen Konfigurations-Updates.
Entdecken Sie Attu, ein Open-Source-GUI-Tool für die intuitive Milvus-Verwaltung.