🚀 Prova Zilliz Cloud, la versione completamente gestita di Milvus, gratuitamente—sperimenta prestazioni 10 volte più veloci! Prova Ora>>

milvus-logo
LFAI
  • Home
  • Blog
  • Presentazione dello strumento di migrazione dei dati Milvus

Presentazione dello strumento di migrazione dei dati Milvus

  • Engineering
March 15, 2021
Zilliz

Nota importante: lo strumento di migrazione dei dati Mivus è stato deprecato. Per la migrazione dei dati da altri database a Milvus, si consiglia di utilizzare il più avanzato Milvus-migration Tool.

Lo strumento Milvus-migration supporta attualmente:

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

Supporteremo la migrazione da altre fonti di dati vettoriali come Pinecone, Chroma e Qdrant. Restate sintonizzati.

Per ulteriori informazioni, consultare la documentazione di Milvus-migration o il suo repository GitHub.

--------------------------------- Lo strumento di migrazione dei dati Mivus è stato deprecato ----------------------

Panoramica

MilvusDM (Milvus Data Migration) è uno strumento open-source progettato specificamente per importare ed esportare file di dati con Milvus. MilvusDM può migliorare notevolmente l'efficienza della gestione dei dati e ridurre i costi DevOps nei seguenti modi:

milvusdm blog 1.png blog milvusdm 1.png

MilvusDM è ospitato su Github e può essere facilmente installato eseguendo la riga di comando pip3 install pymilvusdm. MilvusDM consente di migrare i dati in una raccolta o partizione specifica. Nelle sezioni seguenti verrà spiegato come utilizzare ciascun tipo di migrazione dei dati.


Da Faiss a Milvus

Passi

1.Scaricare F2M.yaml:

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

2. Impostare i seguenti parametri:

  • data_path: Percorso dei dati (vettori e ID corrispondenti) in Faiss.

  • dest_host: Indirizzo del server Milvus.

  • dest_port: Porta del server Milvus.

  • mode: I dati possono essere importati in Milvus utilizzando le seguenti modalità:

    • Salta: ignora i dati se la raccolta o la partizione esiste già.

    • Aggiungi: Aggiunge i dati se la raccolta o la partizione esiste già.

    • Sovrascrivi: Cancella i dati prima dell'inserimento se la raccolta o la partizione esiste già.

  • dest_collection_name: Nome della raccolta ricevente per l'importazione dei dati.

  • dest_partition_name: Nome della partizione ricevente per l'importazione dei dati.

  • collection_parameter: Informazioni specifiche della raccolta, come la dimensione del vettore, la dimensione del file indice e la metrica della distanza.

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. Eseguire F2M.yaml:

$ milvusdm --yaml F2M.yaml

Codice di esempio

1.Leggere i file Faiss per recuperare i vettori e gli ID corrispondenti.

ids, vectors = faiss_data.read_faiss_data()

2. Inserire i dati recuperati in Milvus:

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


Da HDF5 a Milvus

Passi

1.Scaricare H2M.yaml.

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

2.Impostare i seguenti parametri:

  • data_path: Percorso dei file HDF5.

  • data_dir: Directory contenente i file HDF5.

  • dest_host: Indirizzo del server Milvus.

  • dest_port: Porta del server Milvus.

  • mode: I dati possono essere importati in Milvus utilizzando le seguenti modalità:

    • Salta: ignora i dati se la raccolta o la partizione esiste già.

    • Aggiungi: Aggiunge i dati se la raccolta o la partizione esiste già.

    • Sovrascrivi: Cancella i dati prima dell'inserimento se la raccolta o la partizione esiste già.

  • dest_collection_name: Nome della raccolta ricevente per l'importazione dei dati.

  • dest_partition_name: Nome della partizione ricevente per l'importazione dei dati.

  • collection_parameter: Informazioni specifiche della raccolta, come la dimensione del vettore, la dimensione del file indice e la metrica della distanza.

Impostare data_path o data_dir. Non impostarli entrambi. Usare data_path per specificare più percorsi di file o data_dir per specificare la directory che contiene il file di dati.

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. Eseguire H2M.yaml:

$ milvusdm --yaml H2M.yaml

Codice di esempio

1.Leggere i file HDF5 per recuperare i vettori e gli ID corrispondenti:

vectors, ids = self.file.read_hdf5_data()

2. Inserire i dati recuperati in Milvus:

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


Da Milvus a Milvus

Passi

1.Scaricare M2M.yaml.

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

2.Impostare i seguenti parametri:

  • source_milvus_path: Percorso di lavoro Milvus di origine.

  • mysql_parameter: Impostazioni MySQL di Milvus. Se non si usa MySQL, impostare mysql_parameter come ''.

  • source_collection: Nomi della collezione e delle sue partizioni nell'origine Milvus.

  • dest_host: Indirizzo del server Milvus.

  • dest_port: Porta del server Milvus.

  • mode: I dati possono essere importati in Milvus utilizzando le seguenti modalità:

    • Salta: ignora i dati se la raccolta o la partizione esiste già.

    • Aggiungi: Aggiunge i dati se la raccolta o la partizione esiste già.

    • Sovrascrivi: Se la raccolta o la partizione esiste già, cancellare i dati prima di inserirli.Cancellare i dati prima dell'inserimento se la raccolta o la partizione esiste già.

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. Eseguire M2M.yaml.

$ milvusdm --yaml M2M.yaml

Codice di esempio

1. In base ai metadati di una raccolta o di una partizione specificata, leggere i file sotto milvus/db sull'unità locale per recuperare i vettori e gli ID corrispondenti dall'origine 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. Inserire i dati recuperati nel Milvus di destinazione.

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


Da Milvus a HDF5

Passi

1.Scaricare M2H.yaml:

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

2.Impostare i seguenti parametri:

  • source_milvus_path: Percorso di lavoro Milvus di origine.

  • mysql_parameter: Impostazioni MySQL di Milvus. Se non si usa MySQL, impostare mysql_parameter come ''.

  • source_collection: Nomi della collezione e delle sue partizioni nell'origine Milvus.

  • data_dir: Directory per contenere i file HDF5 salvati.

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.Eseguire M2H.yaml:

$ milvusdm --yaml M2H.yaml

Codice di esempio

1.In base ai metadati di una collezione o di una partizione specificata, legge i file sotto milvus/db sull'unità locale per recuperare i vettori e gli ID corrispondenti.

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. Salvare i dati recuperati come file HDF5.

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

Struttura dei file di MilvusDM

Il diagramma di flusso sottostante mostra come MilvusDM esegue diversi compiti in base al file YAML ricevuto:

milvusdm blog 2.png milvusdm blog 2.png

Struttura del file MilvusDM:

  • pymilvusdm

    • nucleo

      • milvus_client.py: Esegue operazioni client in Milvus.

      • read_data.py: Legge i file di dati HDF5 sull'unità locale. (Aggiungete qui il vostro codice per supportare la lettura di file di dati in altri formati).

      • read_faiss_data.py: Legge i file di dati in Faiss.

      • read_milvus_data.py: Legge i file di dati in Milvus.

      • read_milvus_meta.py: Legge i metadati in Milvus.

      • data_to_milvus.py: Crea collezioni o partizioni in base ai parametri dei file YAML e importa i vettori e gli ID dei vettori corrispondenti in Milvus.

      • save_data.py: Salva i dati come file HDF5.

      • write_logs.py: Scrive i log durante l'esecuzione.

    • faiss_to_milvus.py: Importa i dati da Faiss a Milvus.

    • hdf5_to_milvus.py: Importa i dati in file HDF5 in Milvus.

    • milvus_to_milvus.py: Migra i dati da un Milvus di origine al Milvus di destinazione.

    • milvus_to_hdf5.py: Esporta i dati in Milvus e li salva come file HDF5.

    • main.py: Esegue i compiti corrispondenti in base al file YAML ricevuto.

    • setting.py: Configurazioni relative all'esecuzione del codice MilvusDM.

  • setup.py: Crea i pacchetti di file pymilvusdm e li carica su PyPI (Python Package Index).


Riconoscimento

MilvusDM gestisce principalmente la migrazione dei dati da e verso Milvus, che comprende Faiss a Milvus, HDF5 a Milvus, Milvus a Milvus e Milvus a HDF5.

Le seguenti funzioni sono previste per le prossime versioni:

  • Importazione di dati binari da Faiss a Milvus.

  • Blocklist e allowlist per la migrazione dei dati tra Milvus di origine e Milvus di destinazione.

  • Unire e importare dati da più collezioni o partizioni in Milvus di origine in una nuova collezione in Milvus di destinazione.

  • Backup e ripristino dei dati Milvus.

Il progetto MilvusDM è open source su Github. Tutti i contributi al progetto sono benvenuti. Dategli una stella 🌟 e sentitevi liberi di segnalare un problema o di inviare il vostro codice!

    Try Managed Milvus for Free

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

    Get Started

    Like the article? Spread the word

    Continua a Leggere