🚀 Coba Zilliz Cloud, Milvus yang sepenuhnya terkelola, secara gratis—rasakan performa 10x lebih cepat! Coba Sekarang>>

milvus-logo
LFAI
  • Home
  • Blog
  • Memperkenalkan Alat Migrasi Data Milvus

Memperkenalkan Alat Migrasi Data Milvus

  • Engineering
March 15, 2021
Zilliz

Catatan Penting: Alat Migrasi Data Mivus sudah tidak digunakan lagi. Untuk migrasi data dari database lain ke Milvus, kami sarankan Anda menggunakan Alat Migrasi Milvus yang lebih canggih.

Alat migrasi Milvus saat ini mendukung:

  • Elasticsearch ke Milvus 2.x
  • Faiss ke Milvus 2.x
  • Milvus 1.x ke Milvus 2.x
  • Milvus 2.3.x ke Milvus 2.3.x atau yang lebih baru

Kami akan mendukung migrasi dari lebih banyak sumber data vektor seperti Pinecone, Chroma, dan Qdrant. Tetap ikuti perkembangannya.

Untuk informasi lebih lanjut, lihat dokumentasi migrasi Milvus atau repositori GitHub.

--------------------------------- Alat Migrasi Data Mivus telah tidak digunakan lagi ----------------------

Gambaran Umum

MilvusDM (Milvus Data Migration) adalah sebuah alat sumber terbuka yang dirancang khusus untuk mengimpor dan mengekspor file data dengan Milvus. MilvusDM dapat sangat meningkatkan efisiensi pengelolaan data dan mengurangi biaya DevOps dengan cara-cara berikut:

milvusdm blog 1.png milvusdm blog 1.png

MilvusDM dihosting di Github dan dapat dengan mudah diinstal dengan menjalankan baris perintah pip3 install pymilvusdm. MilvusDM memungkinkan Anda untuk memigrasikan data pada koleksi atau partisi tertentu. Pada bagian berikut, kami akan menjelaskan cara menggunakan setiap jenis migrasi data.


Faiss ke Milvus

Langkah-langkah

1. Unduh F2M.yaml:

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

2. Tetapkan parameter berikut ini:

  • data_path: Jalur data (vektor dan ID yang sesuai) di Faiss.

  • dest_host: Alamat server Milvus.

  • dest_port: Port server Milvus.

  • mode: Data dapat diimpor ke Milvus dengan menggunakan mode-mode berikut:

    • Lewati: Abaikan data jika koleksi atau partisi sudah ada.

    • Tambahkan: Menambahkan data jika koleksi atau partisi sudah ada.

    • Timpa: Menghapus data sebelum disisipkan jika koleksi atau partisi sudah ada.

  • dest_collection_name: Nama koleksi penerima untuk impor data.

  • dest_partition_name: Nama partisi penerima untuk impor data.

  • collection_parameter: Informasi spesifik koleksi seperti dimensi vektor, ukuran file indeks, dan metrik jarak.

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

$ milvusdm --yaml F2M.yaml

Contoh Kode

1. Baca file Faiss untuk mengambil vektor dan ID yang sesuai.

ids, vectors = faiss_data.read_faiss_data()

2. Masukkan data yang diambil ke dalam Milvus:

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


HDF5 ke Milvus

Langkah-langkah

1. Unduh H2M.yaml.

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

2. Tetapkan parameter berikut:

  • data_path: Jalur ke file HDF5.

  • data_dir: Direktori yang menyimpan file HDF5.

  • dest_host: Alamat server Milvus.

  • dest_port: Port server Milvus.

  • mode: Data dapat diimpor ke Milvus dengan menggunakan mode-mode berikut:

    • Lewati: Abaikan data jika koleksi atau partisi sudah ada.

    • Tambahkan: Menambahkan data jika koleksi atau partisi sudah ada.

    • Timpa: Menghapus data sebelum disisipkan jika koleksi atau partisi sudah ada.

  • dest_collection_name: Nama koleksi penerima untuk impor data.

  • dest_partition_name: Nama partisi penerima untuk impor data.

  • collection_parameter: Informasi spesifik koleksi seperti dimensi vektor, ukuran file indeks, dan metrik jarak.

Tetapkan salah satu dari data_path atau data_dir. Jangan mengatur keduanya. Gunakan data_path untuk menentukan beberapa jalur file, atau data_dir untuk menentukan direktori yang menyimpan file data Anda.

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

$ milvusdm --yaml H2M.yaml

Contoh Kode

1. Baca file HDF5 untuk mengambil vektor dan ID yang sesuai:

vectors, ids = self.file.read_hdf5_data()

2. Masukkan data yang diambil ke dalam Milvus:

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


Milvus ke Milvus

Langkah-langkah

1. Unduh M2M.yaml.

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

2. Tetapkan parameter berikut:

  • source_milvus_path: Sumber jalur kerja Milvus.

  • mysql_parameter: Pengaturan MySQL Sumber Milvus. Jika MySQL tidak digunakan, atur mysql_parameter sebagai ''.

  • source_collection: Nama-nama koleksi dan partisi-partisinya dalam Milvus sumber.

  • dest_host: Alamat server Milvus.

  • dest_port: Port server Milvus.

  • mode: Data dapat diimpor ke Milvus dengan menggunakan mode-mode berikut:

    • Lewati: Abaikan data jika koleksi atau partisi sudah ada.

    • Tambahkan: Menambahkan data jika koleksi atau partisi sudah ada.

    • Menimpa: Hapus data sebelum penyisipan jika koleksi atau partisi sudah ada, hapus data sebelum penyisipan jika koleksi atau partisi sudah ada.

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

$ milvusdm --yaml M2M.yaml

Contoh Kode

1. Menurut metadata koleksi atau partisi yang ditentukan, baca file di bawah milvus/db di drive lokal Anda untuk mengambil vektor dan ID yang sesuai dari sumber 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. Masukkan data yang diambil ke dalam Milvus target.

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


Milvus ke HDF5

Langkah-langkah

1. Unduh M2H.yaml:

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

2. Atur parameter berikut:

  • source_milvus_path: Sumber jalur kerja Milvus.

  • mysql_parameter: Pengaturan MySQL Sumber Milvus. Jika MySQL tidak digunakan, atur mysql_parameter sebagai ''.

  • source_collection: Nama-nama koleksi dan partisi-partisinya dalam Milvus sumber.

  • data_dir: Direktori untuk menyimpan file HDF5 yang disimpan.

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

$ milvusdm --yaml M2H.yaml

Contoh Kode

1. Menurut metadata koleksi atau partisi tertentu, baca file di bawah milvus/db di drive lokal Anda untuk mengambil vektor dan ID yang sesuai.

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. Simpan data yang diambil sebagai file HDF5.

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

Struktur File MilvusDM

Diagram alir di bawah ini menunjukkan bagaimana MilvusDM melakukan tugas yang berbeda sesuai dengan file YAML yang diterimanya:

milvusdm blog 2.png milvusdm blog 2.png

Struktur file MilvusDM:

  • pymilvusdm

    • inti

      • milvus_client.py: Melakukan operasi klien di Milvus.

      • read_data.py: Membaca berkas data HDF5 pada drive lokal Anda. (Tambahkan kode Anda di sini untuk mendukung pembacaan file data dalam format lain).

      • read_faiss_data.py: Membaca file data dalam Faiss.

      • read_milvus_data.py: Membaca file data dalam Milvus.

      • read_milvus_meta.py: Membaca metadata di Milvus.

      • data_to_milvus.py: Membuat koleksi atau partisi berdasarkan parameter dalam file YAML dan mengimpor vektor dan ID vektor yang sesuai ke dalam Milvus.

      • save_data.py: Menyimpan data sebagai file HDF5.

      • write_logs.py: Menulis log selama runtime.

    • faiss_to_milvus.py: Mengimpor data dari Faiss ke Milvus.

    • hdf5_to_milvus.py: Mengimpor data dalam file HDF5 ke dalam Milvus.

    • milvus_to_milvus.py: Memindahkan data dari Milvus sumber ke Milvus target.

    • milvus_to_hdf5.py: Mengekspor data dalam Milvus dan menyimpannya sebagai file HDF5.

    • main.py: Melakukan tugas-tugas yang sesuai dengan file YAML yang diterima.

    • setting.py: Konfigurasi yang berkaitan dengan menjalankan kode MilvusDM.

  • setup.py: Membuat paket file pymilvusdm dan mengunggahnya ke PyPI (Python Package Index).


Rekap

MilvusDM terutama menangani migrasi data masuk dan keluar dari Milvus, yang meliputi Faiss ke Milvus, HDF5 ke Milvus, Milvus ke Milvus, dan Milvus ke HDF5.

Fitur-fitur berikut ini direncanakan untuk rilis yang akan datang:

  • Mengimpor data biner dari Faiss ke Milvus.

  • Daftar blokir dan daftar izin untuk migrasi data antara Milvus sumber dan Milvus target.

  • Menggabungkan dan mengimpor data dari beberapa koleksi atau partisi di Milvus sumber ke dalam koleksi baru di Milvus target.

  • Pencadangan dan pemulihan data Milvus.

Proyek MilvusDM bersumber terbuka di Github. Setiap dan semua kontribusi untuk proyek ini dipersilakan. Berikan bintang 🌟, dan jangan ragu untuk mengajukan masalah atau mengirimkan kode Anda sendiri!

    Try Managed Milvus for Free

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

    Get Started

    Like the article? Spread the word

    Terus Baca