Cara Memigrasi Data Anda ke Milvus dengan Mudah: Panduan Komprehensif
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 ElasticsearchDukungan 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
- 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.
- 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
.
- 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.
- 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.
Antarmuka Attu
Migrasi dari Milvus 1.x ke Milvus 2.x
- 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 filemeta.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.
- 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
.
- 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.
- 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
- 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.
- 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
.
- 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.
- 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.
- Milvus Migration, alat bantu migrasi data yang canggih
- Migrasi dari Elasticsearch ke Milvus 2.x
- Migrasi dari Milvus 1.x ke Milvus 2.x
- Migrasi dari FAISS ke Milvus 2.x
- Nantikan rencana migrasi di masa mendatang
- Kesimpulan
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word