🚀 Prueba Zilliz Cloud, el Milvus completamente gestionado, gratis—¡experimenta un rendimiento 10 veces más rápido! Prueba Ahora>>

milvus-logo
LFAI
  • Home
  • Blog
  • Cómo migrar sus datos a Milvus sin problemas: Guía completa

Cómo migrar sus datos a Milvus sin problemas: Guía completa

  • Engineering
December 01, 2023
Wenhui Zhang

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 Elasticsearch

    • Soporte 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

  1. 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.

  1. 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.

  1. 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.

  1. 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.

The Attu interface La interfaz de Attu

Migración de Milvus 1.x a Milvus 2.x

  1. 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 archivo meta.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.

  1. 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.

  1. 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.

  1. 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

  1. 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.

  1. 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.

  1. 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.

  1. 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.

Like the article? Spread the word

Sigue Leyendo