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

milvus-logo
LFAI
  • Home
  • Blog
  • Presentación de la herramienta de migración de datos Milvus

Presentación de la herramienta de migración de datos Milvus

  • Engineering
March 15, 2021
Zilliz

Nota importante: La Herramienta de Migración de Datos de Milvus ha quedado obsoleta. Para la migración de datos de otras bases de datos a Milvus, le recomendamos que utilice la herramienta más avanzada Milvus-migration Tool.

La herramienta Milvus-migration actualmente soporta:

  • Elasticsearch a Milvus 2.x
  • Faiss a Milvus 2.x
  • Milvus 1.x a Milvus 2.x
  • Milvus 2.3.x a Milvus 2.3.x o superior

Apoyaremos la migración desde más fuentes de datos vectoriales como Pinecone, Chroma y Qdrant. Permanezca atento.

Para más información, consulte la documentación de Milvus-migration o su repositorio GitHub.

--------------------------------- La Herramienta de Migración de Datos Mivus ha sido obsoleta ----------------------

Visión general

MilvusDM (Milvus Data Migration) es una herramienta de código abierto diseñada específicamente para importar y exportar archivos de datos con Milvus. MilvusDM puede mejorar en gran medida la eficiencia de la gestión de datos y reducir los costes de DevOps de las siguientes maneras:

  • De Faiss a Milvus: Importe datos descomprimidos de Faiss a Milvus.

  • HDF5 a Milvus: Importación de archivos HDF5 a Milvus.

  • Milvus a Milvus: Migrar datos de un Milvus de origen a otro Milvus de destino.

  • Milvus a HDF5: Guardar datos en Milvus como archivos HDF5.

milvusdm blog 1.png milvusdm blog 1.png

MilvusDM está alojado en Github y puede instalarse fácilmente ejecutando la línea de comandos pip3 install pymilvusdm. MilvusDM le permite migrar datos en una colección o partición específica. En las siguientes secciones, explicaremos cómo utilizar cada tipo de migración de datos.


Faiss a Milvus

Pasos

1.Descargue F2M.yaml:

$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/F2

2.Configure los siguientes parámetros:

  • data_path: Ruta de datos (vectores y sus ID correspondientes) en Faiss.

  • dest_host: Dirección del servidor Milvus.

  • dest_port: Puerto del servidor Milvus.

  • mode: Los datos pueden importarse a Milvus utilizando los siguientes modos:

    • Omitir: Ignora los datos si la colección o partición ya existe.

    • Añadir: Añadir datos si la colección o partición ya existe.

    • Sobrescribir: Borrar datos antes de insertarlos si la colección o partición ya existe.

  • dest_collection_name: Nombre de la colección receptora para la importación de datos.

  • dest_partition_name: Nombre de la partición receptora para la importación de datos.

  • collection_parameter: Información específica de la colección, como la dimensión del vector, el tamaño del archivo de índice y la métrica de distancia.

F2M:
  milvus_version: 1.0.0
  data_path: '/home/data/faiss.index'
  dest_host: '127.0.0.1'
  dest_port: 19530
  mode: 'append'        # 'skip/append/overwrite'
  dest_collection_name: 'test'
  dest_partition_name: ''
  collection_parameter:
    dimension: 256
    index_file_size: 1024
    metric_type: 'L2'

3.Ejecute F2M.yaml:

$ milvusdm --yaml F2M.yaml

Código de ejemplo

1.Lea los archivos Faiss para recuperar los vectores y sus ID correspondientes.

ids, vectors = faiss_data.read_faiss_data()

2.Inserte los datos recuperados en Milvus:

insert_milvus.insert_data(vectors, self.dest_collection_name, self.collection_parameter, self.mode, ids, self.dest_partition_name)


HDF5 to Milvus

Pasos

1.Descargue H2M.yaml.

$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/H2M.yaml

2.Configure los siguientes parámetros:

  • data_path: Ruta a los archivos HDF5.

  • data_dir: Directorio que contiene los archivos HDF5.

  • dest_host: Dirección del servidor Milvus.

  • dest_port: Puerto del servidor Milvus.

  • mode: Los datos pueden importarse a Milvus utilizando los siguientes modos:

    • Omitir: Ignora los datos si la colección o partición ya existe.

    • Añadir: Añadir datos si la colección o partición ya existe.

    • Sobrescribir: Borrar datos antes de insertarlos si la colección o partición ya existe.

  • dest_collection_name: Nombre de la colección receptora para la importación de datos.

  • dest_partition_name: Nombre de la partición receptora para la importación de datos.

  • collection_parameter: Información específica de la colección, como la dimensión del vector, el tamaño del archivo de índice y la métrica de distancia.

Seleccione data_path o data_dir. No configure ambos. Utilice data_path para especificar varias rutas de archivos o data_dir para especificar el directorio que contiene el archivo de datos.

H2M:
  milvus-version: 1.0.0
  data_path:
    - /Users/zilliz/float_1.h5
    - /Users/zilliz/float_2.h5
  data_dir:
  dest_host: '127.0.0.1'
  dest_port: 19530
  mode: 'overwrite'        # 'skip/append/overwrite'
  dest_collection_name: 'test_float'
  dest_partition_name: 'partition_1'
  collection_parameter:
    dimension: 128
    index_file_size: 1024
    metric_type: 'L2'

3.Ejecute H2M.yaml:

$ milvusdm --yaml H2M.yaml

Código de ejemplo

1.Lea los archivos HDF5 para recuperar los vectores y sus IDs correspondientes:

vectors, ids = self.file.read_hdf5_data()

2.Inserte los datos recuperados en Milvus:

ids = insert_milvus.insert_data(vectors, self.c_name, self.c_param, self.mode, ids,self.p_name)


Milvus a Milvus

Pasos

1.Descargue M2M.yaml.

$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/M2M.yaml

2.Configure los siguientes parámetros:

  • source_milvus_path: Source Milvus work path.

  • mysql_parameter: Configuración MySQL de Milvus. Si no se utiliza MySQL, establezca mysql_parameter como ''.

  • source_collection: Nombres de la colección y sus particiones en el Milvus fuente.

  • dest_host: Dirección del servidor Milvus.

  • dest_port: Puerto del servidor Milvus.

  • mode: Los datos pueden importarse a Milvus utilizando los siguientes modos:

    • Omitir: Ignora los datos si la colección o partición ya existe.

    • Añadir: Añadir datos si la colección o partición ya existe.

    • Sobrescribir: Si la colección o partición ya existe, borre los datos antes de insertarlos.Borre los datos antes de insertarlos si la colección o partición ya existe.

M2M:
  milvus_version: 1.0.0
  source_milvus_path: '/home/user/milvus'
  mysql_parameter:
    host: '127.0.0.1'
    user: 'root'
    port: 3306
    password: '123456'
    database: 'milvus'
  source_collection:
    test:
      - 'partition_1'
      - 'partition_2'
  dest_host: '127.0.0.1'
  dest_port: 19530
  mode: 'skip' # 'skip/append/overwrite'

3.Ejecute M2M.yaml.

$ milvusdm --yaml M2M.yaml

Código de ejemplo

1.De acuerdo con los metadatos de una colección o partición especificada, lea los archivos bajo milvus/db en su unidad local para recuperar vectores y sus IDs correspondientes desde el Milvus fuente.

collection_parameter, _ = milvus_meta.get_collection_info(collection_name)
r_vectors, r_ids, r_rows = milvusdb.read_milvus_file(self.milvus_meta, collection_name, partition_tag)

2.Inserte los datos recuperados en el Milvus de destino.

milvus_insert.insert_data(r_vectors, collection_name, collection_parameter, self.mode, r_ids, partition_tag)


Milvus a HDF5

Pasos

1.Descargue M2H.yaml:

$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/M2H.yaml

2.Configure los siguientes parámetros:

  • source_milvus_path: Source Milvus work path.

  • mysql_parameter: Source Milvus MySQL settings. Si no se utiliza MySQL, establezca mysql_parameter como ''.

  • source_collection: Nombres de la colección y sus particiones en el Milvus fuente.

  • data_dir: Directorio para guardar los archivos HDF5.

M2H:
  milvus_version: 1.0.0
  source_milvus_path: '/home/user/milvus'
  mysql_parameter:
    host: '127.0.0.1'
    user: 'root'
    port: 3306
    password: '123456'
    database: 'milvus'
  source_collection: # specify the 'partition_1' and 'partition_2' partitions of the 'test' collection.
    test:
      - 'partition_1'
      - 'partition_2'
  data_dir: '/home/user/data'

3.Ejecute M2H.yaml:

$ milvusdm --yaml M2H.yaml

Código de ejemplo

1.De acuerdo con los metadatos de una colección o partición especificada, lea los archivos bajo milvus/db en su unidad local para recuperar los vectores y sus IDs correspondientes.

collection_parameter, version = milvus_meta.get_collection_info(collection_name)
r_vectors, r_ids, r_rows = milvusdb.read_milvus_file(self.milvus_meta, collection_name, partition_tag)

2.Guarde los datos recuperados como archivos HDF5.

data_save.save_yaml(collection_name, partition_tag, collection_parameter, version, save_hdf5_name)

Estructura de archivos MilvusDM

El siguiente diagrama de flujo muestra cómo MilvusDM realiza diferentes tareas según el archivo YAML que recibe:

milvusdm blog 2.png milvusdm blog 2.png

Estructura de archivos de MilvusDM:

  • pymilvusdm

    • núcleo

      • milvus_client.py: Realiza operaciones de cliente en Milvus.

      • read_data.py: Lee los archivos de datos HDF5 en su unidad local. (Añada su código aquí para soportar la lectura de ficheros de datos en otros formatos).

      • read_faiss_data.py: Lee los ficheros de datos en Faiss.

      • read_milvus_data.py: Lee los ficheros de datos en Milvus.

      • read_milvus_meta.py: Lee los metadatos en Milvus.

      • datos_a_milvus.py: Crea colecciones o particiones basadas en parámetros en archivos YAML e importa los vectores y los IDs de vectores correspondientes a Milvus.

      • save_data.py: Guarda los datos como archivos HDF5.

      • write_logs.py: Escribe los registros durante el tiempo de ejecución.

    • faiss_to_milvus.py: Importa datos de Faiss a Milvus.

    • hdf5_to_milvus.py: Importa datos en archivos HDF5 a Milvus.

    • milvus_to_milvus.py: Migra datos de un Milvus fuente al Milvus destino.

    • milvus_to_hdf5.py: Exporta datos en Milvus y los guarda como archivos HDF5.

    • main.py: Realiza las tareas correspondientes según el fichero YAML recibido.

    • setting.py: Configuraciones relativas a la ejecución del código MilvusDM.

  • setup.py: Crea paquetes de archivos pymilvusdm y los sube a PyPI (Python Package Index).


Recapitulación

MilvusDM se ocupa principalmente de la migración de datos dentro y fuera de Milvus, que incluye Faiss a Milvus, HDF5 a Milvus, Milvus a Milvus y Milvus a HDF5.

Las siguientes funciones están previstas para las próximas versiones:

  • Importar datos binarios de Faiss a Milvus.

  • Blocklist y allowlist para la migración de datos entre Milvus de origen y Milvus de destino.

  • Fusionar e importar datos de múltiples colecciones o particiones en Milvus de origen a una nueva colección en Milvus de destino.

  • Copia de seguridad y recuperación de los datos de Milvus.

El proyecto MilvusDM es de código abierto en Github. Todas y cada una de las contribuciones al proyecto son bienvenidas. ¡Dale una estrella 🌟, y siéntete libre de presentar un problema o enviar tu propio código!

    Try Managed Milvus for Free

    Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

    Get Started

    Like the article? Spread the word

    Sigue Leyendo