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

milvus-logo
LFAI
  • Home
  • Blog
  • Cara Memigrasi Data Anda ke Milvus dengan Mudah: Panduan Komprehensif

Cara Memigrasi Data Anda ke Milvus dengan Mudah: Panduan Komprehensif

  • Engineering
December 01, 2023
Wenhui Zhang

Milvus adalah basis data vektor sumber terbuka yang tangguh untuk pencarian kemiripan yang dapat menyimpan, memproses, dan mengambil miliaran bahkan triliunan data vektor dengan latensi minimal. Milvus juga sangat terukur, dapat diandalkan, cloud-native, dan kaya akan fitur. Rilis terbaru Milvus memperkenalkan fitur dan peningkatan yang lebih menarik, termasuk dukungan GPU untuk kinerja lebih dari 10x lebih cepat dan MMap untuk kapasitas penyimpanan yang lebih besar pada satu mesin.

Pada September 2023, Milvus telah mendapatkan hampir 23.000 bintang di GitHub dan memiliki puluhan ribu pengguna dari berbagai industri dengan kebutuhan yang berbeda-beda. Milvus menjadi semakin populer karena teknologi AI Generatif seperti ChatGPT menjadi semakin umum. Ini adalah komponen penting dari berbagai tumpukan AI, terutama kerangka kerja generasi augmented retrieval, yang mengatasi masalah halusinasi model bahasa yang besar.

Untuk memenuhi permintaan yang terus meningkat dari pengguna baru yang ingin bermigrasi ke Milvus dan pengguna lama yang ingin meningkatkan ke versi Milvus terbaru, kami mengembangkan Migrasi Milvus. Dalam blog ini, kami akan mengeksplorasi fitur-fitur dari Milvus Migration dan memandu Anda untuk memindahkan data Anda dengan cepat ke Milvus dari Milvus 1.x, FAISS, dan Elasticsearch 7.0 dan seterusnya.

Milvus Migration, alat bantu migrasi data yang canggih

Milvus Migration adalah alat migrasi data yang ditulis dalam bahasa Go. Alat ini memungkinkan pengguna untuk memindahkan data mereka dengan lancar dari versi lama Milvus (1.x), FAISS, dan Elasticsearch 7.0 dan seterusnya ke versi Milvus 2.x.

Diagram di bawah ini menunjukkan bagaimana kami membangun Milvus Migration dan bagaimana cara kerjanya.

Bagaimana Milvus Migration memigrasikan data

Dari Milvus 1.x dan FAISS ke Milvus 2.x

Migrasi data dari Milvus 1.x dan FAISS melibatkan penguraian konten dari file data asli, mengubahnya ke dalam format penyimpanan data Milvus 2.x, dan menulis data menggunakan Milvus SDK's bulkInsert. Seluruh proses ini berbasis stream, secara teoritis hanya dibatasi oleh ruang disk, dan menyimpan file data pada disk lokal Anda, S3, OSS, GCP, atau Minio.

Dari Elasticsearch ke Milvus 2.x

Pada migrasi data Elasticsearch, pengambilan data berbeda. Data tidak diperoleh dari file, tetapi diambil secara berurutan menggunakan API gulir Elasticsearch. Data kemudian diurai dan ditransformasikan ke dalam format penyimpanan Milvus 2.x, diikuti dengan menuliskannya menggunakan bulkInsert. Selain memigrasikan vektor tipe dense_vector yang tersimpan di Elasticsearch, Milvus Migration juga mendukung pemindahan tipe field lainnya, termasuk long, integer, short, boolean, keyword, text, dan double.

Kumpulan fitur Milvus Migration

Milvus Migration menyederhanakan proses migrasi melalui serangkaian fitur yang kuat:

  • Sumber Data yang Didukung:

    • Milvus 1.x ke Milvus 2.x

    • Elasticsearch 7.0 dan seterusnya ke Milvus 2.x

    • FAISS ke Milvus 2.x

  • Beberapa Mode Interaksi:

    • Antarmuka baris perintah (CLI) menggunakan kerangka kerja Cobra

    • Restful API dengan UI Swagger bawaan

    • Integrasi sebagai modul Go di alat lain

  • Dukungan Format File Serbaguna:

    • File lokal

    • Amazon S3

    • Layanan Penyimpanan Objek (Object Storage Service (OSS))

    • Google Cloud Platform (GCP)

  • Integrasi Elasticsearch yang fleksibel:

    • Migrasi vektor tipe dense_vector dari Elasticsearch

    • Dukungan untuk migrasi tipe field lain seperti panjang, integer, pendek, boolean, kata kunci, teks, dan ganda

Definisi antarmuka

Milvus Migration menyediakan antarmuka-antarmuka utama berikut ini:

  • /start: Memulai pekerjaan migrasi (setara dengan kombinasi dump dan load, saat ini hanya mendukung migrasi ES).

  • /dump: Memulai pekerjaan dump (menulis data sumber ke dalam media penyimpanan target).

  • /load: Memulai pekerjaan load (menulis data dari media penyimpanan target ke dalam Milvus 2.x).

  • /get_job: Memungkinkan pengguna untuk melihat hasil eksekusi job. (Untuk lebih jelasnya, lihat server.go proyek)

Selanjutnya, mari kita gunakan beberapa contoh data untuk mengeksplorasi bagaimana cara menggunakan Milvus Migration pada bagian ini. Anda dapat menemukan contoh-contoh ini di sini di GitHub.

Migrasi dari Elasticsearch ke Milvus 2.x

  1. Menyiapkan Data Elasticsearch

Untuk memigrasikan data Elasticsearch, Anda harus sudah menyiapkan server Elasticsearch Anda sendiri. Anda harus menyimpan data vektor di bidang dense_vector dan mengindeksnya dengan bidang lain. Pemetaan indeks seperti yang ditunjukkan di bawah ini.

  1. Mengkompilasi dan Membangun

Pertama, unduh kode sumber Milvus Migration dari GitHub. Kemudian, jalankan perintah berikut untuk mengkompilasinya.

go get
go build

Langkah ini akan menghasilkan file yang dapat dieksekusi dengan nama milvus-migration.

  1. Konfigurasi migration.yaml

Sebelum memulai migrasi, Anda harus menyiapkan file konfigurasi bernama migration.yaml yang berisi informasi tentang sumber data, target, dan pengaturan lain yang relevan. Berikut adalah contoh konfigurasi:

# Configuration for Elasticsearch to Milvus 2.x migration


dumper:
  worker:
    workMode: Elasticsearch
    reader:
      bufferSize: 2500
meta:
  mode: config
  index: test_index
  fields:
    - name: id
      pk: true
      type: long
    - name: other_field
      maxLen: 60
      type: keyword
    - name: data
      type: dense_vector
      dims: 512
  milvus:
      collection: "rename_index_test"
      closeDynamicField: false
      consistencyLevel: Eventually
      shardNum: 1


source:
  es:
    urls:
      - http://localhost:9200
    username: xxx
    password: xxx


target:
  mode: remote
  remote:
    outputDir: outputPath/migration/test1
    cloud: aws
    region: us-west-2
    bucket: xxx
    useIAM: true
    checkBucket: false
  milvus2x:
    endpoint: {yourMilvusAddress}:{port}
    username: ******
    password: ******

Untuk penjelasan lebih rinci tentang file konfigurasi, lihat halaman ini di GitHub.

  1. Jalankan pekerjaan migrasi

Setelah Anda mengonfigurasi berkas migration.yaml, Anda dapat memulai tugas migrasi dengan menjalankan perintah berikut:

./milvus-migration start --config=/{YourConfigFilePath}/migration.yaml

Amati keluaran log. Jika Anda melihat log yang mirip dengan yang berikut ini, berarti migrasi berhasil.

[task/load_base_task.go:94] ["[LoadTasker] Dec Task Processing-------------->"] [Count=0] [fileName=testfiles/output/zwh/migration/test_mul_field4/data_1_1.json] [taskId=442665677354739304][task/load_base_task.go:76] ["[LoadTasker] Progress Task --------------->"] [fileName=testfiles/output/zwh/migration/test_mul_field4/data_1_1.json] [taskId=442665677354739304][dbclient/cus_field_milvus2x.go:86] ["[Milvus2x] begin to ShowCollectionRows"][loader/cus_milvus2x_loader.go:66] ["[Loader] Static: "] [collection=test_mul_field4_rename1] [beforeCount=50000] [afterCount=100000] [increase=50000][loader/cus_milvus2x_loader.go:66] ["[Loader] Static Total"] ["Total Collections"=1] [beforeTotalCount=50000] [afterTotalCount=100000] [totalIncrease=50000][migration/es_starter.go:25] ["[Starter] migration ES to Milvus finish!!!"] [Cost=80.009174459][starter/starter.go:106] ["[Starter] Migration Success!"] [Cost=80.00928425][cleaner/remote_cleaner.go:27] ["[Remote Cleaner] Begin to clean files"] [bucket=a-bucket] [rootPath=testfiles/output/zwh/migration][cmd/start.go:32] ["[Cleaner] clean file success!"]

Selain pendekatan baris perintah, Milvus Migration juga mendukung migrasi menggunakan Restful API.

Untuk menggunakan Restful API, jalankan server API menggunakan perintah berikut:

./milvus-migration server run -p 8080

Setelah layanan berjalan, Anda dapat memulai migrasi dengan memanggil API.

curl -XPOST http://localhost:8080/api/v1/start

Setelah migrasi selesai, Anda dapat menggunakan Attu, alat administrasi basis data vektor lengkap, untuk melihat jumlah total baris yang berhasil dimigrasikan dan melakukan operasi terkait koleksi lainnya.

The Attu interface Antarmuka Attu

Migrasi dari Milvus 1.x ke Milvus 2.x

  1. Mempersiapkan Data Milvus 1.x

Untuk membantu Anda merasakan proses migrasi dengan cepat, kami telah menempatkan 10.000 data uji Milvus 1.x di dalam kode sumber Milvus Migration. Namun, pada kasus nyata, Anda harus mengekspor file meta.json Anda sendiri dari instance Milvus 1.x sebelum memulai proses migrasi.

  • Anda dapat mengekspor data dengan perintah berikut.
./milvus-migration export -m "user:password@tcp(adderss)/milvus?charset=utf8mb4&parseTime=True&loc=Local" -o outputDir

Pastikan untuk:

  • Mengganti placeholder dengan kredensial MySQL Anda yang sebenarnya.

  • Menghentikan server Milvus 1.x atau menghentikan penulisan data sebelum melakukan ekspor ini.

  • Salin folder Milvus tables dan file meta.json ke direktori yang sama.

Catatan: Jika Anda menggunakan Milvus 2.x pada Zilliz Cloud (layanan yang dikelola sepenuhnya oleh Milvus), Anda dapat memulai migrasi menggunakan Cloud Console.

  1. Mengkompilasi dan Membangun

Pertama, unduh kode sumber Migrasi Milvus dari GitHub. Kemudian, jalankan perintah berikut untuk mengompilasinya.

go get
go build

Langkah ini akan menghasilkan file yang dapat dieksekusi dengan nama milvus-migration.

  1. Konfigurasi migration.yaml

Siapkan berkas konfigurasi migration.yaml, dengan menentukan detail tentang sumber, target, dan pengaturan lain yang relevan. Berikut adalah contoh konfigurasi:

# Configuration for Milvus 1.x to Milvus 2.x migration


dumper:
  worker:
    limit: 2
    workMode: milvus1x
    reader:
      bufferSize: 1024
    writer:
      bufferSize: 1024
loader:
  worker:
    limit: 16
meta:
  mode: local
  localFile: /outputDir/test/meta.json


source:
  mode: local
  local:
    tablesDir: /db/tables/


target:
  mode: remote
  remote:
    outputDir: "migration/test/xx"
    ak: xxxx
    sk: xxxx
    cloud: aws
    endpoint: 0.0.0.0:9000
    region: ap-southeast-1
    bucket: a-bucket
    useIAM: false
    useSSL: false
    checkBucket: true
  milvus2x:
    endpoint: localhost:19530
    username: xxxxx
    password: xxxxx

Untuk penjelasan lebih rinci tentang file konfigurasi, lihat halaman ini di GitHub.

  1. Jalankan Pekerjaan Migrasi

Anda harus menjalankan perintah dump dan load secara terpisah untuk menyelesaikan migrasi. Perintah-perintah ini akan mengonversi data dan mengimpornya ke dalam Milvus 2.x.

Catatan: Kami akan menyederhanakan langkah ini dan memungkinkan pengguna untuk menyelesaikan migrasi hanya dengan menggunakan satu perintah dalam waktu dekat. Tetap disini.

Perintah Buang:

./milvus-migration dump --config=/{YourConfigFilePath}/migration.yaml

Perintah Muat:

./milvus-migration load --config=/{YourConfigFilePath}/migration.yaml

Setelah migrasi, koleksi yang dihasilkan di Milvus 2.x akan berisi dua bidang: id dan data. Anda dapat melihat detail lebih lanjut menggunakan Attu, alat administrasi basis data vektor yang lengkap.

Migrasi dari FAISS ke Milvus 2.x

  1. Mempersiapkan Data FAISS

Untuk memigrasikan data Elasticsearch, Anda harus menyiapkan data FAISS Anda sendiri. Untuk membantu Anda dengan cepat mengalami proses migrasi, kami telah menempatkan beberapa data uji FAISS dalam kode sumber Milvus Migration.

  1. Mengkompilasi dan Membangun

Pertama, unduh kode sumber Milvus Migration dari GitHub. Kemudian, jalankan perintah berikut untuk mengkompilasinya.

go get
go build

Langkah ini akan menghasilkan file yang dapat dieksekusi dengan nama milvus-migration.

  1. Konfigurasi migration.yaml

Siapkan file konfigurasi migration.yaml untuk migrasi FAISS, dengan menentukan detail tentang sumber, target, dan pengaturan lain yang relevan. Berikut adalah contoh konfigurasi:

# Configuration for FAISS to Milvus 2.x migration


dumper:
  worker:
    limit: 2
    workMode: FAISS
    reader:
      bufferSize: 1024
    writer:
      bufferSize: 1024
loader:
  worker:
    limit: 2
source:
  mode: local
  local:
    FAISSFile: ./testfiles/FAISS/FAISS_ivf_flat.index


target:
  create:
    collection:
      name: test1w
      shardsNums: 2
      dim: 256
      metricType: L2
  mode: remote
  remote:
    outputDir: testfiles/output/
    cloud: aws
    endpoint: 0.0.0.0:9000
    region: ap-southeast-1
    bucket: a-bucket
    ak: minioadmin
    sk: minioadmin
    useIAM: false
    useSSL: false
    checkBucket: true
  milvus2x:
    endpoint: localhost:19530
    username: xxxxx
    password: xxxxx

Untuk penjelasan lebih rinci tentang file konfigurasi, lihat halaman ini di GitHub.

  1. Menjalankan Pekerjaan Migrasi

Seperti migrasi Milvus 1.x ke Milvus 2.x, migrasi FAISS membutuhkan eksekusi perintah dump dan load. Perintah-perintah ini mengkonversi data dan mengimpornya ke dalam Milvus 2.x.

Catatan: Kami akan menyederhanakan langkah ini dan memungkinkan pengguna untuk menyelesaikan migrasi hanya dengan menggunakan satu perintah dalam waktu dekat. Tetap disini.

Perintah Buang:

./milvus-migration dump --config=/{YourConfigFilePath}/migration.yaml

Perintah Muat:

./milvus-migration load --config=/{YourConfigFilePath}/migration.yaml

Anda dapat melihat detail lebih lanjut menggunakan Attu, sebuah alat administrasi basis data vektor yang lengkap.

Nantikan rencana migrasi di masa mendatang

Di masa mendatang, kami akan mendukung migrasi dari lebih banyak sumber data dan menambahkan lebih banyak fitur migrasi, termasuk:

  • Mendukung migrasi dari Redis ke Milvus.

  • Mendukung migrasi dari MongoDB ke Milvus.

  • Mendukung migrasi yang dapat dilanjutkan.

  • Menyederhanakan perintah migrasi dengan menggabungkan proses pembuangan dan pemuatan menjadi satu.

  • Mendukung migrasi dari sumber data utama lainnya ke Milvus.

Kesimpulan

Milvus 2.3, rilis terbaru dari Milvus, menghadirkan fitur-fitur baru yang menarik dan peningkatan kinerja yang memenuhi kebutuhan manajemen data yang terus berkembang. Memigrasi data Anda ke Milvus 2.x dapat membuka manfaat-manfaat ini, dan proyek Migrasi Milvus membuat proses migrasi menjadi efisien dan mudah. Cobalah, dan Anda tidak akan kecewa.

Catatan: Informasi dalam blog ini didasarkan pada kondisi proyek Milvus dan Milvus Migration per September 2023. Periksa dokumentasi resmi Milvus untuk informasi dan instruksi terbaru.

Like the article? Spread the word

Terus Baca