Penyimpanan V3Compatible with Milvus 3.0.x

Gambaran Umum

Kumpulan data AI sering kali berkembang setelah koleksi dibuat. Seiring perubahan model dan alur kerja, tim mungkin perlu menambahkan teks, menghasilkan bidang vektor baru untuk entitas yang sudah ada, atau menggunakan data yang disimpan di luar Milvus. Untuk mendukung alur kerja ini, diperlukan model penyimpanan yang dapat berkembang seiring dengan kumpulan data.

Storage V3 menyediakan model ini di Milvus 3.0. Fitur ini menggunakan tata letak penyimpanan berversi untuk mengintegrasikan data yang ditambahkan atau ditulis ulang seiring waktu, sementara aplikasi tetap mengakses koleksi melalui API Milvus yang sama.

Penyimpanan V3 dinonaktifkan secara default. Setelah " common.storage.useLoonFFI " berlaku, penulisan baru dan hasil pemadatan akan menggunakan Penyimpanan V3. Data yang sudah ada tetap berada dalam tata letak saat ini hingga data yang memenuhi syarat ditulis ulang oleh pemadatan latar belakang. Milvus dapat membaca kedua tata letak tersebut selama masa transisi ini. Aktifkan Penyimpanan V3 untuk menggunakan fitur-fitur yang bergantung padanya, bukan sebagai optimasi kinerja umum.

Format data di Storage V3

Storage V3 menggunakan manifest untuk mendeskripsikan data koleksi secara terpisah dari format data yang mendasarinya. Hal ini memungkinkan lapisan penyimpanan yang sama bekerja dengan data yang dikelola oleh Milvus dan data yang tetap berada di sistem eksternal.

Format file koleksi yang dikelola

Untuk koleksi yang dikelola, " dataNode.storage.format " memilih format file untuk data Storage V3 baru. Pengaturan ini mendukung nilai-nilai berikut:

FormatDeskripsi
parquetFormat file kolom default yang banyak digunakan dengan kompatibilitas ekosistem yang luas dan alat yang matang. Parquet mengatur data ke dalam kelompok baris dan mendukung pengkodean serta kompresi per kolom, sehingga Milvus hanya dapat membaca kolom yang diperlukan dan memproses pemindaian berurutan dalam skala besar secara efisien.
vortexFormat file kolom generasi berikutnya yang opsional, dibangun di atas pengkodean yang dapat diperluas dan disusun, serta statistik yang kaya. Di Milvus, Vortex mendukung proyeksi kolom, pembacaan rentang, dan pembacaan akses acak. Kemampuan ini dapat mengurangi pembacaan data yang tidak perlu untuk beban kerja yang sesuai.

Mengubah " dataNode.storage.format " akan memengaruhi penulisan baru ke Storage V3. File yang sudah ada akan mempertahankan format saat ini hingga proses kompaksi menulis ulang segmen yang bersangkutan. Sebagian besar implementasi sebaiknya mempertahankan format default " parquet " kecuali jika benchmark yang representatif menunjukkan bahwa " vortex " lebih sesuai dengan data dan pola akses mereka.

Koleksi eksternal dan format sumber yang didukung

Koleksi eksternal memungkinkan Milvus menggunakan data yang disimpan dalam file atau tabel eksternal. Storage V3 mendukung format sumber eksternal berikut:

FormatKategoriSumber yang diharapkanDukungan Storage V3
parquetFormat berkasSebuah direktori atau awalan penyimpanan objek yang berisi berkas Parquet.Mendeteksi berkas-berkas tersebut, membaca metadata dan grup barisnya, serta mencatatnya dalam manifes Storage V3.
vortexFormat berkasSebuah direktori atau awalan penyimpanan objek yang berisi berkas Vortex.Menemukan file-file tersebut dan menggunakan tata letak serta statistik Vortex untuk proyeksi, pembacaan rentang, dan pembacaan akses acak.
lance-tableFormat tabelSebuah direktori dataset Lance.Membaca metadata dataset dan memetakan fragmen-fragmennya ke dalam manifest Storage V3.
iceberg-tableFormat tabelFile JSON metadata Iceberg dan ID snapshot.Menyelesaikan snapshot yang ditentukan, merencanakan berkas datanya, dan mempertahankan metadata penghapusan berdasarkan posisi. Penghapusan berdasarkan kesetaraan tidak didukung dan harus dikonversi menjadi penghapusan berdasarkan posisi sebelum koleksi eksternal diperbarui.

Sumber eksternal bersifat read-only. Storage V3 membuat dan menyegarkan manifestnya sendiri tanpa memodifikasi atau menyalin data sumber. Milvus kemudian dapat membuat indeks serta menjalankan pencarian dan kueri atas data tersebut melalui koleksi eksternal.

Penyimpanan awan dan otentikasi lintas akun

Tabel berikut hanya menjelaskan bagaimana koleksi eksternal mengakses data sumber yang disimpan di akun cloud lain. Tabel ini tidak menjelaskan penyimpanan objek yang digunakan untuk data yang dikelola Milvus.

Penyimpanan awanFormat eksternal yang didukungOtentikasi lintas akun untuk koleksi eksternal
Amazon S3Keempat format yang tercantum di atas.Tentukan ARN peran IAM milik pelanggan. Storage V3 menggunakan AWS STS AssumeRole untuk mendapatkan kredensial sementara dan memperbaruinya sesuai kebutuhan. Anda juga dapat memberikan ID eksternal jika diwajibkan oleh kebijakan kepercayaan peran tersebut.
Google Cloud Storage (GCS)Keempat format yang tercantum di atas.Tentukan akun layanan tujuan. Storage V3 menyamar sebagai akun layanan tersebut, menggunakan token akses OAuth berumur pendek miliknya untuk mengakses bucket sumber, dan memperbarui token tersebut sebelum kedaluwarsa.
Azure Blob Storageparquet, vortex, dan lance-table. iceberg-table tidak didukung.Milvus meminta kredensial SAS berumur pendek melalui layanan gRPC pribadi milvus-tools. Storage V3 menggunakan kredensial SAS tersebut untuk mengakses kontainer sumber, dan kredensial tersebut diperbarui sebelum kedaluwarsa.
Azure Data Lake Storage Gen2 (ADLS Gen2)Keempat format yang tercantum di atas.Milvus meminta kredensial SAS berumur pendek melalui layanan gRPC pribadi milvus-tools. Storage V3 menggunakan kredensial SAS tersebut untuk mengakses kontainer sumber, dan kredensial tersebut diperbarui sebelum kedaluwarsa.
Layanan Penyimpanan Objek Alibaba Cloud (OSS)Keempat format yang tercantum di atas.Tentukan ARN peran RAM milik pelanggan. Storage V3 mengambil alih peran tersebut menggunakan identitas beban kerja runtime atau peran RAM ECS, kemudian menggunakan kredensial sementara untuk mengakses bucket sumber.

Untuk konfigurasi koleksi eksternal dan petunjuk penggunaan, lihat Membuat Koleksi Eksternal.

Fitur yang memerlukan Storage V3

FiturDeskripsiKonfigurasi yang diperlukan
Format file VortexMenulis data koleksi terkelola baru dalam format file Vortex.
TEXT fieldSimpan teks sumber yang panjang, seperti bagian teks, dokumen, tiket, atau log, tanpa menetapkan panjang maksimum tetap dalam skema koleksi.common.storage.useLoonFFI=true
Bidang vektor yang dihasilkan oleh fungsiTambahkan Fungsi BM25 atau MinHash ke koleksi yang sudah ada sehingga Milvus menghasilkan bidang vektor baru dari bidang " VARCHAR " yang sudah ada. Milvus mengisi nilai yang dihasilkan untuk entitas yang sudah ada secara asinkron melalui kompresi latar belakang.
Koleksi eksternalLakukan kueri terhadap data yang disimpan di luar Milvus tanpa menyalinnya ke dalam koleksi yang dikelola. Perbarui koleksi eksternal saat data sumber berubah. Untuk menampilkan bidang sumber tambahan, lihat Mengubah Skema Koleksi Eksternal.common.storage.useLoonFFI=true

Sebelum Anda mengaktifkan Storage V3

Setelah Milvus menulis data di Storage V3, penurunan versi ke versi Milvus yang tidak dapat membaca Storage V3 tidak didukung. Menonaktifkan Storage V3 di kemudian hari tidak akan segera mengonversi semua data Storage V3 yang ada atau memulihkan kompatibilitas dengan versi yang lebih lama.

Sebelum mengaktifkan Storage V3, pertimbangkan perilaku data berikut:

  • Karena " dataCoord.compaction.storageVersion.enabled " diaktifkan secara default, data yang memenuhi syarat dapat beralih ke Storage V3 secara bertahap melalui proses kompaksi latar belakang.
  • Menonaktifkan Storage V3 mengubah versi penyimpanan target untuk penulisan di masa mendatang dan hasil pemadatan yang memenuhi syarat. Hal ini tidak secara sinkron mengonversi semua data Storage V3 yang ada atau membuat penurunan versi menjadi aman.

Aktifkan Storage V3

Atur ` common.storage.useLoonFFI ` menjadi ` true ` dalam konfigurasi Milvus Anda:

common:
  storage:
    useLoonFFI: true

Milvus memperlakukan pengaturan ini sebagai pengaturan yang dapat diperbarui. Terapkan perubahan melalui alur kerja pembaruan konfigurasi yang didukung oleh penyebaran Anda. Mengedit file konfigurasi statis saja tidak menjamin bahwa penyebaran yang sedang berjalan telah menerima nilai baru tersebut.

Jika Anda berencana menambahkan Fungsi dan bidang vektor yang dihasilkannya ke koleksi yang sudah ada, aktifkan juga dua pengaturan pemadatan yang diperlukan untuk pengisian data yang sudah ada:

dataCoord:
  compaction:
    bumpSchemaVersion:
      enabled: true
    storageVersion:
      enabled: true

Output Fungsi untuk entitas yang sudah ada dihasilkan secara asinkron melalui pemadatan latar belakang. Pembaruan skema yang berhasil tidak menandakan bahwa pengisian ulang telah selesai untuk setiap entitas yang sudah ada.