🚀 Essayez Zilliz Cloud, la version entièrement gérée de Milvus, gratuitement—découvrez des performances 10x plus rapides ! Essayez maintenant>>

milvus-logo
LFAI
  • Home
  • Blog
  • Présentation de l'outil de migration de données Milvus

Présentation de l'outil de migration de données Milvus

  • Engineering
March 15, 2021
Zilliz

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 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 ou data_dir. Ne définissez pas les deux. Utilisez data_path pour spécifier plusieurs chemins d'accès aux fichiers ou data_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 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 Started

    Like the article? Spread the word

    Continuer à Lire