Sebelum menggunakan Vector Retrieval Service for Milvus (Milvus), Anda perlu memperkirakan kebutuhan resource komputasi guna memastikan stabilitas sistem dan mengendalikan biaya. Milvus menyediakan kalkulator resource untuk membantu memperkirakan resource yang dibutuhkan berdasarkan data eksperimen—seperti jumlah vektor, dimensi vektor, dan jenis indeks. Namun, Anda harus menyesuaikan konfigurasi tersebut sesuai penerapan aktual berdasarkan hasil pengujian sendiri.
Resource calculator
Milvus mempertahankan rasio CPU-memori sebesar 1:4. Untuk memastikan stabilitas instans, layanan ini menyediakan memori lebih banyak daripada yang diperlukan.
Gunakan resource calculator untuk memperkirakan resource instans yang dibutuhkan. Masukkan jumlah vektor dan dimensinya, pilih jenis indeks, lalu sistem akan merekomendasikan konfigurasi instans yang sesuai. Misalnya, untuk set data berisi 8 juta vektor dengan dimensi masing-masing 768, menggunakan jenis indeks HNSW dengan parameter M diatur ke 4, kalkulator akan menampilkan konfigurasi yang direkomendasikan secara real time. Rekomendasi ini dapat digunakan sebagai titik awal untuk pemilihan instans dan pengujian performa. Resource calculator mendukung parameter input berikut: toggle High Availability, Vector Count (Millions), Vector Dimension, Index Type (misalnya HNSW), Index Parameter M (jumlah tetangga per node, rentang 4–64), dan toggle Scalar Field. Sebagai contoh, untuk 8 juta vektor berdimensi 768 menggunakan indeks HNSW (M=4), kalkulator memperkirakan kebutuhan memori sebesar 31,2 GB dan 22,9 GB untuk data mentah, serta merekomendasikan konfigurasi kluster sebesar 40 core CPU dan memori 160 GB. Konfigurasi yang direkomendasikan untuk setiap komponen Milvus adalah: layanan metadata (1 instans 4 core, 16 GB), Proxy (1 instans 2 core, 8 GB), Query Node (2 instans 4 core, 16 GB), Index Node (1 instans 4 core, 16 GB), dan Data Node (1 instans 2 core, 8 GB). Estimasi ini didasarkan pada data eksperimen. Kami menyarankan Anda menyesuaikan konfigurasi berdasarkan hasil pengujian sendiri sebelum menerapkannya di lingkungan produksi.
Resource parameters
High availability configuration
Konfigurasi high availability menstabilkan kluster online Anda melalui mekanisme replika dua node. Fitur ini juga memuat dua replika data Anda secara default, yang secara signifikan meningkatkan toleransi kesalahan dan keandalan sistem. Perhatikan bahwa mengaktifkan high availability menggandakan kebutuhan resource dibandingkan konfigurasi non-HA. Sebelum mengaktifkan fitur ini, lakukan penilaian dan perencanaan menyeluruh terhadap kebutuhan resource kluster produksi Anda.
Input resource scale
|
Parameter |
Description |
|
Vector Count (Millions) |
Jumlah vektor secara langsung menentukan ukuran indeks dan volume data yang dipindai selama kueri. Jumlah vektor yang lebih besar memerlukan penyimpanan lebih banyak, meningkatkan kompleksitas komputasi dalam pembuatan indeks dan kueri, serta menghasilkan waktu pemrosesan lebih lama dan tuntutan perangkat keras yang lebih tinggi. |
|
Vector Dimension |
Dimensi vektor memengaruhi kompleksitas dan presisi indeks. Vektor berdimensi lebih tinggi meningkatkan kompleksitas indeks dan biaya komputasi pencarian kemiripan. Hal ini berdampak pada biaya penyimpanan dan kecepatan kueri, terutama jika tidak menerapkan strategi reduksi dimensi atau kuantisasi yang efektif. |
Index type
Jenis indeks merupakan faktor kunci yang menentukan kebutuhan resource dan performa kueri. Algoritma indeks yang berbeda memiliki persyaratan berbeda terhadap memori, CPU, dan waktu kueri. Jenis indeks yang didukung dijelaskan di bawah ini.
|
Parameter |
Description |
|
HNSW |
HNSW (Hierarchical Navigable Small World) adalah indeks berbasis graf yang memberikan efisiensi kueri tinggi, terutama pada ruang data berdimensi tinggi. Namun, indeks ini membutuhkan lebih banyak resource komputasi dan memori. Indeks ini cocok untuk skenario yang memerlukan kecepatan kueri tercepat, memiliki resource mencukupi, dan melibatkan pemrosesan data berdimensi tinggi. |
|
IVF_FLAT |
Memberikan keseimbangan antara presisi dan kecepatan kueri, sehingga cocok untuk sebagian besar skenario. Indeks ini mengurangi kompleksitas komputasi melalui pengelompokan, memberikan peningkatan performa signifikan dibandingkan indeks FLAT dengan konsumsi resource relatif rendah. Indeks ini ideal untuk skenario dengan set data besar yang memerlukan keseimbangan antara performa kueri dan biaya resource. |
|
DISKANN |
DISKANN adalah teknik pencarian approximate nearest neighbor (ANN) berbasis disk yang dirancang untuk pengambilan cepat dan efisien pada set data berskala besar. Teknik ini menggunakan algoritma graf Vamana untuk mencapai pengindeksan dan pengambilan vektor yang efisien meskipun dengan memori terbatas, sehingga cocok untuk memproses data berdimensi tinggi berskala sangat besar. |
|
SCANN |
SCANN adalah struktur indeks pencarian approximate nearest neighbor (ANN) yang efisien, cocok untuk set data berskala besar yang memerlukan pengambilan cepat namun tidak memerlukan presisi tinggi. Indeks ini menyeimbangkan kecepatan dan konsumsi resource dengan menggunakan pemangkasan ruang pencarian dan kuantisasi, dengan fokus pada maximum inner product search (MIPS). |
|
FLAT |
Memberikan presisi kueri tertinggi dengan melakukan pencocokan eksak, tetapi mengorbankan kecepatan kueri. Performanya mungkin tidak memuaskan pada set data berskala besar. Indeks ini cocok untuk skenario dengan volume data relatif kecil (misalnya puluhan juta) yang memiliki persyaratan ketat terhadap presisi kueri dan dapat mentolerir kecepatan kueri yang lebih lambat. |
|
IVF_SQ8 |
Mempercepat proses pengambilan melalui kuantisasi, sehingga cocok untuk skenario dengan keterbatasan resource yang memerlukan recall tinggi. Namun, presisi kuerinya mungkin lebih rendah dibandingkan HNSW. Indeks ini ideal untuk aplikasi pada set data berskala besar dengan resource terbatas dan kebutuhan tingkat recall tinggi. |
Index parameters
-
HNSW: Anda perlu mengatur nilai M, yang menentukan jumlah tetangga untuk setiap node. Nilai M yang lebih besar meningkatkan recall dan presisi indeks, tetapi juga meningkatkan waktu pembuatan indeks dan penggunaan memori. Nilai M yang lebih kecil membangun indeks lebih cepat dengan memori lebih sedikit, tetapi mungkin mengorbankan sebagian presisi. Nilai awal yang direkomendasikan untuk M adalah
lg(N), di mana N adalah jumlah total vektor. Anda kemudian dapat menyesuaikan nilai ini berdasarkan performa kueri aktual. Misalnya, coba atur M ke 16, 32, atau 64 dan sesuaikan berdasarkan hasilnya. -
IVF_FLAT dan IVF_SQ8: Anda perlu mengatur jumlah kluster (daftar terbalik) untuk mempartisi ruang vektor. Jumlah kluster yang lebih besar meningkatkan presisi dan recall indeks, tetapi juga meningkatkan waktu pembuatan indeks dan biaya komputasi kueri. Jumlah kluster yang lebih kecil mengurangi kompleksitas indeks, tetapi mungkin menyebabkan penurunan presisi.
-
SCANN: Anda dapat menggunakan parameter
with_raw_datauntuk mengontrol apakah data mentah disimpan dalam indeks. Jika sistem Anda terutama digunakan untuk pencarian aproksimasi cepat dan tidak memerlukan akses sering ke data mentah, kami menyarankan mengatur nilai ini keFalse. Jika tidak, atur keTrue.
Scalar fields
Saat Anda mengaktifkan opsi Scalar Fields, Anda dapat mengatur parameter Average Size of Data per Row. Hal ini membantu sistem pengindeksan mengalokasikan memori, penyimpanan, dan resource sharding secara efisien untuk mengoptimalkan performa kueri.