Présentation de l'outil de migration de données Milvus
Note importante: L'outil de migration de données Mivus est obsolète. Pour la migration des données d'autres bases de données vers Milvus, nous vous recommandons d'utiliser l'outil de migration Milvus, plus avancé.
L'outil de migration Milvus prend actuellement en charge :
- Elasticsearch vers Milvus 2.x
- Faiss vers Milvus 2.x
- Milvus 1.x vers Milvus 2.x
- Milvus 2.3.x vers Milvus 2.3.x ou supérieur
Nous prendrons en charge la migration à partir d'autres sources de données vectorielles telles que Pinecone, Chroma et Qdrant. Restez à l'écoute.
Pour plus d'informations, consultez la documentation Milvus-migration ou son dépôt GitHub.
--------------------------------- L'outil de migration de données Mivus est obsolète ----------------------
Vue d'ensemble
MilvusDM (Milvus Data Migration) est un outil open-source conçu spécifiquement pour l'importation et l'exportation de fichiers de données avec Milvus. MilvusDM peut améliorer considérablement l'efficacité de la gestion des données et réduire les coûts DevOps de la manière suivante :
Faiss vers Milvus: Importer des données décompressées de Faiss vers Milvus.
HDF5 vers Milvus: importation de fichiers HDF5 vers Milvus.
Milvus vers Milvus : Migration de données d'un Milvus source vers un Milvus cible différent.
Milvus to HDF5: Enregistrer des données dans Milvus en tant que fichiers HDF5.
milvusdm blog 1.png
MilvusDM est hébergé sur Github et peut être facilement installé en exécutant la ligne de commande pip3 install pymilvusdm
. MilvusDM vous permet de migrer des données dans une collection ou une partition spécifique. Dans les sections suivantes, nous expliquerons comment utiliser chaque type de migration de données.
Faiss vers Milvus
Etapes
1 Télécharger F2M.yaml:
$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/F2
2. définir les paramètres suivants :
data_path
: Chemin des données (vecteurs et leurs ID correspondants) dans Faiss.dest_host
: Adresse du serveur Milvus.dest_port
: Port du serveur Milvus.mode
: Les données peuvent être importées dans Milvus à l'aide des modes suivants :Ignorer : Ignorer les données si la collection ou la partition existe déjà.
Ajouter : Ajouter des données si la collection ou la partition existe déjà.
Écraser : Supprimer les données avant l'insertion si la collection ou la partition existe déjà.
dest_collection_name
: Nom de la collection réceptrice pour l'importation de données.dest_partition_name
: Nom de la partition réceptrice pour l'importation de données.collection_parameter
: Informations spécifiques à la collection, telles que la dimension du vecteur, la taille du fichier d'index et la métrique de distance.
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. exécutez F2M.yaml :
$ milvusdm --yaml F2M.yaml
Exemple de code
1. lire les fichiers Faiss pour récupérer les vecteurs et leurs identifiants correspondants
ids, vectors = faiss_data.read_faiss_data()
2. insérer les données récupérées dans Milvus :
insert_milvus.insert_data(vectors, self.dest_collection_name, self.collection_parameter, self.mode, ids, self.dest_partition_name)
HDF5 vers Milvus
Etapes
1 Télécharger H2M.yaml.
$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/H2M.yaml
2. définir les paramètres suivants :
data_path
: Chemin d'accès aux fichiers HDF5.data_dir
: Répertoire contenant les fichiers HDF5.dest_host
: Adresse du serveur Milvus.dest_port
: Port du serveur Milvus.mode
: Les données peuvent être importées dans Milvus à l'aide des modes suivants :Ignorer : Ignorer les données si la collection ou la partition existe déjà.
Ajouter : Ajouter des données si la collection ou la partition existe déjà.
Écraser : Supprimer les données avant l'insertion si la collection ou la partition existe déjà.
dest_collection_name
: Nom de la collection réceptrice pour l'importation de données.dest_partition_name
: Nom de la partition réceptrice pour l'importation de données.collection_parameter
: Informations spécifiques à la collection, telles que la dimension du vecteur, la taille du fichier d'index et la métrique de distance.
Définissez
data_path
oudata_dir
. Ne définissez pas les deux. Utilisezdata_path
pour spécifier plusieurs chemins d'accès aux fichiers oudata_dir
pour spécifier le répertoire contenant votre fichier de données.
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. exécutez H2M.yaml :
$ milvusdm --yaml H2M.yaml
Exemple de code
1. lire les fichiers HDF5 pour récupérer les vecteurs et leurs identifiants correspondants
vectors, ids = self.file.read_hdf5_data()
2. insérer les données récupérées dans Milvus :
ids = insert_milvus.insert_data(vectors, self.c_name, self.c_param, self.mode, ids,self.p_name)
Milvus to Milvus
Étapes
1 Télécharger M2M.yaml.
$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/M2M.yaml
2. définir les paramètres suivants :
source_milvus_path
: Chemin de travail source Milvus.mysql_parameter
: Paramètres MySQL de Source Milvus. Si MySQL n'est pas utilisé, définissez le paramètre mysql_ comme ''.source_collection
: Noms de la collection et de ses partitions dans la source Milvus.dest_host
: L'adresse du serveur Milvus.dest_port
: Port du serveur Milvus.mode
: Les données peuvent être importées dans Milvus à l'aide des modes suivants :Ignorer : Ignorer les données si la collection ou la partition existe déjà.
Ajouter : Ajouter des données si la collection ou la partition existe déjà.
Écraser : Si la collection ou la partition existe déjà, supprimer les données avant de les insérer.supprimer les données avant l'insertion si la collection ou la partition existe déjà.
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. exécuter M2M.yaml.
$ milvusdm --yaml M2M.yaml
Exemple de code
1. en fonction des métadonnées d'une collection ou d'une partition spécifiée, lire les fichiers sous milvus/db sur votre disque local pour récupérer les vecteurs et leurs ID correspondants à partir de la source Milvus.
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. insérer les données récupérées dans le Milvus cible.
milvus_insert.insert_data(r_vectors, collection_name, collection_parameter, self.mode, r_ids, partition_tag)
De Milvus à HDF5
Etapes
1 Télécharger M2H.yaml:
$ wget https://raw.githubusercontent.com/milvus-io/milvus-tools/main/yamls/M2H.yaml
2. définir les paramètres suivants :
source_milvus_path
: Source Milvus work path.mysql_parameter
: Source Milvus paramètres MySQL. Si MySQL n'est pas utilisé, définissez le paramètre mysql_ comme ''.source_collection
: Noms de la collection et de ses partitions dans la source Milvus.data_dir
: Répertoire pour contenir les fichiers HDF5 sauvegardés.
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. exécuter M2H.yaml:
$ milvusdm --yaml M2H.yaml
Exemple de code
1. en fonction des métadonnées d'une collection ou d'une partition spécifiée, lire les fichiers sous milvus/db sur votre disque local pour récupérer les vecteurs et leurs ID correspondants.
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. enregistrer les données récupérées sous forme de fichiers HDF5.
data_save.save_yaml(collection_name, partition_tag, collection_parameter, version, save_hdf5_name)
Structure du fichier MilvusDM
L'organigramme ci-dessous montre comment MilvusDM exécute différentes tâches en fonction du fichier YAML qu'il reçoit :
milvusdm blog 2.png
Structure du fichier MilvusDM :
pymilvusdm
core
milvus_client.py: Effectue des opérations client dans Milvus.
read_data.py: Lit les fichiers de données HDF5 sur votre disque local. (Ajoutez votre code ici pour prendre en charge la lecture de fichiers de données dans d'autres formats).
read_faiss_data.py: Lit les fichiers de données dans Faiss.
read_milvus_data.py: Lit les fichiers de données dans Milvus.
read_milvus_meta.py: Lit les métadonnées dans Milvus.
data_to_milvus.py: Crée des collections ou des partitions en fonction des paramètres des fichiers YAML et importe les vecteurs et les ID de vecteurs correspondants dans Milvus.
save_data.py: Enregistre les données sous forme de fichiers HDF5.
write_logs.py: Écrit les journaux pendant l'exécution.
faiss_to_milvus.py: Importe les données de Faiss dans Milvus.
hdf5_to_milvus.py: Importe des données dans des fichiers HDF5 dans Milvus.
milvus_to_milvus.py: Fait migrer les données d'un Milvus source vers un Milvus cible.
milvus_to_hdf5.py: Exporte les données dans Milvus et les enregistre en tant que fichiers HDF5.
main.py: Exécute les tâches correspondantes en fonction du fichier YAML reçu.
setting.py: Configurations relatives à l'exécution du code MilvusDM.
setup.py: Crée les paquets de fichiers pymilvusdm et les télécharge sur PyPI (Python Package Index).
Récapitulatif
MilvusDM gère principalement la migration des données dans et hors de Milvus, ce qui inclut Faiss vers Milvus, HDF5 vers Milvus, Milvus vers Milvus, et Milvus vers HDF5.
Les fonctionnalités suivantes sont prévues pour les prochaines versions :
Importation de données binaires de Faiss vers Milvus.
Blocklist et allowlist pour la migration des données entre la source Milvus et la cible Milvus.
Fusionner et importer les données de plusieurs collections ou partitions dans Milvus source dans une nouvelle collection dans Milvus cible.
Sauvegarde et récupération des données Milvus.
Le projet MilvusDM est en open source sur Github. Toutes les contributions au projet sont les bienvenues. Donnez-lui une étoile 🌟, et n'hésitez pas à déposer un problème ou à soumettre votre propre code !
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word