Wie Sie Ihre Daten nahtlos zu Milvus migrieren: Ein umfassender Leitfaden
Milvus ist eine robuste Open-Source-Vektordatenbank für die Ähnlichkeitssuche, die Milliarden und sogar Billionen von Vektordaten mit minimaler Latenzzeit speichern, verarbeiten und abrufen kann. Außerdem ist sie hoch skalierbar, zuverlässig, Cloud-nativ und funktionsreich. Die neueste Version von Milvus bietet noch mehr aufregende Funktionen und Verbesserungen, darunter GPU-Unterstützung für eine über 10-fach schnellere Leistung und MMap für eine größere Speicherkapazität auf einem einzigen Rechner.
Bis September 2023 hat Milvus fast 23.000 Sterne auf GitHub erhalten und hat Zehntausende von Nutzern aus verschiedenen Branchen mit unterschiedlichen Anforderungen. Mit der zunehmenden Verbreitung von generativer KI-Technologie wie ChatGPT wird Milvus immer beliebter. Es ist ein wesentlicher Bestandteil verschiedener KI-Stacks, insbesondere des Retrieval Augmented Generation Frameworks, das das Problem der Halluzinationen bei großen Sprachmodellen angeht.
Um die wachsende Nachfrage von neuen Nutzern zu befriedigen, die zu Milvus migrieren wollen, und von bestehenden Nutzern, die auf die neuesten Milvus-Versionen aktualisieren wollen, haben wir Milvus Migration entwickelt. In diesem Blog stellen wir Ihnen die Funktionen von Milvus Migration vor und zeigen Ihnen, wie Sie Ihre Daten von Milvus 1.x, FAISS und Elasticsearch 7.0 und darüber hinaus schnell zu Milvus migrieren können.
Milvus Migration, ein leistungsstarkes Werkzeug zur Datenmigration
Milvus Migration ist ein in Go geschriebenes Datenmigrationstool. Es ermöglicht Nutzern, ihre Daten nahtlos von älteren Versionen von Milvus (1.x), FAISS und Elasticsearch 7.0 und darüber hinaus auf Milvus 2.x Versionen zu übertragen.
Das folgende Diagramm zeigt, wie wir Milvus Migration entwickelt haben und wie es funktioniert.
Wie Milvus Migration Daten migriert
Von Milvus 1.x und FAISS zu Milvus 2.x
Die Datenmigration von Milvus 1.x und FAISS beinhaltet das Parsen des Inhalts der ursprünglichen Datendateien, die Umwandlung in das Datenspeicherformat von Milvus 2.x und das Schreiben der Daten unter Verwendung des Milvus SDK's bulkInsert
. Dieser gesamte Prozess ist stream-basiert, theoretisch nur durch den Speicherplatz begrenzt und speichert Datendateien auf Ihrer lokalen Festplatte, S3, OSS, GCP oder Minio.
Von Elasticsearch zu Milvus 2.x
Bei der Datenmigration von Elasticsearch ist die Datenbeschaffung anders. Die Daten werden nicht aus Dateien abgerufen, sondern sequentiell über die Scroll-API von Elasticsearch abgerufen. Die Daten werden dann geparst und in das Milvus 2.x-Speicherformat umgewandelt und anschließend mit bulkInsert
geschrieben. Neben der Migration von Vektoren des Typs dense_vector
, die in Elasticsearch gespeichert sind, unterstützt Milvus Migration auch die Migration anderer Feldtypen, einschließlich long, integer, short, boolean, keyword, text und double.
Funktionsumfang von Milvus Migration
Milvus Migration vereinfacht den Migrationsprozess durch seinen robusten Funktionsumfang:
Unterstützte Datenquellen:
Milvus 1.x bis Milvus 2.x
Elasticsearch 7.0 und höher nach Milvus 2.x
FAISS zu Milvus 2.x
Mehrere Interaktionsmodi:
Befehlszeilenschnittstelle (CLI) unter Verwendung des Cobra-Frameworks
Restful API mit einer eingebauten Swagger UI
Integration als Go-Modul in andere Tools
Vielseitige Unterstützung von Dateiformaten:
Lokale Dateien
Amazon S3
Objektspeicherdienst (OSS)
Google Wolkenplattform (GCP)
Flexible Elasticsearch-Integration:
Migration von Vektoren des Typs
dense_vector
aus ElasticsearchUnterstützung für die Migration anderer Feldtypen wie long, integer, short, boolean, keyword, text und double
Schnittstellen-Definitionen
Milvus Migration bietet die folgenden Schlüsselschnittstellen:
/start
: Initiieren eines Migrationsauftrags (entspricht einer Kombination aus Dump und Load, unterstützt derzeit nur ES-Migration)./dump
: Initiiert einen Dump-Auftrag (schreibt Quelldaten auf das Zielspeichermedium)./load
: Initiiert einen Ladeauftrag (schreibt Daten vom Zielspeichermedium in Milvus 2.x)./get_job
: Ermöglicht es den Benutzern, die Ergebnisse der Auftragsausführung anzuzeigen. (Weitere Details finden Sie in der server.go des Projekts)
Als Nächstes wollen wir anhand einiger Beispieldaten untersuchen, wie Milvus Migration in diesem Abschnitt verwendet wird. Sie können diese Beispiele hier auf GitHub finden.
Migration von Elasticsearch zu Milvus 2.x
- Elasticsearch-Daten vorbereiten
Um Elasticsearch-Daten zu migrieren, sollten Sie bereits Ihren eigenen Elasticsearch-Server eingerichtet haben. Sie sollten Vektordaten im Feld dense_vector
speichern und sie mit anderen Feldern indizieren. Die Index-Zuordnungen sind wie unten gezeigt.
- Kompilieren und Erstellen
Laden Sie zunächst den Quellcode der Milvus-Migration von GitHub herunter. Führen Sie dann die folgenden Befehle aus, um sie zu kompilieren.
go get
go build
Bei diesem Schritt wird eine ausführbare Datei mit dem Namen milvus-migration
erzeugt.
- Konfigurieren Sie
migration.yaml
Bevor Sie die Migration starten, müssen Sie eine Konfigurationsdatei mit dem Namen migration.yaml
vorbereiten, die Informationen über die Datenquelle, das Ziel und andere relevante Einstellungen enthält. Hier sehen Sie eine Beispielkonfiguration:
# Configuration for Elasticsearch to Milvus 2.x migration
dumper:
worker:
workMode: Elasticsearch
reader:
bufferSize: 2500
meta:
mode: config
index: test_index
fields:
- name: id
pk: true
type: long
- name: other_field
maxLen: 60
type: keyword
- name: data
type: dense_vector
dims: 512
milvus:
collection: "rename_index_test"
closeDynamicField: false
consistencyLevel: Eventually
shardNum: 1
source:
es:
urls:
- http://localhost:9200
username: xxx
password: xxx
target:
mode: remote
remote:
outputDir: outputPath/migration/test1
cloud: aws
region: us-west-2
bucket: xxx
useIAM: true
checkBucket: false
milvus2x:
endpoint: {yourMilvusAddress}:{port}
username: ******
password: ******
Eine ausführlichere Erläuterung der Konfigurationsdatei finden Sie auf dieser Seite auf GitHub.
- Ausführen des Migrationsauftrags
Nachdem Sie Ihre migration.yaml
Datei konfiguriert haben, können Sie den Migrationsauftrag starten, indem Sie den folgenden Befehl ausführen:
./milvus-migration start --config=/{YourConfigFilePath}/migration.yaml
Beobachten Sie die Protokollausgabe. Wenn Sie ähnliche Protokolle wie die folgenden sehen, bedeutet dies, dass die Migration erfolgreich war.
[task/load_base_task.go:94] ["[LoadTasker] Dec Task Processing-------------->"] [Count=0] [fileName=testfiles/output/zwh/migration/test_mul_field4/data_1_1.json] [taskId=442665677354739304][task/load_base_task.go:76] ["[LoadTasker] Progress Task --------------->"] [fileName=testfiles/output/zwh/migration/test_mul_field4/data_1_1.json] [taskId=442665677354739304][dbclient/cus_field_milvus2x.go:86] ["[Milvus2x] begin to ShowCollectionRows"][loader/cus_milvus2x_loader.go:66] ["[Loader] Static: "] [collection=test_mul_field4_rename1] [beforeCount=50000] [afterCount=100000] [increase=50000][loader/cus_milvus2x_loader.go:66] ["[Loader] Static Total"] ["Total Collections"=1] [beforeTotalCount=50000] [afterTotalCount=100000] [totalIncrease=50000][migration/es_starter.go:25] ["[Starter] migration ES to Milvus finish!!!"] [Cost=80.009174459][starter/starter.go:106] ["[Starter] Migration Success!"] [Cost=80.00928425][cleaner/remote_cleaner.go:27] ["[Remote Cleaner] Begin to clean files"] [bucket=a-bucket] [rootPath=testfiles/output/zwh/migration][cmd/start.go:32] ["[Cleaner] clean file success!"]
Neben dem Befehlszeilenansatz unterstützt Milvus Migration auch die Migration über die Restful API.
Um die Restful-API zu verwenden, starten Sie den API-Server mit dem folgenden Befehl:
./milvus-migration server run -p 8080
Sobald der Dienst läuft, können Sie die Migration durch den Aufruf der API einleiten.
curl -XPOST http://localhost:8080/api/v1/start
Wenn die Migration abgeschlossen ist, können Sie Attu, ein All-in-One-Tool zur Verwaltung von Vektordatenbanken, verwenden, um die Gesamtzahl der erfolgreich migrierten Zeilen anzuzeigen und andere sammlungsbezogene Vorgänge durchzuführen.
Die Attu-Schnittstelle
Migration von Milvus 1.x nach Milvus 2.x
- Vorbereiten von Milvus 1.x-Daten
Damit Sie den Migrationsprozess schnell erleben können, haben wir 10.000 Milvus 1.x Testdatensätze in den Quellcode von Milvus Migration eingefügt. In echten Fällen müssen Sie jedoch Ihre eigene meta.json
Datei aus Ihrer Milvus 1.x Instanz exportieren, bevor Sie den Migrationsprozess starten.
- Sie können die Daten mit dem folgenden Befehl exportieren.
./milvus-migration export -m "user:password@tcp(adderss)/milvus?charset=utf8mb4&parseTime=True&loc=Local" -o outputDir
Achten Sie darauf:
Ersetzen Sie die Platzhalter durch Ihre tatsächlichen MySQL-Anmeldedaten.
Halten Sie den Milvus 1.x-Server an oder stoppen Sie die Datenübertragung, bevor Sie diesen Export durchführen.
Kopieren Sie den Ordner Milvus
tables
und die Dateimeta.json
in das gleiche Verzeichnis.
Hinweis: Wenn Sie Milvus 2.x auf der Zilliz Cloud (dem vollständig verwalteten Dienst von Milvus) verwenden, können Sie die Migration über die Cloud Console starten.
- Kompilieren und Erstellen
Laden Sie zunächst den Quellcode der Milvus-Migration von GitHub herunter. Führen Sie dann die folgenden Befehle aus, um ihn zu kompilieren.
go get
go build
Bei diesem Schritt wird eine ausführbare Datei mit dem Namen milvus-migration
erzeugt.
- Konfigurieren Sie
migration.yaml
Bereiten Sie eine migration.yaml
Konfigurationsdatei vor, die Details über die Quelle, das Ziel und andere relevante Einstellungen angibt. Hier ist eine Beispielkonfiguration:
# Configuration for Milvus 1.x to Milvus 2.x migration
dumper:
worker:
limit: 2
workMode: milvus1x
reader:
bufferSize: 1024
writer:
bufferSize: 1024
loader:
worker:
limit: 16
meta:
mode: local
localFile: /outputDir/test/meta.json
source:
mode: local
local:
tablesDir: /db/tables/
target:
mode: remote
remote:
outputDir: "migration/test/xx"
ak: xxxx
sk: xxxx
cloud: aws
endpoint: 0.0.0.0:9000
region: ap-southeast-1
bucket: a-bucket
useIAM: false
useSSL: false
checkBucket: true
milvus2x:
endpoint: localhost:19530
username: xxxxx
password: xxxxx
Eine ausführlichere Erläuterung der Konfigurationsdatei finden Sie auf dieser Seite auf GitHub.
- Ausführen des Migrationsauftrags
Sie müssen die Befehle dump
und load
separat ausführen, um die Migration abzuschließen. Diese Befehle konvertieren die Daten und importieren sie in Milvus 2.x.
Hinweis: In Kürze werden wir diesen Schritt vereinfachen und es den Benutzern ermöglichen, die Migration mit nur einem Befehl abzuschließen. Bleiben Sie dran.
Befehl Dump:
./milvus-migration dump --config=/{YourConfigFilePath}/migration.yaml
Befehl Laden:
./milvus-migration load --config=/{YourConfigFilePath}/migration.yaml
Nach der Migration enthält die generierte Sammlung in Milvus 2.x zwei Felder: id
und data
. Weitere Details können Sie mit Attu, einem All-in-One-Tool zur Verwaltung von Vektordatenbanken, anzeigen.
Migration von FAISS zu Milvus 2.x
- FAISS-Daten vorbereiten
Um Elasticsearch-Daten zu migrieren, sollten Sie Ihre eigenen FAISS-Daten bereithalten. Um Ihnen zu helfen, den Migrationsprozess schnell zu erleben, haben wir einige FAISS-Testdaten in den Quellcode von Milvus Migration eingefügt.
- Kompilieren und Erstellen
Laden Sie zunächst den Quellcode von Milvus Migration von GitHub herunter. Führen Sie dann die folgenden Befehle aus, um ihn zu kompilieren.
go get
go build
In diesem Schritt wird eine ausführbare Datei mit dem Namen milvus-migration
erzeugt.
- Konfigurieren Sie
migration.yaml
Bereiten Sie eine migration.yaml
Konfigurationsdatei für die FAISS-Migration vor, in der Sie Details über die Quelle, das Ziel und andere relevante Einstellungen angeben. Hier ist eine Beispielkonfiguration:
# Configuration for FAISS to Milvus 2.x migration
dumper:
worker:
limit: 2
workMode: FAISS
reader:
bufferSize: 1024
writer:
bufferSize: 1024
loader:
worker:
limit: 2
source:
mode: local
local:
FAISSFile: ./testfiles/FAISS/FAISS_ivf_flat.index
target:
create:
collection:
name: test1w
shardsNums: 2
dim: 256
metricType: L2
mode: remote
remote:
outputDir: testfiles/output/
cloud: aws
endpoint: 0.0.0.0:9000
region: ap-southeast-1
bucket: a-bucket
ak: minioadmin
sk: minioadmin
useIAM: false
useSSL: false
checkBucket: true
milvus2x:
endpoint: localhost:19530
username: xxxxx
password: xxxxx
Eine ausführlichere Erläuterung der Konfigurationsdatei finden Sie auf dieser Seite auf GitHub.
- Ausführen des Migrationsauftrags
Wie die Migration von Milvus 1.x nach Milvus 2.x erfordert auch die FAISS-Migration die Ausführung der Befehle dump
und load
. Diese Befehle konvertieren die Daten und importieren sie in Milvus 2.x.
Hinweis: Wir werden diesen Schritt vereinfachen und den Benutzern ermöglichen, die Migration in Kürze mit nur einem Befehl abzuschließen. Bleiben Sie dran.
Befehl Dump:
./milvus-migration dump --config=/{YourConfigFilePath}/migration.yaml
Load-Befehl:
./milvus-migration load --config=/{YourConfigFilePath}/migration.yaml
Weitere Details können Sie mit Attu, einem All-in-One-Tool zur Verwaltung von Vektordatenbanken, anzeigen.
Bleiben Sie dran für zukünftige Migrationspläne
In Zukunft werden wir die Migration von mehr Datenquellen unterstützen und weitere Migrationsfunktionen hinzufügen, einschließlich:
Unterstützung der Migration von Redis zu Milvus.
Unterstützung der Migration von MongoDB zu Milvus.
Unterstützung der wiederaufnehmbaren Migration.
Vereinfachung der Migrationsbefehle durch Zusammenlegung der Dump- und Ladeprozesse in einen einzigen.
Unterstützung der Migration von anderen Mainstream-Datenquellen zu Milvus.
Fazit
Milvus 2.3, die neueste Version von Milvus, bringt aufregende neue Funktionen und Leistungsverbesserungen, die den wachsenden Anforderungen des Datenmanagements gerecht werden. Die Migration Ihrer Daten zu Milvus 2.x kann diese Vorteile freisetzen, und das Milvus-Migrationsprojekt macht den Migrationsprozess rationell und einfach. Probieren Sie es aus, und Sie werden nicht enttäuscht sein.
Hinweis: Die Informationen in diesem Blog basieren auf dem Stand des Milvus- und Milvus Migration-Projekts im September 2023. In der offiziellen Milvus-Dokumentation finden Sie die aktuellsten Informationen und Anleitungen.
- Milvus Migration, ein leistungsstarkes Werkzeug zur Datenmigration
- Migration von Elasticsearch zu Milvus 2.x
- Migration von Milvus 1.x nach Milvus 2.x
- Migration von FAISS zu Milvus 2.x
- Bleiben Sie dran für zukünftige Migrationspläne
- Fazit
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word