Come migrare i tuoi dati a Milvus senza intoppi: una guida completa
Milvus è un robusto database vettoriale open-source per la ricerca di similarità che può archiviare, elaborare e recuperare miliardi e persino trilioni di dati vettoriali con una latenza minima. È anche altamente scalabile, affidabile, cloud-native e ricco di funzionalità. La più recente release di Milvus introduce funzionalità e miglioramenti ancora più interessanti, tra cui il supporto GPU per prestazioni oltre 10 volte più rapide e MMap per una maggiore capacità di archiviazione su una singola macchina.
A settembre 2023, Milvus ha ottenuto quasi 23.000 stelle su GitHub e conta decine di migliaia di utenti provenienti da settori diversi con esigenze differenti. Sta diventando ancora più popolare man mano che tecnologie di IA generativa come ChatGPT diventano più diffuse. È un componente essenziale di vari stack di IA, in particolare del framework di retrieval augmented generation, che affronta il problema delle allucinazioni dei modelli linguistici di grandi dimensioni.
Per soddisfare la crescente domanda da parte di nuovi utenti che desiderano migrare a Milvus e di utenti esistenti che vogliono aggiornare alle versioni più recenti di Milvus, abbiamo sviluppato Milvus Migration. In questo blog, esploreremo le funzionalità di Milvus Migration e ti guideremo nel trasferire rapidamente i tuoi dati a Milvus da Milvus 1.x, FAISS ed Elasticsearch 7.0 e versioni successive.
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 senza problemi i propri dati dalle versioni precedenti di Milvus (1.x), FAISS ed Elasticsearch 7.0 e versioni successive alle versioni Milvus 2.x.
Il diagramma seguente mostra come abbiamo creato 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 l'analisi 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 bulkInsert dell'SDK Milvus. Questo intero processo è basato su stream, teoricamente limitato solo dallo spazio su disco, e archivia i file di dati sul tuo disco locale, S3, OSS, GCP o Minio.
Da Elasticsearch a Milvus 2.x
Nella migrazione dei dati da Elasticsearch, il recupero dei dati è diverso. I dati non vengono ottenuti da file, ma recuperati in sequenza utilizzando la scroll API di Elasticsearch. I dati vengono quindi analizzati e trasformati nel formato di archiviazione Milvus 2.x, seguiti dalla scrittura tramite bulkInsert. Oltre a migrare vettori di tipo dense_vector archiviati in Elasticsearch, Milvus Migration supporta anche la migrazione di altri tipi di campo, tra cui long, integer, short, boolean, keyword, text e double.
Set di funzionalità di Milvus Migration
Milvus Migration semplifica il processo di migrazione grazie al suo robusto set di funzionalità:
Origini dati supportate:
Da Milvus 1.x a Milvus 2.x
Da Elasticsearch 7.0 e versioni successive a Milvus 2.x
Da FAISS a Milvus 2.x
Molteplici modalità di interazione:
Interfaccia a riga di comando (CLI) utilizzando il framework Cobra
API Restful con Swagger UI integrata
Integrazione come modulo Go in altri strumenti
Supporto versatile per formati di file:
File locali
Amazon S3
Object Storage Service (OSS)
Google Cloud Platform (GCP)
Integrazione flessibile con Elasticsearch:
Migrazione di vettori di tipo
dense_vectorda ElasticsearchSupporto per la migrazione di altri tipi di campo come long, integer, short, boolean, keyword, text e double
Definizioni delle interfacce
Milvus Migration fornisce le seguenti interfacce chiave:
/start: Avvia un job di migrazione (equivalente a una combinazione di dump e load, attualmente supporta solo la migrazione ES)./dump: Avvia un job di dump (scrive i dati di origine nel supporto di archiviazione di destinazione)./load: Avvia un job di load (scrive i dati dal supporto di archiviazione di destinazione in Milvus 2.x)./get_job: Consente agli utenti di visualizzare i risultati dell'esecuzione del job. (Per maggiori dettagli, fai riferimento a server.go del progetto)
Ora, usiamo alcuni dati di esempio per esplorare come utilizzare Milvus Migration in questa sezione. Puoi trovare questi esempi qui su GitHub.
Migrazione da Elasticsearch a Milvus 2.x
- Preparare i dati Elasticsearch
Per migrare dati Elasticsearch, dovresti aver già configurato il tuo server Elasticsearch. Dovresti archiviare i dati vettoriali nel campo dense_vector e indicizzarli con altri campi. Le mappature dell'indice sono mostrate di seguito.
- Compilare e creare
Per prima cosa, scarica il codice sorgente da GitHub di Milvus Migration. Quindi, esegui i seguenti comandi per compilarlo.
go get
go build
Questo passaggio genererà un file eseguibile denominato milvus-migration.
- Configurare
migration.yaml
Prima di avviare la migrazione, devi preparare un file di configurazione denominato migration.yaml che includa informazioni sull'origine dati, sulla destinazione e su 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, fai riferimento a questa pagina su GitHub.
- Eseguire il job di migrazione
Ora che hai configurato il tuo file migration.yaml, puoi avviare l'attività di migrazione eseguendo il seguente comando:
./milvus-migration start --config=/{YourConfigFilePath}/migration.yaml
Osserva l'output del log. Quando vedi log simili ai seguenti, significa che la migrazione è riuscita.
[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 Restful API.
Per usare la Restful API, avvia il server API usando il seguente comando:
./milvus-migration server run -p 8080
Una volta che il servizio è in esecuzione, puoi avviare la migrazione chiamando l'API.
curl -XPOST http://localhost:8080/api/v1/start
Al termine della migrazione, puoi usare Attu, uno strumento all-in-one per l'amministrazione di database vettoriali, per visualizzare il numero totale di righe migrate con successo ed eseguire altre operazioni relative alle raccolte.
L'interfaccia di Attu
Migrazione da Milvus 1.x a Milvus 2.x
- Prepara i dati di Milvus 1.x
Per aiutarti a sperimentare rapidamente il processo di migrazione, abbiamo inserito 10.000 record di dati di test Milvus 1.x nel codice sorgente di Milvus Migration. Tuttavia, nei casi reali, devi esportare il tuo file meta.json dalla tua istanza Milvus 1.x prima di avviare il processo di migrazione.
- Puoi esportare i dati con il seguente comando.
./milvus-migration export -m "user:password@tcp(adderss)/milvus?charset=utf8mb4&parseTime=True&loc=Local" -o outputDir
Assicurati di:
Sostituire i segnaposto con le tue credenziali MySQL effettive.
Arrestare il server Milvus 1.x o interrompere le scritture dei dati prima di eseguire questa esportazione.
Copiare la cartella
tablesdi Milvus e il filemeta.jsonnella stessa directory.
Nota: Se usi Milvus 2.x su Zilliz Cloud (il servizio completamente gestito di Milvus), puoi avviare la migrazione usando Cloud Console.
- Compila e crea la build
Per prima cosa, scarica il codice sorgente da GitHub di Milvus Migration. Quindi, esegui i seguenti comandi per compilarlo.
go get
go build
Questo passaggio genererà un file eseguibile denominato milvus-migration.
- Configura
migration.yaml
Prepara un file di configurazione migration.yaml, specificando i dettagli sulla sorgente, sulla destinazione e su altre impostazioni pertinenti. 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, consulta questa pagina su GitHub.
- Esegui il job di migrazione
Devi eseguire separatamente i comandi dump e load per completare la migrazione. 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 usando un solo comando. Resta sintonizzato.
Comando Dump:
./milvus-migration dump --config=/{YourConfigFilePath}/migration.yaml
Comando Load:
./milvus-migration load --config=/{YourConfigFilePath}/migration.yaml
Dopo la migrazione, la collection generata in Milvus 2.x conterrà due campi: id e data. Puoi visualizzare maggiori dettagli usando Attu, uno strumento all-in-one per l’amministrazione di database vettoriali.
Migrazione da FAISS a Milvus 2.x
- Prepara i dati FAISS
Per migrare i dati Elasticsearch, dovresti avere pronti i tuoi dati FAISS. Per aiutarti a provare rapidamente il processo di migrazione, abbiamo inserito alcuni dati di test FAISS nel codice sorgente di Milvus Migration.
- Compila e crea la build
Per prima cosa, scarica il codice sorgente da GitHub di Milvus Migration. Quindi, esegui i seguenti comandi per compilarlo.
go get
go build
Questo passaggio genererà un file eseguibile denominato milvus-migration.
- Configura
migration.yaml
Prepara un file di configurazione migration.yaml per la migrazione FAISS, specificando i dettagli relativi all’origine, alla destinazione e ad altre impostazioni pertinenti. 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, consulta questa pagina su GitHub.
- Esegui il job di migrazione
Come per la migrazione da Milvus 1.x a Milvus 2.x, la migrazione FAISS richiede l’esecuzione di entrambi 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 usando un solo comando. Resta sintonizzato.
Comando Dump:
./milvus-migration dump --config=/{YourConfigFilePath}/migration.yaml
Comando Load:
./milvus-migration load --config=/{YourConfigFilePath}/migration.yaml
Puoi visualizzare maggiori dettagli usando Attu, uno strumento all-in-one per l’amministrazione di database vettoriali.
Resta sintonizzato per i futuri piani di migrazione
In futuro, supporteremo la migrazione da più sorgenti dati e aggiungeremo altre funzionalità di migrazione, tra cui:
Supporto per la migrazione da Redis a Milvus.
Supporto per la migrazione da MongoDB a Milvus.
Supporto per la migrazione riprendibile.
Semplificazione dei comandi di migrazione unendo i processi di dump e load in uno solo.
Supporto per la migrazione da altre sorgenti dati mainstream a Milvus.
Conclusione
Milvus 2.3, l'ultima release di Milvus, offre nuove entusiasmanti funzionalità e miglioramenti delle prestazioni che rispondono alle crescenti esigenze della gestione dei dati. Migrare i tuoi dati a Milvus 2.x può sbloccare questi vantaggi, e il progetto Milvus Migration rende il processo di migrazione snello e semplice. Provalo e non rimarrai deluso.
Nota: Le informazioni in questo blog si basano sullo stato dei progetti Milvus e Milvus Migration a settembre 2023. Consulta la documentazione ufficiale di Milvus per le informazioni e le istruzioni più aggiornate.
Continua a leggere

DeepSeek-OCR Explained: Optical Compression for Scalable Long-Context and RAG Systems
Discover how DeepSeek-OCR uses visual tokens and Contexts Optical Compression to boost long-context LLM efficiency and reshape RAG performance.

Why Not All VectorDBs Are Agent-Ready
Explore why choosing the right vector database is critical for scaling AI agents, and why traditional solutions fall short in production.

Building RAG Pipelines for Real-Time Data with Cloudera and Milvus
explore how Cloudera can be integrated with Milvus to effectively implement some of the key functionalities of RAG pipelines.



