Presentación de la herramienta de migración de datos Milvus
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 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
odata_dir
. No configure ambos. Utilicedata_path
para especificar varias rutas de archivos odata_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
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 StartedLike the article? Spread the word