Catatan Rilis
Temukan fitur-fitur baru di Milvus! Halaman ini merangkum fitur-fitur baru, peningkatan, masalah yang diketahui, dan perbaikan bug pada setiap rilis. Kami menyarankan Anda untuk mengunjungi halaman ini secara rutin guna mengetahui pembaruan terbaru.
v3.0.3
Tanggal rilis: 14 Oktober 2026
| Versi Milvus | Versi SDK Python | Versi SDK Node.js | Versi SDK Java | Versi SDK Go |
|---|---|---|---|---|
| 3.0.3 | 3.0.2 | 3.0.6 | 3.0.10 | 3.0.0 |
Kami dengan bangga mengumumkan peluncuran Milvus v3.0.3! Rilis ini menghadirkan Function Chain ke Hybrid Search, pembaruan parsial tingkat elemen untuk bidang Array, Struct, dan JSON, serta penyaringan " IS NULL " pada bidang vektor yang dapat bernilai null, disertai penguatan keamanan dan serangkaian perbaikan stabilitas yang luas; perhatikan perubahan yang memengaruhi kompatibilitas mundur pada rute REST versi 1 (legacy) di port metrik, hak akses impor binlog, dan mode akses default produser Pulsar.
Fitur
- Ditambahkan dukungan Function Chain ke Hybrid Search, yang memungkinkan rantai L2 tingkat atas yang dimulai dengan
mergeuntuk menentukan fusi dan penataan ulang peringkat, serta memungkinkan setiap sub-pencarian menjalankan rantai L0/L1-nya sendiri sebelum fusi (#53541) - Menambahkan dukungan untuk mengganti elemen Array individual, elemen array Struct atau sub-bidangnya, serta jalur JSON dalam pembaruan parsial, tersedia di Go SDK dan REST v2 (#53746)
- Menambahkan dukungan bidang dinamis ke rantai fungsi dalam pencarian dan pencarian hibrida (#54011)
- Menambahkan dukungan untuk ekspresi filter `
IS NULL` dan `IS NOT NULL` pada bidang vektor yang dapat bernilai null, dengan pemeriksaan validitas secara batch untuk evaluasi yang efisien (#54020)
Peningkatan
- Menambahkan otentikasi root opsional untuk titik akhir manajemen pada port metrik (
common.security.adminAuthEnabled, dinonaktifkan secara default) dan menyunting kredensial serta nilai sensitif lainnya dari dump konfigurasi, respons HTTP, dan log (#53499) - Mempertahankan kunci utama entitas yang ada dalam upsert penuh pada koleksi AutoID, hanya menetapkan ID baru ke kunci yang tidak ditemukan; upsert semacam itu kini memerlukan koleksi untuk dimuat (#53511)
- Menambahkan algoritma kompresi gRPC snappy dan s2, membuat codec zstd dapat dikonfigurasi, dan memperkuat dekompresi gRPC terhadap alokasi berukuran berlebihan (#53598)
- Memblokir jalur impor yang mengarah ke direktori penyimpanan internal Milvus dan mewajibkan hak akses baru tingkat kluster `
ImportBinlog` untuk impor binlog (backup=true) dan L0; hal ini akan menghentikan fungsi peran non-admin yang hanya memiliki hak akses tingkat koleksi `Import` hingga mereka diberikan hak akses `ImportBinlog` (#53680) - Penulisan bitset dioptimalkan untuk pencarian indeks yang didukung Tantivy, sehingga penulisan ID dokumen yang berurutan menjadi sekitar 7x lebih cepat dalam microbenchmark (#53700)
- Mengurangi duplikasi payload dan salinan metadata dalam jalur eksekusi kueri C++ (#53756)
- Memunda pemuatan statistik JSON untuk segmen yang disegel hingga penggunaan pertama saat pemanasan dinonaktifkan, sehingga segmen yang statistik JSON-nya tidak pernah diquery tidak lagi menanggung biaya pemuatan (#53888)
- Menambahkan pemeriksaan awal QueryCoord opsional yang memperkirakan kebutuhan memori dan disk lokal sebelum memuat koleksi atau partisi, dengan metrik kebutuhan per grup sumber daya (#53905)
- Mengurangi overhead per-chunk dalam ekspresi filter dan pencarian group-by pada segmen tertutup dengan membaca data melalui snapshot kolom yang disematkan dalam permintaan (#53984)
- Mempercepat decoding protobuf RPC dengan decoder fastPB untuk jalur pencarian, kueri, penyisipan, dan upsert, diaktifkan secara default dan dapat dikontrol melalui
common.enableFastPB(#53995, #54003) - Menghapus rute REST
/api/v1/*lama yang tidak menggunakan garis bawah (termasuk/api/v1/health) dari port metrik dan menambahkanproxy.http.enableV1untuk menonaktifkan API V1 yang tersisa; ini merupakan perubahan yang memengaruhi kompatibilitas mundur, sehingga klien harus beralih ke API REST V2 atau SDK gRPC dan menggunakan/healthzatau/livezuntuk pemeriksaan kesehatan (#54028) - Menyematkan stemmer penganalisis secara terpisah dari Tantivy sehingga penganalisis bawaan dan khusus tetap menghasilkan token yang telah di-stemming yang sama untuk indeks teks yang ada di seluruh peningkatan Tantivy (#54097)
- Mengurangi penundaan dalam mengirimkan hasil segcore asinkron yang telah selesai di bawah beban eksekutor yang berat, sehingga hasil akhir dirilis lebih cepat daripada harus menunggu di belakang pekerjaan yang mengantri (#54127)
Perbaikan bug
- Memperbaiki masalah di mana pekerjaan impor dua fase dengan
timeoutyang kedaluwarsa selama proses commit gagal dan dibatalkan, sehingga menghapus data yang sudah terlihat oleh kueri, serta di mana menghentikan pekerjaan impor tidak menghentikan tugas yang sedang berjalan di DataNodes (#53481) - Memperbaiki masalah di mana, dengan Pulsar sebagai WAL, StreamingNode dapat terus menulis ke saluran setelah node lain mengambil alih, sehingga baris yang telah dikomit hilang; pengaturan default
pulsar.producerAccessModekini adalahexclusive, yang memerlukan Pulsar 2.8.0 atau versi terbaru (#53539) - Memperbaiki masalah di mana Milvus standalone yang diimplementasikan dengan Docker Compose atau
standalone_embed.shdapat gagal menulis ke direktori data yang dipasang secara bind dan dimiliki oleh root, baik pada instalasi baru maupun pembaruan (#53564, #53615) - Memperbaiki masalah di mana pencarian pada segmen yang sedang berkembang dengan indeks sementara terkadang gagal dengan kesalahan reduce saat data dimasukkan secara bersamaan (#53574)
- Memperbaiki masalah di mana StreamingNode dapat menggunakan mode Woodpecker yang salah saat
AlterWALdijalankan segera setelah konfigurasi penyimpanan Woodpecker diperbarui, yang menyebabkan pemulihan WAL macet setelah restart berikutnya (#53584) - Memperbaiki masalah di mana penyisipan ke dalam koleksi dengan bidang geometri dapat terhenti di bawah beban kueri GIS yang berkelanjutan saat cache geometri diaktifkan (#53609)
- Memperbaiki masalah di mana Milvus dapat macet selama proses shutdown atau terhambat pada panggilan pencatatan saat keluaran log macet (#53625)
- Memperbaiki masalah di mana penyegaran koleksi eksternal dari sumber snapshot Milvus yang tidak valid, atau dari metadata snapshot yang rusak atau menggunakan versi yang tidak didukung, tidak segera gagal dan dapat tetap tertunda hingga waktu habis (#53695, #54034)
- Memperbaiki masalah di mana kueri LIKE yang berisi karakter NUL pada bidang yang diindeks ngram dapat membuat QueryNode crash atau mengembalikan hasil pencocokan yang salah (#53711)
- Memperbaiki masalah di mana titik akhir pemeriksaan kesehatan melaporkan sebuah node sebagai siap sebelum semua komponennya selesai terdaftar (#53735)
- Memperbaiki masalah di mana pemuatan koleksi dapat melaporkan penyelesaian sambil melewatkan segmen yang dipulihkan yang hanya memiliki manifest V3 yang telah dikonfirmasi, sehingga data tersebut hilang dari hasil kueri (#53782)
- Memperbaiki masalah di mana penyalinan snapshot lintas bucket untuk objek besar (sekitar 2 GB) dapat mengalami timeout di OSS; objek di atas batas ukuran maksimum yang dapat dikonfigurasi (
minio.multipartCopyThreshold) (default 1 GiB) kini disalin menggunakan penyalinan multipart di sisi server (#53789) - Memperbaiki masalah di mana operasi snapshot (buat, hapus, pin, lepas pin, ekspor, dan pulihkan) dapat dibatasi atau ditolak oleh batas laju DDL koleksi dan penolakan paksa DDL (#53791)
- Memperbaiki masalah di mana impor Parquet menyimpan NULL alih-alih nilai default bidang untuk baris null dalam bidang Timestamptz yang dapat bernilai null (#53808)
- Memperbaiki masalah di mana pengurut ulang berbasis model dapat memberikan skor ke dokumen yang salah ketika layanan pengurut ulang mengembalikan hasil dalam urutan yang berbeda, sehingga menghasilkan hasil pencarian yang tidak terurut dengan benar (#53813)
- Memperbaiki masalah di mana permintaan pencarian dan kueri dapat gagal dengan pesan "
collection not loaded" dalam waktu yang lama setelah saluran diseimbangkan ulang ke QueryNode lain (#53814) - Memperbaiki masalah di mana pencarian berkelompok dengan ukuran kelompok yang ketat dapat mengembalikan kelompok dengan hasil kurang dari
group_sizemeskipun ada cukup entitas yang cocok (#53899) - Memperbaiki masalah di mana pengguna dapat melihat metadata koleksi yang tidak dapat mereka akses melalui DescribeCollection, dan dapat memanggil RPC segment-info dan replika tanpa hak akses yang diperlukan (#54033)
- Memperbaiki masalah di mana pencarian frasa (
phrase_match) hanya dapat mencocokkan dokumen yang mengandung istilah kueri berulang sekali saja, dan meningkatkan kinerja pencocokan frasa dengan meng-upgrade Tantivy (#54030) - Memperbaiki masalah di mana vektor sparse yang tidak valid dalam permintaan Search atau HybridSearch dapat menyebabkan penulisan di luar batas heap di node kueri; permintaan semacam itu kini ditolak dengan
ParameterInvalid(#54035) - Memperbaiki masalah di mana kemajuan pembuatan indeks dapat melewatkan data impor yang telah dikonfirmasi atau melaporkan "Selesai" sementara segmen yang telah di-flush masih menunggu untuk diurutkan dan diindeks (#54037)
- Memperbaiki masalah di mana penyisipan dan upsert RESTful mengembalikan keberhasilan tetapi menyimpan string JSON tanpa tanda kutip atau secara diam-diam mengubah nilai numerik; masukan semacam itu kini dipertahankan atau ditolak, opsi
compatibilityModemengembalikan konversi lama, dan baris yang telah ditulis sebelumnya tidak diperbaiki (#54072)
v3.0.2
Tanggal rilis: 20 September 2026
| Versi Milvus | Versi SDK Python | Versi SDK Node.js | Versi SDK Java | Versi SDK Go |
|---|---|---|---|---|
| 3.0.2 | 3.0.2 | 3.0.6 | 3.0.10 | 3.0.2 |
Dengan gembira kami mengumumkan peluncuran Milvus v3.0.2! Rilis ini berfokus pada kinerja pencarian dan kueri — menghilangkan kontensi jalur panas dalam pencarian yang difilter, pengelompokan, dan pembuatan indeks — bersama dengan dukungan koleksi eksternal dan Storage V2 yang lebih kuat, serta serangkaian perbaikan stabilitas yang luas di seluruh streaming, pemadatan, dan pengelolaan indeks.
Peningkatan
- Penyaringan ARRAY dioptimalkan dengan menggabungkan predikat contains yang dirantai menjadi satu ekspresi
ContainsAny/ContainsAlldalam perencana kueri (#52365) - Menambahkan dukungan untuk titik akhir khusus yang kompatibel dengan S3 dalam koleksi eksternal melalui opsi
extfs.endpoint_url, dengan validasi pengaturan titik akhir yang tidak aman atau bertentangan (#52814) - Menyatukan filter keanggotaan Bloom dan Roaring di balik satu ekspresi
membership_match, dengan dukungan klien Go yang sesuai untuk membangun dan menanyakan kedua jenis filter tersebut (#53019) - Mengurangi amplifikasi penulisan selama pembuatan indeks berbasis Tantivy, sehingga menurunkan I/O disk untuk pencocokan teks, NGRAM, dan indeks statistik kunci JSON (#53057)
- Menambahkan kontrol penerimaan pada titik akhir DQL RESTful v2 yang mengembalikan HTTP 429 dengan
Retry-Aftersebelum decoding permintaan ketika antrian kueri proxy penuh (#53111) - Mengurangi hotspot refcount atomik di jalur evaluasi filter skalar yang menyumbang ~48% dari waktu CPU daun dalam pencarian, sehingga meningkatkan throughput pencarian yang difilter (#53167)
- Meningkatkan skalabilitas kumpulan utas penyimpanan dengan mengganti implementasi buatan sendiri dengan `
folly::CPUThreadPoolExecutor` dan memulihkan penskalaan pekerja elastis (#53184) - Meningkatkan pencocokan log akses REST sehingga formatter dicocokkan dengan jalur URL yang diparsing, dan metode yang dikonfigurasi kini berlaku untuk permintaan yang membawa parameter kueri (#53147)
- Menambahkan dukungan siaran idempoten sehingga permintaan yang diulang tidak lagi membuat tugas duplikat, dengan
BulkImportsebagai pengguna pertama (#53228) - Menambahkan karakter pemisah kalimat yang dapat dikonfigurasi untuk tokenizer Lindera, sehingga entri kamus pengguna yang mengandung tanda baca dapat dicocokkan sebagai satu token (#53287)
- Menambahkan gerbang versi kluster yang secara otomatis mengaktifkan materialisasi fungsi sebelum penulisan hanya setelah semua node menyelesaikan pembaruan, sehingga menghindari ketidakkonsistenan versi campuran selama pembaruan bertahap (#53261)
- Memperbarui Woodpecker ke v0.1.42, memperbaiki kegagalan pemulihan WAL pada segmen kosong yang telah difinalisasi serta meningkatkan stabilitas dan metrik jalur penambahan (#53295)
- Mengurangi overhead atomik dan hitungan referensi per-chunk di jalur panas pencarian dan kueri dengan mengunci snapshot segmen yang disegel sekali per permintaan (#53301)
- Meningkatkan latensi pembaruan parsial dengan mengganti penundaan TimeTick dengan penguncian optimis berbasis snapshot, serta menyempurnakan penanganan AutoID sehingga kunci utama yang ada tetap dipertahankan dan ID yang dikembalikan mempertahankan urutan masukan (#53337)
- Mengurangi konstruksi tampilan baris yang berlebihan saat mengelompokkan hasil pencarian berdasarkan bidang VARCHAR atau JSON pada segmen yang disegel, sehingga menurunkan beban kerja pencarian berdasarkan pengelompokan (#53500)
- Menambahkan API kepatuhan yang melaporkan konvergensi konfigurasi beban secara global dan per grup sumber daya, mencakup ketersediaan replika, visibilitas kueri, sumber daya sisa, dan penempatan WAL (#53517)
Perbaikan bug
- Memperbaiki masalah di mana kueri dapat mengembalikan hasil yang salah setelah bidang array struct dihapus dan ditambahkan kembali (#52921)
- Memperbaiki kegagalan otentikasi SASL/SCRAM-SHA-256 saat menghubungkan ke broker Apache Kafka 4.x dengan meningkatkan librdkafka ke versi 2.6.1 (#53086)
- Memperbaiki masalah di mana semua saluran replika ditugaskan ke satu node kueri, yang menyebabkan pembunuhan berulang karena kehabisan memori dan membuat replika tidak dapat beroperasi (#53094)
- Memperbaiki fencing WAL berulang yang menghentikan penulisan pada PChannel selama 45-60 detik setiap beberapa menit saat terjadi pengambilan data yang berkelanjutan (#53118)
- Memperbaiki pemadatan Storage V2 yang menghapus jalur grup fisik yang valid, yang dapat menyebabkan ketidaksejajaran indeks kolom terkompresi pada segmen yang dipadatkan (#53202)
- Telah diperbaiki log pemadatan yang mencantumkan kunci enkripsi koleksi dan kredensial penyimpanan objek (#53226)
- Memperbaiki alias offset array struktur yang kedaluwarsa yang dapat menampilkan data yang salah setelah segmen yang disegel dibuka kembali (#53154)
- Memperbaiki sinkronisasi sumber daya file yang berjalan sebelum sumber daya apa pun ditambahkan, yang dapat menghapus file lokal node saat startup atau pendaftaran node (#53170)
- Memperbaiki masalah di mana potongan binlog yang tidak lengkap dapat diam-diam diperlakukan sebagai telah dibaca sepenuhnya, sehingga berisiko kehilangan data dalam hasil kueri dan pemadatan (#53263)
- Memperbaiki masalah di mana penyimpanan segmen yang dihapus tidak pernah direklamasi untuk koleksi tanpa indeks aktif (#53252)
- Memperbaiki estimasi sumber daya yang tidak akurat saat memuat indeks vektor jarang, yang dapat menyebabkan penanganan data mentah yang salah dan peringatan berulang pada QueryNode (#53249)
- Memperbaiki masalah di mana node streaming yang dibekukan di luar grup sumber daya utama dapat dicairkan secara tak terduga selama penyeimbangan ulang (#53229)
- Memperbaiki kegagalan koneksi ke Google Cloud Storage di mana kredensial GCP (IAM dan HMAC) tidak terdaftar sebelum pemeriksaan awal pengelola chunk (#53288)
- Memperbaiki masalah di mana log C++ secara tak terduga ditulis ke direktori
/tmpalih-alih diteruskan ke output log terpadu (#53293) - Memperbaiki kegagalan backfill commit dengan kesalahan HTTP 500 ketika hasil Spark mencakup beberapa partisi (#53346)
- Memperbaiki kebocoran memori di DataNode di mana tugas pembuatan indeks atau analisis yang dibatalkan tidak pernah melepaskan memori native dari objek yang telah dibuatnya (#53348)
- Memperbaiki masalah di mana impor binlog gagal ketika bidang vektor yang dapat bernilai null tidak memiliki file binlog (#53363)
- Memperbaiki bidang keluaran yang tidak lengkap atau salah saat permintaan pencarian dan kueri membaca data tabel eksternal (#53372, #53385)
- Memperbaiki baris vektor spars yang terduplikasi dan ID partisi dalam permintaan REST, serta masalah kepemilikan memori dan pembersihan yang dapat menyebabkan crash atau kebocoran saat kueri berakhir lebih awal (#53402)
- Memperbaiki masalah di mana pemadatan yang melaporkan penyelesaian tanpa muatan hasil dapat menyebabkan DataCoord crash atau membuat tugas pemadatan macet alih-alih dicoba ulang dengan benar (#53443)
- Memperbaiki masalah di mana properti file data eksternal terhapus saat membuat manifest segmen, yang menyebabkan koleksi eksternal kehilangan metadata file sumber (#53444)
- Memperbaiki crash QueryNode yang dapat terjadi saat menangani perminta
count(*)pada tingkat log debug, terutama selama peningkatan bertahap (#53474) - Memperbaiki masalah di mana tugas pembuatan indeks dan statistik terus menghabiskan sumber daya pekerja setelah segmen, indeks, atau koleksinya dihapus, serta meningkatkan pembersihan berkas indeks yang terlantar (#53515)
- Memperbaiki penanganan jalur penyimpanan lokal sehingga data yang ditulis oleh komponen yang berbeda selalu berada di tempat yang diharapkan oleh pembaca dan pengumpulan sampah, dengan peningkatan otomatis untuk penerapan lokal yang ada (#53530)
- Memperbaiki tugas pembuatan indeks yang terus mencoba ulang tanpa henti ketika suatu segmen berisi dokumen JSON yang tidak valid; pembuatan semacam itu kini akan segera gagal alih-alih menghabiskan sumber daya pekerja tanpa batas (#53531)
- Memperbaiki pemulihan snapshot bersamaan yang menargetkan koleksi yang sama: pemulihan kini diserialisasikan dan pemulihan ke target yang sudah ada ditolak dengan pesan kesalahan yang jelas “sudah ada di database” alih-alih bersaing atau menyebabkan kebocoran sumber daya (#53586)
- Memperbaiki kunci enkripsi biner yang rusak di seluruh antarmuka penyimpanan dan kursor yang tidak sejajar dalam pembaca terkemas Storage V2 yang diproyeksikan dengan memutakhirkan milvus-storage (#53569)
v3.0.1
Tanggal rilis: 9 September 2026
| Versi Milvus | Versi SDK Python | Versi SDK Node.js | Versi SDK Java | Versi SDK Go |
|---|---|---|---|---|
| 3.0.1 | 3.0.1 | 3.0.5 | 3.0.9 | 3.0.1 |
Dengan gembira kami mengumumkan peluncuran Milvus v3.0.1! Rilis ini menambahkan manajemen snapshot REST v2, kemampuan pengurutan ulang yang diperluas, dan dukungan bidang TEXT di klien Go dan RESTful API, di samping peningkatan kinerja dan perbaikan untuk Storage V3, konsistensi data, dan keamanan.
Peningkatan fitur
- Menambahkan API REST v2 untuk pengelolaan snapshot asli dalam lingkup koleksi dan pemulihan asinkron (#52118, #52172)
- Menambahkan ambang batas jumlah hasil yang dapat dikonfigurasi untuk mengontrol pemilihan jalur keluaran Take pada operasi pencarian dan kueri (#52437)
- Menambahkan dukungan bidang TEXT ke klien Go dan RESTful API (#52450)
- Menambahkan laju IOPS baca awal dan maksimum yang dapat dikonfigurasi untuk Tabel Eksternal (#52503)
- Menambahkan pengaturan opt-in untuk pekerjaan penyegaran koleksi eksternal agar menunggu hingga semua segmen diindeks sebelum melaporkan penyelesaian, tanpa menunda publikasi data (#52712)
- Menambahkan dukungan L1 reranking ke rantai fungsi pencarian (#52745)
- Menambahkan penataan ulang RRF tertimbang dengan bobot opsional per permintaan ANN di FunctionScore, REST, pencarian hibrida lama, dan klien Go (#52891, #52926)
Peningkatan stabilitas
- Meningkatkan keamanan memori pada indeks dan cache geometri RTree, serta penanganan WKB yang tidak dapat diuraikan dan kueri geometri kosong (#51312)
- Manajemen memori ditingkatkan dengan memulihkan penganggaran memori sementara di seluruh proses dan mengoreksi perkiraan memori untuk pemuatan bidang Storage V2/V3 secara bersamaan serta pemuatan indeks skalar V3 (#51405)
- Mengurangi kemacetan unduhan dan penggunaan memori selama pembuatan indeks koleksi eksternal dengan melakukan paralelisasi pembacaan dan streaming data vektor mentah ke disk (#51651)
- Peningkatan throughput Woodpecker untuk beban kerja batch kecil dan konkurensi tinggi dengan menggabungkan penambahan klien dan menampilkan pengaturan sinkronisasi (#51810)
- Meningkatkan kepemilikan pembaca rekaman dan konsistensi masa pakai, penanganan blob kosong, serta pelaporan kesalahan baca di seluruh jalur penyimpanan dan pemadatan (#51891)
- Meningkatkan efisiensi pengelompokan hash-probe dengan pipa empat arah yang diselingi serta pengamanan untuk tabrakan dan batas rehash (#51977)
- Mengurangi overhead pemrosesan penyisipan dengan melewatkan penguraian isi penyisipan WAL untuk koleksi tanpa bidang keluaran BM25 atau MinHash (#51986)
- Peningkatan pelaporan kegagalan penyimpanan dan penanganan percobaan ulang dengan mempertahankan klasifikasi kesalahan sementara dan permanen di seluruh lapisan eksekusi (#51990)
- Peningkatan kinerja kueri spasial dengan mengaktifkan pemisahan kasar/halus GIS dan fusi predikat kolom yang sama secara default (#52008)
- Peningkatan penjadwalan tugas pengindeksan teks dan pemecahan JSON dengan kontrol penerimaan berbasis antrian bersama dan prioritas pengiriman bergantian (#52010)
- Menambahkan dukungan mmap untuk pemetaan offset segmen tertutup, dengan opsi pemuatan khusus dan penghitungan sumber daya disk (#52035)
- Pemuatan data Storage V2 dioptimalkan dengan menjalankan estimasi memori potongan per kolom sesuai permintaan (#52037)
- Menambahkan dukungan AutoIndex sisi server untuk indeks yang terikat pada bidang keluaran fungsi baru, sehingga permintaan add_function_field dapat mengabaikan parameter indeks atau menentukan AUTOINDEX (#52109)
- Mengurangi beban laporan distribusi QueryNode melalui pelaporan bertahap dengan cadangan laporan lengkap, serta mengurangi alokasi memori selama pengumpulan metrik (#52111, #52119)
- Meningkatkan kekuatan hashing kata sandi dengan menaikkan nilai bcrypt dari 4 menjadi 10, dengan rotasi kredensial yang diperlukan untuk meng-upgrade hash yang sudah ada (#52145)
- Mengurangi dekoding yang berlebihan selama impor Parquet dengan hanya membaca kolom daun yang diperlukan untuk subbidang array struktur (#52224)
- Meningkatkan pengelompokan penggabungan paksa dengan perencanaan berbasis ukuran multi-putaran dan menghapus pengaturan ambang batas perencanaan lama (#52242)
- Meningkatkan cgosymbolizer untuk mencegah proses Milvus yang berjalan sebagai PID 1 macet setelah kesalahan native (#52299)
- Meningkatkan validasi jumlah baris untuk masukan penyorotan semantik (#52409)
- Peningkatan kontrol percobaan ulang impor dengan penundaan yang dapat dikonfigurasi untuk percobaan ulang penulisan (#52414, #52415, #52427)
- Meningkatkan pengelolaan siklus hidup tugas analisis dengan mengambil kembali versi statistik yang sudah kadaluwarsa dan menyimpan status akhir (#52416, #52417)
- Koordinasi siklus hidup segmen yang ditingkatkan dengan menunggu pelepasan segmen setelah batas waktu penguncian (#52422)
- Peningkatan penyortiran penyimpanan untuk pemadatan data dengan penggabungan k-way (#52429)
- Mengurangi perluasan buffer validitas bidang yang dapat bernilai null dengan mempertahankan masker terkemas di seluruh akses chunk, evaluasi ekspresi, dan statistik JSON (#52451)
- Peningkatan perlindungan kredensial sensitif, kunci API, hash kata sandi RBAC, dan detail sumber pengumpulan eksternal dengan mencegah paparan data tersebut dalam log atau pesan kesalahan (#52487, #52664, #52710)
- Peningkatan kontrol konkurensi pembaruan parsial dengan validasi CAS optimis dan upaya ulang yang aman untuk konflik yang memenuhi syarat (#52495)
- Peningkatan stabilitas snapshot baca segmen yang berkembang dan pengelolaan masa pakai snapshot skema (#52572)
- Mengurangi pemindaian berlebihan terhadap metadata otorisasi selama pencadangan (#52612)
- Meningkatkan pemetaan ID vektor yang dapat bernilai null dengan memindahkannya ke lapisan indeks, menyatukan penanganan ID logis, dan mendukung pemetaan yang didukung mmap untuk indeks tertutup (#52657)
- Sinkronisasi yang ditingkatkan antara kompilasi Sonic JIT dan pemuatan plugin Go dalam build CPU dan GPU (#52738)
- Meningkatkan resolusi saluran jalur penulisan Proxy melalui cache metadata, menghilangkan RPC koordinator yang berlebihan, dan meningkatkan klasifikasi kesalahan (#52739)
- Waktu perhitungan recall dikurangi dari sekitar 3,08 detik menjadi 18,5 milidetik pada topk=100.000 dalam benchmark yang dilaporkan (#52763)
- Penyaringan bidang nullable dioptimalkan dengan menggunakan kembali bitmap validitas, mengurangi penyimpanan offset null yang berlebihan, dan mempercepat penyalinan bitset (#52801, #52823, #52825)
- Meningkatkan indeks skalar hibrida pada subbidang struktur bersarang dengan menggunakan STL_SORT ketika jumlah elemen yang berbeda mencapai batas kardinalitas bitmap (#52849)
- Meningkatkan efisiensi penyaringan ID segmen dalam cache metadata (#52855)
- Mengurangi alokasi memori dalam fungsi pembantu hash (#52857)
- Pengoptimalan penyortiran hasil rerank yang digabungkan dengan menghilangkan pencarian peta per-perbandingan (#52885)
- Meningkatkan keamanan memori saat menangani nilai default JSON dan tampilan string yang tidak diakhiri dengan NUL (#52906)
- Meningkatkan waktu build C++ dengan kompilasi unity berskala, meningkatkan cache kompiler, dan mengurangi pekerjaan kompilasi yang berlebihan (#52995)
- Peningkatan cakupan dan kesegaran metrik sistem berkas dengan mengumpulkan metrik dari sistem berkas yang disimpan dalam cache pada saat pengumpulan data sambil mempertahankan nama dan label metrik yang ada (#53026)
- Menambahkan pengaturan growingBuildThreadRate yang dapat diperbarui untuk mengonfigurasi thread per pembangunan indeks sementara segmen yang berkembang sambil mempertahankan default single-threaded (#53033)
- Menambahkan dukungan penulisan balik data bidang mmap ke versi 3.0 melalui backport, dengan opsi queryNode.mmap.writeback yang dinonaktifkan secara default (#53079)
Perbaikan bug
- Memperbaiki hasil yang salah dan validasi predikat yang tidak konsisten dalam kueri JSON, ARRAY, dan TIMESTAMPTZ, termasuk predikat tipe campuran, perbandingan angka besar, dan penyaringan di beberapa batch (#51775)
- Memperbaiki data yang diperbarui secara tidak konsisten selama penyegaran koleksi eksternal paralel ketika file sumber segmen mencakup beberapa tugas (#51893)
- Memperbaiki ekspresi MATCH yang menerima predikat yang tidak beroperasi pada tingkat elemen (#51940)
- Memperbaiki pencarian tanpa kecocokan yang gagal dengan kesalahan tipe ID yang tidak didukung (#51999)
- Memperbaiki Milvus mandiri yang macet saat dimatikan dengan menambahkan batas waktu migrasi yang dapat dikonfigurasi dengan default 10 detik (#52027)
- Memperbaiki permintaan embedding tabel eksternal yang menggunakan identitas cluster yang salah saat pekerja DataNode dibagikan di seluruh cluster penyedia layanan (#52042)
- Memperbaiki masalah yang mencegah pembaruan integration_id dan model_deployment_id untuk fungsi TextEmbedding (#52081)
- Memperbaiki respons HTTP JSON yang mengabaikan status ok=false eksplisit untuk segmen backfill yang gagal (#52082)
- Memperbaiki kegagalan unggahan objek MinIO dengan HTTP 400 XAmzContentChecksumMismatch saat dicoba kembali setelah transportasi atau batas waktu kecepatan rendah (#52128, #52194)
- Memperbaiki penyeimbangan segmen antar QueryNodes yang macet saat Layanan Streaming diaktifkan (#52147, #52169)
- Memperbaiki kehilangan data tanpa pemberitahuan selama pemadatan campuran ketika catatan yang disimpan tidak dapat dibangun kembali (#52200)
- Telah diperbaiki pemulihan snapshot yang kehilangan pengaturan koleksi dan secara tak terduga menggunakan konsistensi kuat sebagai default (#52206)
- Memperbaiki penghapusan streaming yang melewatkan segmen tersegel yang baru dimuat, sehingga data yang dihapus tetap dapat di-query (#52218)
- Telah diperbaiki indeks bersarang yang tidak dibangun dengan benar untuk data kosong (#52247)
- Memperbaiki deadlock saat beralih ke layanan streaming yang menyebabkan operasi menunggu tanpa batas waktu (#52292)
- Memperbaiki nilai default geometri yang salah selama pemadatan dan pembangunan ulang catatan, serta penandaan null yang salah untuk nilai geometri yang diisi secara default dalam impor Parquet (#52350)
- Memperbaiki segmen V3 yang valid ditolak selama pemadatan dan pemulihan setelah DataCoord dimulai ulang (#52383, #52389, #52390, #52391, #52392, #52393)
- Memperbaiki kegagalan pemuatan segmen dengan kesalahan metadata versi yang hilang saat menggunakan indeks skalar hibrida pada sub-bidang array VARCHAR dalam struktur (#52385)
- Memperbaiki kolom eksternal yang gagal diperbarui saat manifest yang diperbarui dibuka kembali (#52397)
- Memperbaiki penanganan zona waktu yang salah dalam pencarian dengan kondisi yang bergantung pada waktu (#52407)
- Memperbaiki penanganan input ArrayOfVector yang salah dalam permintaan pencarian (#52408)
- Memperbaiki kegagalan penyisipan dalam menolak baris yang melebihi batas ukuran yang didukung (#52426)
- Memperbaiki indeks sementara yang mengabaikan versi indeks target yang dikonfigurasi (#52449)
- Memperbaiki kueri yang menggunakan order_by yang gagal mengembalikan bidang keluaran vektor padat (#52504, #52606)
- Memperbaiki hak akses yang dicabut yang tetap berlaku setelah dihapus dari grup hak akses (#52554)
- Memperbaiki jumlah file binlog dan label format penyimpanan yang salah untuk segmen Storage V3 setelah DataCoord dimulai ulang (#52571, #52578)
- Memperbaiki pemulihan snapshot eksternal yang terhenti karena pemeriksaan versi pekerja yang tidak dapat diandalkan atau berulang kali mencoba pekerja yang tidak didukung hingga waktu habis (#52639)
- Memperbaiki kegagalan pemuatan segmen untuk indeks HYBRID pada subbidang struct-array dengan file STLSORT lawas dari 3.0.0, tanpa memerlukan pengindeksan ulang (#52643)
- Memperbaiki crash saat memproses buffer Data Arrow C dengan panjang nol (#52652)
- Memperbaiki penanganan kegagalan yang salah saat memuat atau membuka kembali segmen Storage V3 setelah kesalahan manifest, dengan mempertahankan status segmen yang ada untuk upaya ulang yang aman (#52678)
- Memperbaiki kegagalan kueri saat filter elemen ARRAY menemukan batch penuh NULL atau array kosong sebelum elemen berikutnya (#52720)
- Memperbaiki pekerjaan backfill yang melakukan commit embedding usang setelah skema koleksi berubah (#52789)
- Memperbaiki bidang yang tidak ada dalam catatan Storage V3 yang dikembalikan sebagai NULL, bukan nilai default yang dinyatakan (#52790, #52807, #52888)
- Memperbaiki kegagalan penyalinan di sisi server yang mencegah pemulihan snapshot Storage V3 di GCS dengan kredensial IAM/OAuth, termasuk salinan objek yang lebih besar dari 5 GiB (#52792)
- Memperbaiki akses tanpa otentikasi melalui panggilan gRPC streaming pada port proxy eksternal (#52854)
- Memperbaiki data yang kehilangan cap waktu komit aslinya setelah pemadatan clustering (#52859)
- Memperbaiki crash node streaming yang disebabkan oleh kegagalan flush berulang setelah menambahkan bidang TEXT ke koleksi dengan segmen Storage V2 yang sudah ada (#52897)
- Memperbaiki baris yang kedaluwarsa di segmen Storage V3 yang gagal memicu pemadatan berbasis bidang TTL dan tetap tersimpan hingga kondisi pemadatan lain terpenuhi (#52931)
- Memperbaiki ketidakkonsistenan kunci utama yang dibuat secara otomatis antara koleksi sumber dan target selama impor yang direplikasi CDC (#52941)
- Memperbaiki kehilangan penulisan bersamaan selama migrasi backend WAL (#52947, #52951, #52955)
- Memperbaiki indeks HYBRID bersarang yang dibangun ulang atau dipadatkan dengan data kardinalitas tinggi yang menjadi tidak dapat dibaca setelah rollback ke versi yang lebih lama (#52959)
- Memperbaiki penanganan elemen null dalam baris vektor padat eksternal dengan menerima baris yang dapat bernilai null dan menambahkan penanganan yang dapat dikonfigurasi untuk baris yang sebagian bernilai null (#52968)
- Memperbaiki jumlah baris segmen V3 yang salah dan kegagalan pemadatan urutan berulang setelah failover node streaming (#52970)
- Memperbaiki kueri yang menggabungkan kondisi rentang dengan OR yang mengabaikan catatan pada batas bawah inklusif (#52998)
- Memperbaiki pencarian berdasarkan kunci utama yang gagal mempertahankan urutan ID yang diminta (#52999)
- Memperbaiki masalah di mana penambahan bidang TEXT setelah mengaktifkan Storage V3 mencegah pemuatan segmen Storage V2 yang sedang berkembang, sehingga mengganggu operasi flush, penyortiran, dan pengindeksan (#53002)
- Memperbaiki snapshot yang menyertakan segmen Storage V3 yang belum dikomit, yang menyebabkan pemulihan dilaporkan berhasil padahal segmen yang dipulihkan tidak dapat dimuat (#53022, #53039)
- Telah diperbaiki indeks teks Storage V3 yang gagal dimuat ketika file-file tersebut disimpan dalam direktori tugas atau versi bersarang (#53062)
v3.0.0
Tanggal rilis: 29 Juli 2026
| Versi Milvus | Versi SDK Python | Versi SDK Node.js | Versi SDK Java | Versi SDK Go |
|---|---|---|---|---|
| 3.0.0 | 3.0.1 | 3.0.3 | 3.0.5 | 3.0.0 |
Milvus 3.0.0 telah dirilis secara resmi! Berlandaskan arsitektur lake-native yang diperkenalkan pada versi 3.0-beta, rilis ini menyempurnakan apa yang telah dimulai pada versi beta: External Collection kini mencakup lebih banyak alur kerja lakehouse; skema mendukung penambahan, pengisian ulang, dan penghapusan data secara online; indeks sparsenya dibangun ulang menggunakan SINDI; StructArray dan pencarian berfacet melengkapi mesin pengambilan data; FAISS passthrough dan TEXT memperluas pilihan indeks dan modality; serta Woodpecker berjalan sebagai layanan mandiri.
Tonton video di bawah ini untuk mempelajari lebih lanjut tentang Milvus 3.0 dan sesi tanya jawab (AMA) dengan pengelola inti:
Jika Anda baru mengenal seri 3.0, bagian ringkasan fitur Core 3.0 di bawah ini merangkum kemampuan yang diperkenalkan dalam 3.0-beta; catatan rilis 3.0-beta berisi penjelasan lengkapnya.
Apa yang baru di 3.0.0 (sejak 3.0-beta)
Koleksi Eksternal: alur kerja lakehouse yang lebih lengkap
3.0-beta memperkenalkan Koleksi Eksternal: merujuk file lakehouse di tempat, membangun indeks, dan mencarinya tanpa menyalin data ke Milvus. Rilis ini memperluasnya menuju alur kerja pencarian lakehouse yang lengkap. Kolom eksternal kini dapat menjadi sumber untuk kolom keluaran fungsi seperti vektor langka BM25, tanda tangan MinHash, dan embedding teks, sehingga kolom pencarian berbasis teks dan model dapat dibangun di dalam Milvus tanpa menyalin tabel sumber. Refresh juga mendukung evolusi skema aditif: ketika tabel eksternal mendapatkan kolom baru, Milvus memperbarui segmen yang terpengaruh alih-alih membangun ulang koleksi.
Rilis ini juga menambahkan format eksternal " milvus-table " yang memperlakukan metadata Milvus Snapshot dan manifes Storage V3 sebagai sumber eksternal, sehingga snapshot koleksi itu sendiri dapat disajikan sebagai tabel eksternal — sistem batch dan sistem penyajian mendapatkan tampilan bersama yang didukung manifes atas data yang sama.
Untuk informasi lebih lanjut, lihat Membuat Koleksi Eksternal dan Snapshot.
Skema fleksibel: tambahkan, isi ulang, dan hapus kolom secara online
Skema tidak tetap statis di lingkungan produksi — model yang tertanam diganti, fitur diperbarui, bidang menjadi usang — dan hal ini biasanya berarti perlu membangun ulang seluruh koleksi dengan waktu henti atau penulisan ganda. Versi 3.0.0 menutup celah ini: kolom dapat ditambahkan, diisi, dan dihapus sementara layanan tetap berjalan.
Pengisian ulang berfungsi dua arah. Pengisian ulang eksternal menangani nilai yang dihitung di luar Milvus: tambahkan kolom, ambil snapshot koleksi sebagai titik awal yang konsisten, jalankan tugas secara offline, tulis nilai kembali, dan Milvus mengindeks kolom baru secara bertahap — pembaruan model embedding pada ratusan juta baris menjadi proses yang berjalan lancar tanpa downtime. Pengisian ulang internal mencakup nilai-nilai yang diturunkan dari kernel: lampirkan fungsi BM25 atau MinHash ke koleksi yang sudah ada, dan bidang outputnya akan dihitung secara otomatis berdasarkan data yang ada.
Untuk informasi lebih lanjut, lihat Menambahkan Bidang ke Koleksi yang Sudah Ada.
Perombakan indeks spars: SINDI, Block-Max WAND, dan Block-Max MaxScore
Milvus 3.0 meningkatkan indeks vektor spars di seluruh sistem. Versi ini memperkenalkan algoritma pencarian baru — SINDI, Block-Max WAND, dan Block-Max MaxScore — bersama dengan kompresi daftar terbalik, kuantisasi yang dapat dikonfigurasi, dan pemilihan algoritma pencarian per beban kerja. Pemuatan mmap, serialisasi, dan penilaian BM25 juga dioptimalkan, sehingga mengurangi beban penyimpanan dan pemuatan indeks untuk pencarian vektor spars dan teks lengkap berskala besar. Dalam pengujian internal, indeks BM25 yang terkompresi ukurannya kira-kira 3 kali lebih kecil daripada indeks langka 2.6 dengan tingkat recall yang sebanding, dan SINDI mencapai QPS hingga sekitar 10 kali lipat dari MaxScore pada embedding langka yang dipelajari. Setelah versi indeks baru diaktifkan (lihat Catatan kompatibilitas dan perilaku), SINDI menjadi default untuk pencarian IP spars, dan MaxScore menjadi default untuk BM25.
Cakupan StructArray
StructArray kini mendukung nilai null, indeks bitmap, penambahan bidang dinamis pada koleksi aktif, dan pembaruan parsial bidang struct melalui upsert, dengan cakupan REST dan impor massal yang sesuai.
Pencarian tingkat elemen menambahkan pencarian hibrida di seluruh sub-bidang vektor dengan penggabungan per-entitas yang dapat dikonfigurasi (varian max / sum / avg / top-k), ditambah pencarian rentang dan pengelompokan di dalamnya. Penyaringan bersarang mencakup predikat element_filter, kuantifier MATCH_ANY / MATCH_ALL / MATCH_LEAST / MATCH_MOST / MATCH_EXACT, akses sub-bidang posisional seperti tags[0][name], dan array_length() pada kolom struct.
Untuk informasi lebih lanjut, lihat StructArray dan Operator StructArray.
Agregasi Pencarian dan pencarian berfacet
Agregasi Kueri dari versi beta menghitung statistik yang tepat atas data yang difilter; versi 3.0.0 menambahkan pemfilteran berdasarkan aspek (faceting) pada jalur pencarian. Tentukan bidang aspek pada saat pencarian, dan Milvus akan mengembalikan nilai-nilai aspek teratas, masing-masing diwakili oleh anggota yang paling sesuai dalam peringkat ANN dan dilengkapi dengan agregat seperti COUNT dan AVG — bilah samping pencarian berfacet (merek, kisaran harga, atribut) dalam satu permintaan, alih-alih mengambil data berlebihan dan menghitungnya di sisi klien.
Penilaian ulang Rantai Fungsi
Penilaian ulang kini dapat digabungkan melalui API Rantai Fungsi, yang menjalankan pipa berurutan dan bertipe sebagai bagian dari satu permintaan pencarian. Sebuah rantai dapat menggabungkan penilaian ulang L0 awal pada QueryNode dengan penataan ulang peringkat pasca-reduksi L2 pada Proxy, mendukung transformasi dan kombinasi skor, penataan ulang peringkat berbasis model, penyortiran, serta pemangkasan kandidat tanpa perlu pengaturan di sisi klien. Rilis ini juga menambahkan penilaian XGBoost bawaan untuk penataan ulang peringkat L0 menggunakan model UBJ yang terdaftar sebagai FileResources, bersama dengan Penyedia Inferensi Hugging Face untuk embedding teks yang dikelola server dan penataan ulang peringkat kesamaan kalimat.
Bidang teks panjang TEXT
Kolom TEXT menjadikan teks panjang sebagai prioritas utama, dengan batasan panjang di sisi penyimpanan dihapus: kolom ini mendukung text_match, phrase_match, dan BM25. Nilai di bawah 64 KB tetap disimpan secara inline; nilai yang lebih besar disimpan ke berkas LOB tingkat partisi dalam format Vortex, dengan kolom hanya menyimpan referensi (file_id, offset). File LOB dibagikan di seluruh segmen, sehingga pemadatan memindahkan referensi alih-alih menulis ulang teks. Untuk RAG, ini berarti mengambil vektor dan teks sumber dari penyimpanan yang sama dalam satu IO — tidak perlu mengoperasikan penyimpanan blob eksternal.
Passthrough indeks FAISS
Tipe indeks " FAISS " yang baru menerima string pabrik indeks Faiss apa pun melalui parameter " faiss_index_name " — IVF64,Flat, HNSW16,Flat, OPQ16,IVF64,PQ16x4 — dengan parameter pencarian diteruskan, sehingga resep Faiss dapat dijalankan langsung di Milvus.
Dukungan format Vortex dan Lance
Lapisan penyimpanan kini memiliki dua format kolom terbuka: Vortex sebagai format internal generasi berikutnya — pengkodean adaptif (kamus, RLE, pengemasan bit, kompresi khusus float), dekompresi tanpa penyalinan, dioptimalkan untuk beban kerja campuran vektor + skalar — dan Lance bersama Parquet untuk pertukaran ekosistem terbuka. Vortex akan menjadi format internal default, dengan filter pushdown dan varian lokal yang sedang direncanakan.
Penerapan Woodpecker secara mandiri
Woodpecker, WAL yang menjadi inti jalur penulisan streaming, kini dapat diterapkan sebagai layanan independen, bukan tertanam dalam node lain — penskalaan independen, isolasi kesalahan, dan kemampuan pengamatan, seperti layanan mikro lainnya. Hal ini sangat penting bagi klaster besar dan beban kerja penulisan tinggi.
Ringkasan fitur inti 3.0
Fitur-fitur di bawah ini diperkenalkan dalam 3.0-beta dan merupakan bagian dari 3.0.0; lihat catatan beta untuk penjelasan lengkapnya.
- Koleksi Eksternal — kueri data lakehouse (Parquet, Lance, Iceberg, Vortex) di tempat: tanpa penyalinan, hanya baca, disinkronkan melalui penyegaran tambahan.
- Snapshot — tampilan koleksi read-only pada titik waktu tertentu berdasarkan referensi segmen, dengan penyimpanan marjinal mendekati nol.
- Penyimpanan V3 (Loon) — penyimpanan kolom berbasis manifest pada penyimpanan objek; fondasi untuk Snapshot dan Koleksi Eksternal.
- Kueri / Pencarian ORDER BY — penyortiran multi-bidang di sisi server dengan ASC / DESC per bidang.
- Agregasi Kueri — COUNT / SUM / AVG / MIN / MAX dengan pengelompokan, dievaluasi di sisi server.
- EmbList + DiskANN — pengindeksan multi-vektor di disk untuk daftar embedding StructArray, dengan jalur akselerasi seperti Muvera dan Lemur.
- Fungsi MinHash (doc-in, doc-out) — tanda tangan MinHash di sisi server ditambah "
MINHASH_LSH" untuk deteksi duplikat hampir identik. - Vektor yang dapat bernilai NULL — NULL pada keenam tipe vektor; pencarian melewati baris NULL, dan AddField diperluas ke bidang vektor.
- TTL Entitas — kedaluwarsa per baris yang ditentukan oleh bidang TIMESTAMPTZ.
- FileResource — kamus yang dikelola klaster, daftar sinonim, dan daftar kata penghalang untuk penganalisis, BM25, dan Text Match.
- Force Merge — pemadatan segmen yang dipicu oleh operator, dalam mode sinkron atau asinkron.
Catatan kompatibilitas dan perilaku
- Storage V3 (Loon) dinonaktifkan secara default. Fitur yang bergantung padanya — seperti Snapshot dan bidang TEXT — memerlukan pengaktifan manual melalui
common.storage.useLoonFFI. Storage V3 akan diaktifkan secara default pada rilis berikutnya. - Kompatibilitas dan rollback dari 2.6 ke 3.0 dijamin — penerapan versi 3.0 dapat dikembalikan ke versi 2.6. Namun, setelah Anda mengaktifkan atau menggunakan fitur yang mengubah format data serial (misalnya Storage V3), rollback tidak lagi dimungkinkan.
- Versi indeks baru untuk saat ini bersifat opsional. Algoritma indeks yang baru diperkenalkan memerlukan peningkatan versi indeks target secara manual (
dataCoord.targetVecIndexVersionmenjadi 10,dataCoord.targetScalarIndexVersionmenjadi 4) sebelum berlaku; rilis selanjutnya akan mengaktifkannya secara default. - Gambar GPU beralih ke CUDA 12.9 dan tidak lagi mempertahankan kompatibilitas GPU Ubuntu 20.04.
v3.0-beta
Tanggal rilis: 9 Mei 2026
| Versi Milvus | Versi SDK Python | Versi SDK Node.js |
|---|---|---|
| 3.0-beta | 3.0.0 | 3.0.0 |
Milvus 3.0-beta memperluas basis data vektor Milvus dengan integrasi baru ke dalam ekosistem Open Lake: Fitur External Collection memungkinkan Milvus melakukan kueri terhadap tabel Lake eksternal tanpa salinan data (zero-copy), dan Spark dapat membaca koleksi Milvus secara langsung melalui Snapshot. Rilis ini juga menghadirkan pencarian yang lebih kaya, skema yang lebih ekspresif, penyesuaian pencarian teks yang lebih mendalam, kontrol siklus hidup data dan model yang lebih terperinci, serta kontrol sisi operator yang lebih banyak. Milvus 3.0 merupakan inti dari Zilliz Lakebase, yang mendukung penyajian terpadu, penemuan, dan pemrosesan batch.
Fitur Utama
Koleksi Eksternal
Dalam pipa data AI pada umumnya, terabyte embedding dan metadata sudah tersimpan di penyimpanan objek sebagai tabel Parquet, Lance, atau Iceberg. Menyalin data tersebut ke Milvus akan menggandakan biaya penyimpanan, menambah pipa ETL yang harus tetap disinkronkan, dan mengalihkan tata kelola data dari pelanggan.
Pengumpulan Eksternal menghilangkan kebutuhan penyalinan tersebut. Koleksi Milvus dapat merujuk ke file di lokasi aslinya, dan Milvus hanya mengelola skema, indeks, serta eksekusi kueri. Penyegaran inkremental menjaga Koleksi tetap selaras dengan file yang mendasarinya. Pelanggan yang datanya tidak dapat dipindahkan dari lake, seperti tim keuangan dan perawatan kesehatan, dapat menjalankan pengambilan vektor terhadap data tersebut di tempatnya. Satu set data yang berada di lake juga dapat disajikan dari beberapa instance Milvus sekaligus.
Untuk informasi lebih lanjut, lihat Membuat Koleksi Eksternal.
Snapshot
Penyajian dan penemuan batch sering kali memerlukan Koleksi yang sama pada waktu yang bersamaan. Evaluasi model A/B, deduplikasi skala besar, validasi backfill, dan rollback versi semuanya memerlukan tampilan Koleksi yang stabil sementara penulisan data masih berlangsung.
Snapshot membuat tampilan Koleksi pada titik waktu tertentu yang hanya dapat dibaca dengan merujuk pada segmen yang ada, bukan dengan menyalin data, sehingga biaya penyimpanan marjinalnya mendekati nol. Pekerjaan batch dapat membaca dari Snapshot di bawah isolasi bergaya MVCC sementara Koleksi yang aktif tetap menerima penulisan.
Untuk informasi lebih lanjut, lihat Snapshot, Mengelola Snapshot, dan Kasus Penggunaan Snapshot.
Urutan Query / Pencarian
Pencarian dan Kueri kini mendukung pengurutan multi-kolom, dengan proses pengurutan ditangani langsung oleh kernel Milvus dan opsi " ASC " serta " DESC " dapat disesuaikan per kolom. Hal ini mengatasi celah umum dalam produksi: pengurutan Top-K berdasarkan jarak saja seringkali tidak sesuai dengan kebutuhan bisnis ketika item yang paling mirip bukanlah yang termurah, terbaru, atau paling populer.
Aplikasi tidak lagi perlu mengambil hasil secara berlebihan dan melakukan pengurutan ulang di sisi klien untuk menghasilkan peringkat gabungan.
Untuk informasi lebih lanjut, lihat Mengurutkan Hasil Pencarian berdasarkan Bidang Skalar dan Mengurutkan Hasil Kueri.
Agregasi Kueri
Dulu, untuk menghasilkan statistik distribusi penyewa, hitungan kelengkapan bidang, atau kemajuan peluncuran versi dari Koleksi Milvus, diperlukan penarikan entitas yang cocok kembali ke klien dan pengagregasiannya di sana. Milvus 3.0 mengintegrasikan agregasi skalar bergaya SQL ke dalam kernel. Panggilan kueri menerima ekspresi " group_by_fields " dan ekspresi agregasi dalam " output_fields", termasuk " count(*)", " count(<field>)", " sum(<field>)", " avg(<field>)", " min(<field>)", dan " max(<field>)". Agregasi dievaluasi di sisi server setelah penyaringan.
Untuk informasi lebih lanjut, lihat Hasil Kueri Agregat.
Vektor Null
Embedding sering kali dihasilkan secara asinkron, sehingga suatu entitas dapat tiba sebelum vektornya. Data multimodal juga memiliki celah alami, seperti video tanpa teks terjemahan atau produk tanpa gambar. Versi sebelumnya tidak memiliki solusi yang memadai: aplikasi menunda penulisan hingga vektor siap atau mengisi vektor tempatholder, dan kedua pilihan tersebut merugikan kualitas pencarian.
Milvus 3.0 mendukung nilai NULL pada bidang vektor di seluruh enam jenis vektor. Pencarian secara otomatis melewati vektor NULL, kualitas pencarian tidak terpengaruh, dan vektor NULL secara efektif tidak memakan ruang penyimpanan. Fitur " AddField " juga berlaku untuk bidang vektor dalam perubahan ini: dengan " nullable=True", sebuah Koleksi yang sudah ada dapat menambahkan bidang vektor baru secara online tanpa perlu rebuild.
Untuk informasi lebih lanjut, lihat Bidang yang Dapat Bernilai NULL.
Kamus Kustom & Kamus Sinonim
Tokenizer bawaan tidak selalu memenuhi persyaratan kualitas pencarian produksi. Bahasa Mandarin, domain vertikal seperti kedokteran, hukum, dan kimia, serta korpus multibahasa dapat memperoleh manfaat besar dari kamus kustom dan tabel sinonim. Hingga saat ini, sumber daya ini sebagian besar berfungsi sebagai penulisan ulang kueri di sisi aplikasi.
Milvus 3.0 menambahkan mekanisme FileResource untuk mendaftarkan kamus tokenizer kustom, daftar sinonim, daftar kata penghalang, dan aturan pemisah kata majemuk. Setelah terdaftar, sumber daya tersebut dapat dirujuk dari tokenizer atau filter mana pun dan berlaku pada BM25, penganalisis, dan Text Match. Kamus dan sinonim kini dapat diberi versi dan dikelola secara terpusat, bukan tersebar di seluruh kode aplikasi.
Untuk informasi lebih lanjut, lihat Mengelola Sumber Daya File.
TTL Entitas
TTL tingkat koleksi dan tingkat partisi terlalu kasar untuk banyak skenario siklus hidup dan kepatuhan. Penyewa yang berbeda di dalam Koleksi yang sama sering kali memiliki aturan penyimpanan yang berbeda, dan entitas individu mungkin perlu kedaluwarsa sesuai jadwal yang tidak sesuai dengan bagian Koleksi lainnya.
Milvus 3.0 mendukung TTL per entitas. Tetapkan bidang ` TIMESTAMPTZ ` dalam skema, tandai sebagai bidang TTL melalui properti Koleksi, dan Milvus akan secara otomatis menghapus entitas yang telah kadaluwarsa. Fitur ini mencakup permintaan hak untuk dilupakan, data sesi yang kadaluwarsa, serta riwayat percakapan terbatas tanpa perlu pembersihan di sisi aplikasi.
Untuk informasi lebih lanjut, lihat Tetapkan TTL Tingkat Entitas.
MinHash DIDO (Doc-in, Doc-out)
Milvus 2.6 menambahkan indeks MINHASH_LSH untuk deteksi duplikat hampir identik berbasis himpunan, tetapi aplikasi masih harus menghitung tanda tangan MinHash sebelum menulis data ke Milvus.
Milvus 3.0 menambahkan fungsi MinHash di sisi server. Deklarasikan bidang masukan ` VARCHAR ` dan bidang keluaran ` BINARY_VECTOR ` dalam skema, lampirkan fungsi ` FunctionType.MINHASH `, dan Milvus akan menghitung tanda tangan tersebut selama proses penyisipan, penyisipan massal, dan pencarian. Bersama dengan ` MINHASH_LSH`, hal ini mendukung alur kerja deduplikasi untuk dataset besar, pembuatan sidik jari, dan deteksi plagiarisme di dalam Milvus.
Untuk informasi lebih lanjut, lihat Fungsi MinHash.
EmbList + DISKANN
Asumsi “satu entitas = satu vektor” tidak lagi sesuai dengan pencarian modern. Dokumen panjang dibagi menjadi banyak bagian, model interaksi terlambat seperti ColBERT menghasilkan satu vektor per token, dan entitas multimodal dapat memiliki beberapa tampilan.
EmbList menyimpan daftar vektor berpanjang variabel per entitas, dengan DISKANN sebagai indeks di disk. Jalur disk ini menjaga penggunaan RAM tetap terkendali saat korpus melebihi batas memori. EmbList + DISKANN merupakan varian pertama dari keluarga StructList yang lebih luas dalam rilis kandidat (RC) ini. Sisa keluarga ini, termasuk penyaringan StructList dan akselerasi multi-vektor Muvera / Lemur, ditargetkan untuk rilis resmi versi 3.0.
Untuk informasi lebih lanjut, lihat Pencarian dengan Daftar Embedding.
Paksakan Penggabungan
Beban kerja produksi menumpuk fragmentasi segmen seiring waktu, yang menyebabkan fluktuasi latensi kueri dan penggunaan penyimpanan yang membengkak.
Milvus 3.0 menambahkan kemampuan untuk memicu pemadatan segmen secara eksplisit selama jendela di luar jam sibuk, baik dalam mode sinkron maupun asinkron.
Untuk informasi lebih lanjut, lihat Pemadatan Force Merge.
Penyimpanan V3
Milvus 3.0 memperkenalkan Storage V3, mesin penyimpanan kolom berbasis manifest di mana data dan metadata disimpan di penyimpanan objek yang kompatibel dengan S3. Setiap versi dataset direkam sebagai snapshot manifest yang tidak dapat diubah, yaitu berkas yang dienkode Avro yang mencatat kelompok kolom, log delta, dan statistik yang membentuk dataset tersebut.
Manifest adalah berkas Avro yang ringkas, sedangkan log delta mencatat penghapusan pada tingkat entitas tanpa perlu menulis ulang berkas data. Hal ini menjaga beban metadata tetap rendah seiring pertumbuhan dataset. Manifest juga memisahkan pelacakan metadata dari jalur kueri, sehingga sebuah Koleksi dapat mengelola lebih banyak segmen tanpa mengorbankan kinerja kueri.
Karena status disimpan di penyimpanan objek, kumpulan data bersifat deskriptif sendiri: pembaca mana pun yang memiliki akses ke jalur penyimpanan dapat menemukan dan menafsirkannya tanpa katalog pusat. Sifat ini menjadi dasar bagi Koleksi Eksternal, Snapshot, dan integrasi lake di masa mendatang.