Come migrare i dati a Milvus senza problemi: Una guida completa
Milvus è un robusto database vettoriale open-source per la ricerca di similarità , in grado di memorizzare, elaborare e recuperare miliardi e persino trilioni di dati vettoriali con una latenza minima. È inoltre altamente scalabile, affidabile, cloud-native e ricco di funzionalità . L'ultima versione di Milvus introduce caratteristiche e miglioramenti ancora più interessanti, tra cui il supporto delle GPU per prestazioni più veloci di 10 volte e MMap per una maggiore capacità di archiviazione su una singola macchina.
A settembre 2023, Milvus ha guadagnato quasi 23.000 stelle su GitHub e conta decine di migliaia di utenti provenienti da diversi settori con esigenze diverse. Sta diventando ancora più popolare con la diffusione di tecnologie di IA generativa come ChatGPT. È un componente essenziale di vari stack di IA, in particolare del framework di generazione aumentata del retrieval, che risolve il problema dell'allucinazione dei modelli linguistici di grandi dimensioni.
Per soddisfare la crescente domanda di nuovi utenti che desiderano migrare a Milvus e di utenti esistenti che desiderano aggiornarsi alle ultime versioni di Milvus, abbiamo sviluppato Milvus Migration. In questo blog esploreremo le caratteristiche di Milvus Migration e vi guideremo nel passaggio rapido dei vostri dati a Milvus da Milvus 1.x, FAISS ed Elasticsearch 7.0 e oltre.
Milvus Migration, un potente strumento di migrazione dei dati
Milvus Migration è uno strumento di migrazione dei dati scritto in Go. Consente agli utenti di spostare i propri dati senza problemi dalle versioni precedenti di Milvus (1.x), FAISS ed Elasticsearch 7.0 e oltre, alle versioni Milvus 2.x.
Il diagramma seguente mostra come abbiamo costruito Milvus Migration e come funziona.
Come Milvus Migration migra i dati
Da Milvus 1.x e FAISS a Milvus 2.x
La migrazione dei dati da Milvus 1.x e FAISS comporta il parsing del contenuto dei file di dati originali, la loro trasformazione nel formato di archiviazione dei dati di Milvus 2.x e la scrittura dei dati utilizzando l'SDK di Milvus bulkInsert
. L'intero processo è basato sul flusso, teoricamente limitato solo dallo spazio su disco, e memorizza i file di dati sul disco locale, S3, OSS, GCP o Minio.
Da Elasticsearch a Milvus 2.x
Nella migrazione dei dati Elasticsearch, il recupero dei dati è diverso. I dati non sono ottenuti da file, ma vengono recuperati in modo sequenziale utilizzando l'API di scorrimento di Elasticsearch. I dati vengono poi analizzati e trasformati nel formato di archiviazione di Milvus 2.x, quindi vengono scritti usando bulkInsert
. Oltre alla migrazione di vettori di tipo dense_vector
memorizzati in Elasticsearch, Milvus Migration supporta anche la migrazione di altri tipi di campi, tra cui long, integer, short, boolean, keyword, text e double.
Caratteristiche di Milvus Migration
Milvus Migration semplifica il processo di migrazione grazie al suo robusto set di funzioni:
Sorgenti di dati supportate:
Da Milvus 1.x a Milvus 2.x
Elasticsearch 7.0 e successivi a Milvus 2.x
FAISS a Milvus 2.x
Modalità di interazione multiple:
Interfaccia a riga di comando (CLI) con il framework Cobra
API Restful con interfaccia utente Swagger integrata
Integrazione come modulo Go in altri strumenti
Supporto di formati di file versatili:
File locali
Amazon S3
Servizio di archiviazione a oggetti (OSS)
Piattaforma cloud di Google (GCP)
Integrazione flessibile con Elasticsearch:
Migrazione di vettori di tipo
dense_vector
da ElasticsearchSupporto per la migrazione di altri tipi di campo, come long, integer, short, boolean, keyword, text e double.
Definizioni dell'interfaccia
Milvus Migration fornisce le seguenti interfacce chiave:
/start
: Avvio di un lavoro di migrazione (equivalente a una combinazione di dump e load, attualmente supporta solo la migrazione ES)./dump
: Avvia un lavoro di dump (scrive i dati di origine nel supporto di memorizzazione di destinazione)./load
: Avvia un lavoro di caricamento (scrive i dati dal supporto di memorizzazione di destinazione in Milvus 2.x)./get_job
: Consente agli utenti di visualizzare i risultati dell'esecuzione del lavoro. (Per maggiori dettagli, consultare il server.go del progetto).
Utilizziamo quindi alcuni dati di esempio per esplorare l'uso di Milvus Migration in questa sezione. Potete trovare questi esempi qui su GitHub.
Migrazione da Elasticsearch a Milvus 2.x
- Preparare i dati Elasticsearch
Per migrare i dati Elasticsearch, è necessario aver già configurato il proprio server Elasticsearch. È necessario memorizzare i dati vettoriali nel campo dense_vector
e indicizzarli con altri campi. Le mappature degli indici sono illustrate di seguito.
- Compilazione e compilazione
Innanzitutto, scaricare il codice sorgente di Milvus Migration da GitHub. Quindi, eseguire i seguenti comandi per compilarlo.
go get
go build
Questo passaggio genererà un file eseguibile chiamato milvus-migration
.
- Configurazione
migration.yaml
Prima di avviare la migrazione, è necessario preparare un file di configurazione chiamato migration.yaml
che includa informazioni sull'origine dei dati, sulla destinazione e altre impostazioni rilevanti. Ecco un esempio di configurazione:
# 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: ******
Per una spiegazione più dettagliata del file di configurazione, consultare questa pagina su GitHub.
- Eseguire il lavoro di migrazione
Dopo aver configurato il file migration.yaml
, è possibile avviare l'attività di migrazione eseguendo il comando seguente:
./milvus-migration start --config=/{YourConfigFilePath}/migration.yaml
Osservare l'output del log. Se si visualizzano log simili ai seguenti, significa che la migrazione è avvenuta con successo.
[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!"]
Oltre all'approccio da riga di comando, Milvus Migration supporta anche la migrazione tramite API Restful.
Per utilizzare Restful API, avviare il server API con il seguente comando:
./milvus-migration server run -p 8080
Una volta eseguito il servizio, è possibile avviare la migrazione chiamando l'API.
curl -XPOST http://localhost:8080/api/v1/start
Una volta completata la migrazione, è possibile utilizzare Attu, uno strumento di amministrazione del database vettoriale tutto in uno, per visualizzare il numero totale di righe migrate con successo ed eseguire altre operazioni relative alla raccolta.
L'interfaccia di Attu
Migrazione da Milvus 1.x a Milvus 2.x
- Preparare i dati di Milvus 1.x
Per aiutarvi a sperimentare rapidamente il processo di migrazione, abbiamo inserito 10.000 record di dati Milvus 1.x di prova nel codice sorgente di Milvus Migration. Tuttavia, nei casi reali, è necessario esportare il proprio file meta.json
dalla propria istanza Milvus 1.x prima di avviare il processo di migrazione.
- È possibile esportare i dati con il seguente comando.
./milvus-migration export -m "user:password@tcp(adderss)/milvus?charset=utf8mb4&parseTime=True&loc=Local" -o outputDir
Assicurarsi di:
Sostituire i segnaposto con le credenziali MySQL reali.
Fermare il server Milvus 1.x o interrompere la scrittura dei dati prima di eseguire questa esportazione.
Copiare la cartella Milvus
tables
e il filemeta.json
nella stessa directory.
Nota: se utilizzate Milvus 2.x su Zilliz Cloud (il servizio completamente gestito di Milvus), potete avviare la migrazione utilizzando Cloud Console.
- Compilazione e creazione
Per prima cosa, scaricare il codice sorgente di Milvus Migration da GitHub. Quindi, eseguire i seguenti comandi per compilarlo.
go get
go build
Questo passaggio genererà un file eseguibile chiamato milvus-migration
.
- Configurare
migration.yaml
Preparare un file di configurazione migration.yaml
, specificando i dettagli sulla sorgente, la destinazione e altre impostazioni rilevanti. Ecco un esempio di configurazione:
# 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
Per una spiegazione più dettagliata del file di configurazione, consultare questa pagina su GitHub.
- Eseguire il lavoro di migrazione
Per completare la migrazione, è necessario eseguire separatamente i comandi dump
e load
. Questi comandi convertono i dati e li importano in Milvus 2.x.
Nota: a breve semplificheremo questo passaggio e consentiremo agli utenti di completare la migrazione con un solo comando. Restate sintonizzati.
Comando di scarico:
./milvus-migration dump --config=/{YourConfigFilePath}/migration.yaml
Comando di caricamento:
./milvus-migration load --config=/{YourConfigFilePath}/migration.yaml
Dopo la migrazione, la collezione generata in Milvus 2.x conterrà due campi: id
e data
. È possibile visualizzare maggiori dettagli utilizzando Attu, uno strumento di amministrazione di database vettoriali all-in-one.
Migrazione da FAISS a Milvus 2.x
- Preparare i dati FAISS
Per migrare i dati Elasticsearch, è necessario preparare i propri dati FAISS. Per aiutarvi a sperimentare rapidamente il processo di migrazione, abbiamo inserito alcuni dati di prova FAISS nel codice sorgente di Milvus Migration.
- Compilazione e compilazione
Innanzitutto, scaricare il codice sorgente di Milvus Migration da GitHub. Quindi, eseguire i seguenti comandi per compilarlo.
go get
go build
Questo passo genererà un file eseguibile chiamato milvus-migration
.
- Configurare
migration.yaml
Preparare un file di configurazione migration.yaml
per la migrazione FAISS, specificando i dettagli relativi alla sorgente, alla destinazione e ad altre impostazioni rilevanti. Ecco un esempio di configurazione:
# 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
Per una spiegazione più dettagliata del file di configurazione, consultare questa pagina su GitHub.
- Eseguire il lavoro di migrazione
Come la migrazione da Milvus 1.x a Milvus 2.x, la migrazione FAISS richiede l'esecuzione dei comandi dump
e load
. Questi comandi convertono i dati e li importano in Milvus 2.x.
Nota: a breve semplificheremo questo passaggio e consentiremo agli utenti di completare la migrazione con un solo comando. Restate sintonizzati.
Comando Dump:
./milvus-migration dump --config=/{YourConfigFilePath}/migration.yaml
Comando di caricamento:
./milvus-migration load --config=/{YourConfigFilePath}/migration.yaml
È possibile visualizzare ulteriori dettagli utilizzando Attu, uno strumento di amministrazione di database vettoriali all-in-one.
Rimanete sintonizzati per i futuri piani di migrazione
In futuro, supporteremo la migrazione da altre fonti di dati e aggiungeremo altre funzioni di migrazione, tra cui:
Supporto della migrazione da Redis a Milvus.
Supporto della migrazione da MongoDB a Milvus.
Supporto della migrazione con ripresa.
Semplificare i comandi di migrazione unendo i processi di dump e load in uno solo.
Supporto della migrazione da altre fonti di dati mainstream a Milvus.
Conclusione
Milvus 2.3, l'ultima versione di Milvus, offre nuove interessanti funzionalità e miglioramenti delle prestazioni che rispondono alle crescenti esigenze di gestione dei dati. La migrazione dei dati a Milvus 2.x può sbloccare questi vantaggi e il progetto Milvus Migration rende il processo di migrazione semplice e snello. Provate e non rimarrete delusi.
Nota: le informazioni contenute in questo blog si basano sullo stato dei progetti Milvus e Milvus Migration a settembre 2023. Per informazioni e istruzioni più aggiornate, consultare la documentazione ufficiale di Milvus.
- Milvus Migration, un potente strumento di migrazione dei dati
- Migrazione da Elasticsearch a Milvus 2.x
- Migrazione da Milvus 1.x a Milvus 2.x
- Migrazione da FAISS a Milvus 2.x
- Rimanete sintonizzati per i futuri piani di migrazione
- Conclusione
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