Cómo migrar sus datos a Milvus sin problemas: Guía completa
Milvus es una robusta base de datos vectorial de código abierto para la búsqueda de similitudes que puede almacenar, procesar y recuperar miles de millones e incluso billones de datos vectoriales con una latencia mínima. También es altamente escalable, fiable, nativa de la nube y rica en funciones. La última versión de Milvus introduce características y mejoras aún más interesantes, incluyendo soporte de GPU para un rendimiento más de 10 veces más rápido y MMap para una mayor capacidad de almacenamiento en una sola máquina.
Desde septiembre de 2023, Milvus ha ganado casi 23.000 estrellas en GitHub y tiene decenas de miles de usuarios de diversas industrias con necesidades variadas. Se está volviendo aún más popular a medida que la tecnología de IA generativa como ChatGPT se vuelve más prevalente. Es un componente esencial de varias pilas de IA, especialmente el marco de generación aumentada de recuperación, que aborda el problema de la alucinación de los grandes modelos lingüísticos.
Para satisfacer la creciente demanda de nuevos usuarios que desean migrar a Milvus y de usuarios existentes que desean actualizarse a las últimas versiones de Milvus, hemos desarrollado Milvus Migration. En este blog, exploraremos las características de Milvus Migration y le guiaremos en la rápida transición de sus datos a Milvus desde Milvus 1.x, FAISS y Elasticsearch 7.0 y posteriores.
Milvus Migration, una potente herramienta de migración de datos
Milvus Migration es una herramienta de migración de datos escrita en Go. Permite a los usuarios mover sus datos sin problemas desde versiones anteriores de Milvus (1.x), FAISS y Elasticsearch 7.0 y posteriores a versiones Milvus 2.x.
El siguiente diagrama muestra cómo hemos creado Milvus Migration y cómo funciona.
Cómo migra Milvus los datos
De Milvus 1.x y FAISS a Milvus 2.x
La migración de datos desde Milvus 1.x y FAISS implica analizar el contenido de los archivos de datos originales, transformarlos en el formato de almacenamiento de datos de Milvus 2.x y escribir los datos utilizando el SDK de Milvus bulkInsert
. Todo este proceso está basado en flujos, teóricamente limitado solo por el espacio en disco, y almacena los archivos de datos en su disco local, S3, OSS, GCP o Minio.
De Elasticsearch a Milvus 2.x
En la migración de datos de Elasticsearch, la recuperación de datos es diferente. Los datos no se obtienen de archivos, sino que se obtienen secuencialmente utilizando la API de desplazamiento de Elasticsearch. A continuación, los datos se analizan y transforman en formato de almacenamiento Milvus 2.x, y luego se escriben utilizando bulkInsert
. Además de migrar vectores de tipo dense_vector
almacenados en Elasticsearch, Milvus Migration también admite la migración de otros tipos de campo, incluidos long, integer, short, boolean, keyword, text y double.
Conjunto de características de Milvus Migration
Milvus Migration simplifica el proceso de migración gracias a su sólido conjunto de características:
Fuentes de datos compatibles:
Milvus 1.x a Milvus 2.x
Elasticsearch 7.0 y posteriores a Milvus 2.x
FAISS a Milvus 2.x
Múltiples modos de interacción:
Interfaz de línea de comandos (CLI) utilizando el marco Cobra
API Restful con una interfaz de usuario Swagger integrada
Integración como módulo Go en otras herramientas
Soporte versátil de formatos de archivo:
Archivos locales
Amazon S3
Servicio de almacenamiento de objetos (OSS)
Plataforma en la nube de Google (GCP)
Integración flexible con Elasticsearch:
Migración de vectores de tipo
dense_vector
desde ElasticsearchSoporte para migrar otros tipos de campo como long, integer, short, boolean, keyword, text y double
Definiciones de interfaz
Milvus Migration proporciona las siguientes interfaces clave:
/start
: Inicia un trabajo de migración (equivalente a una combinación de volcado y carga, actualmente sólo soporta migración ES)./dump
: Inicia un trabajo de volcado (escribe los datos de origen en el medio de almacenamiento de destino)./load
: Inicia un trabajo de carga (escribe datos del medio de almacenamiento de destino en Milvus 2.x)./get_job
: Permite a los usuarios ver los resultados de la ejecución del trabajo. (Para más detalles, consulte server.go del proyecto)
A continuación, vamos a utilizar algunos datos de ejemplo para explorar cómo utilizar Milvus Migration en esta sección. Puede encontrar estos ejemplos aquí en GitHub.
Migración de Elasticsearch a Milvus 2.x
- Prepare los datos de Elasticsearch
Para migrar datos de Elasticsearch, ya debería haber configurado su propio servidor Elasticsearch. Debe almacenar los datos vectoriales en el campo dense_vector
e indexarlos con otros campos. Las asignaciones de índices son las que se muestran a continuación.
- Compilar y construir
En primer lugar, descargue el código fuente de Milvus Migration de GitHub. A continuación, ejecute los siguientes comandos para compilarlo.
go get
go build
Este paso generará un archivo ejecutable llamado milvus-migration
.
- Configure
migration.yaml
Antes de iniciar la migración, debe preparar un archivo de configuración llamado migration.yaml
que incluya información sobre el origen de datos, el destino y otros ajustes relevantes. A continuación se muestra un ejemplo de configuración:
# 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: ******
Para obtener una explicación más detallada del archivo de configuración, consulte esta página en GitHub.
- Ejecute el trabajo de migración
Ahora que ha configurado su archivo migration.yaml
, puede iniciar la tarea de migración ejecutando el siguiente comando:
./milvus-migration start --config=/{YourConfigFilePath}/migration.yaml
Observe la salida del registro. Cuando veas registros similares a los siguientes, significa que la migración se ha realizado correctamente.
[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!"]
Además del enfoque de línea de comandos, Milvus Migration también admite la migración mediante Restful API.
Para utilizar Restful API, inicie el servidor API utilizando el siguiente comando:
./milvus-migration server run -p 8080
Una vez ejecutado el servicio, puede iniciar la migración llamando a la API.
curl -XPOST http://localhost:8080/api/v1/start
Una vez finalizada la migración, puede utilizar Attu, una herramienta de administración de bases de datos vectoriales todo en uno, para ver el número total de filas migradas correctamente y realizar otras operaciones relacionadas con la recopilación.
La interfaz de Attu
Migración de Milvus 1.x a Milvus 2.x
- Preparar los datos de Milvus 1.x
Para ayudarle a experimentar rápidamente el proceso de migración, hemos puesto 10.000 registros de datos de prueba de Milvus 1.x en el código fuente de Milvus Migration. Sin embargo, en casos reales, debe exportar su propio archivo meta.json
desde su instancia de Milvus 1.x antes de iniciar el proceso de migración.
- Puede exportar los datos con el siguiente comando.
./milvus-migration export -m "user:password@tcp(adderss)/milvus?charset=utf8mb4&parseTime=True&loc=Local" -o outputDir
Asegúrese de:
Sustituir los marcadores de posición por sus credenciales MySQL reales.
Detener el servidor Milvus 1.x o detener la escritura de datos antes de realizar esta exportación.
Copie la carpeta Milvus
tables
y el archivometa.json
en el mismo directorio.
Nota: Si utiliza Milvus 2.x en Zilliz Cloud (el servicio totalmente gestionado de Milvus), puede iniciar la migración utilizando Cloud Console.
- Compilar y construir
En primer lugar, descargue el código fuente de Milvus Migration de GitHub. A continuación, ejecute los siguientes comandos para compilarlo.
go get
go build
Este paso generará un archivo ejecutable llamado milvus-migration
.
- Configure
migration.yaml
Prepare un archivo de configuración migration.yaml
, especificando detalles sobre el origen, el destino y otros ajustes relevantes. He aquí un ejemplo de configuración:
# 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
Para una explicación más detallada del archivo de configuración, consulte esta página en GitHub.
- Ejecutar el trabajo de migración
Debe ejecutar los comandos dump
y load
por separado para finalizar la migración. Estos comandos convierten los datos y los importan a Milvus 2.x.
Nota: En breve simplificaremos este paso y permitiremos a los usuarios finalizar la migración utilizando un solo comando. Permanezca atento.
Comando Dump:
./milvus-migration dump --config=/{YourConfigFilePath}/migration.yaml
Comando Cargar:
./milvus-migration load --config=/{YourConfigFilePath}/migration.yaml
Tras la migración, la colección generada en Milvus 2.x contendrá dos campos: id
y data
. Puede ver más detalles utilizando Attu, una herramienta de administración de bases de datos vectoriales todo en uno.
Migración de FAISS a Milvus 2.x
- Preparar los datos FAISS
Para migrar los datos de Elasticsearch, debe tener listos sus propios datos FAISS. Para ayudarle a experimentar rápidamente el proceso de migración, hemos puesto algunos datos de prueba FAISS en el código fuente de Milvus Migration.
- Compilar y construir
En primer lugar, descargue el código fuente de Milvus Migration de GitHub. A continuación, ejecute los siguientes comandos para compilarlo.
go get
go build
Este paso generará un archivo ejecutable llamado milvus-migration
.
- Configure
migration.yaml
Prepare un archivo de configuración migration.yaml
para la migración FAISS, especificando detalles sobre el origen, el destino y otros ajustes relevantes. He aquí un ejemplo de configuración:
# 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
Para una explicación más detallada del archivo de configuración, consulte esta página en GitHub.
- Ejecutar el trabajo de migración
Al igual que la migración de Milvus 1.x a Milvus 2.x, la migración FAISS requiere la ejecución de los comandos dump
y load
. Estos comandos convierten los datos y los importan a Milvus 2.x.
Nota: En breve simplificaremos este paso y permitiremos a los usuarios finalizar la migración utilizando un solo comando. Permanezca atento.
Comando Dump:
./milvus-migration dump --config=/{YourConfigFilePath}/migration.yaml
Comando de carga:
./milvus-migration load --config=/{YourConfigFilePath}/migration.yaml
Puede ver más detalles utilizando Attu, una herramienta de administración de bases de datos vectoriales todo en uno.
Permanezca atento a los futuros planes de migración
En el futuro, vamos a apoyar la migración de más fuentes de datos y añadir más características de migración, incluyendo:
Migración de Redis a Milvus.
Migración de MongoDB a Milvus.
Migración reanudable.
Simplificar los comandos de migración fusionando los procesos de volcado y carga en uno solo.
Soportar la migración desde otras fuentes de datos principales a Milvus.
Conclusión
Milvus 2.3, la última versión de Milvus, aporta nuevas e interesantes funciones y mejoras de rendimiento que satisfacen las crecientes necesidades de la gestión de datos. La migración de sus datos a Milvus 2.x puede desbloquear estos beneficios, y el proyecto Milvus Migration hace que el proceso de migración sea ágil y sencillo. Pruébelo y no le decepcionará.
Nota: La información de este blog se basa en el estado de los proyectos Milvus y Milvus Migration en septiembre de 2023. Consulte la documentación oficial de Milvus para obtener la información y las instrucciones más actualizadas.
- Milvus Migration, una potente herramienta de migración de datos
- Migración de Elasticsearch a Milvus 2.x
- Migración de Milvus 1.x a Milvus 2.x
- Migración de FAISS a Milvus 2.x
- Permanezca atento a los futuros planes de migración
- Conclusión
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