Data yang sama, kueri yang sama — tetapi strategi pencarian yang berbeda. Seret titik kueri, sesuaikan nprobe, lalu tekan "Run Search " untuk melihat bagaimana " IVF " melewati sebagian besar data.
nprobe " yang paling dekat: kluster-kluster ini akan menyala. Semua kluster lainnya dilewati sepenuhnya.Kompromi: semakin banyak nprobe → lebih banyak kluster yang dipindai → recall lebih tinggi tetapi lebih lambat. Lebih kecil nprobe → lebih cepat tetapi Anda mungkin melewatkan tetangga sejati yang berada di kluster yang belum dipindai. Cobalah mengatur nprobe = 1 dan menyeret kueri ke dekat batas klaster untuk melihat penurunan recall.
IVF (Inverted File) adalah indeks tetangga terdekat aproksimatif berbasis pengelompokan. Pada saat pembuatan, k-means membagi semua vektor menjadi nlist kluster, masing-masing diwakili oleh sentroidnya. Saat pencarian, sistem pertama-tama membandingkan kueri hanya dengan sentroid-sentroid tersebut, memilih nprobe , dan memindai hanya vektor-vektor di dalamnya — melewatkan yang lainnya.
Milvus menyediakan beberapa varian " IVF " yang menukar memori dengan akurasi: IVF_FLAT menyimpan vektor mentah (paling akurat), IVF_SQ8 mengompres setiap dimensi menjadi satu byte (menggunakan memori ~4× lebih sedikit, dengan sedikit pengorbanan recall), dan IVF_PQ menerapkan kuantisasi produk untuk kompresi yang jauh lebih tinggi dengan biaya recall yang lebih besar.
nlist (waktu pembangunan): jumlah klaster k-means. Titik awal yang umum adalah 4 × sqrt(N) untuk N vektor. Semakin banyak klaster, berarti masing-masing klaster semakin kecil — pemindaian lebih cepat, tetapi penyapuan pusat massa (centroid sweep) membutuhkan biaya lebih besar dan efek batas semakin meningkat.nprobe (waktu kueri): berapa banyak kluster yang akan dipindai per kueri. Ini adalah pengatur utama antara recall dan latensi — persis apa yang dikendalikan oleh penggeser di atas. Mulailah dari angka sekitar nlist / 16 dan tingkatkan hingga recall mencapai target Anda.IVF dapat dibangun dengan cepat, memiliki beban memori yang kecil di atas vektor-vektor tersebut, dan mudah dipahami — tetapi pada target recall yang sama, HNSW biasanya menjawab kueri lebih cepat di memori. Pilih IVF saat Anda sering membangun ulang indeks (kecepatan pembangunan penting), saat memori terbatas (IVF_SQ8/IVF_PQ), atau saat Anda menginginkan perilaku pemindaian yang dapat diprediksi dan dapat disesuaikan. Pilih HNSW untuk latensi kueri dalam memori terendah, dan DiskANN ketika vektor sama sekali tidak muat di RAM.
Ketiga vektor tersebut mengelompokkan dengan cara yang sama; perbedaannya terletak pada cara vektor disimpan di dalam kelompok. " IVF_FLAT " menyimpan vektor float mentah (akurasi pengambilan tertinggi). " IVF_SQ8 " mengkuantisasi setiap dimensi menjadi 8 bit, mengurangi penggunaan memori sekitar 4 kali lipat dengan sedikit penurunan akurasi pengambilan. " IVF_PQ " mengganti vektor dengan kode kuantisasi produk pendek untuk kompresi tertinggi dan penurunan akurasi pengambilan terbesar.
Aturan praktis yang umum adalah ` nlist ` = 4 × `sqrt(N)` untuk `N` vektor, kemudian sesuaikan ` nprobe ` pada saat kueri. ` nprobe ` yang lebih besar memindai lebih banyak kluster: recall lebih tinggi, latensi lebih tinggi. Mulailah sekitar ` nlist/16` dan tingkatkan hingga recall pada kumpulan kueri yang disisihkan memenuhi target Anda.
Hal ini disebabkan oleh batas-batas kluster. Jika kueri berada di dekat tepi suatu kluster, beberapa tetangga sebenarnya mungkin berada di kluster yang berdekatan yang tidak termasuk di antara kluster-kluster yang dipindai ( nprobe ). Anda dapat melihat hal ini dalam visualisasi dengan menyeret titik kueri ke dekat batas dengan nilai " nprobe " = 1.
Pada tingkat recall yang sama, " HNSW " biasanya lebih cepat untuk pencarian dalam memori tetapi menggunakan lebih banyak memori dan dibangun lebih lambat. " IVF " dibangun dengan cepat dan cocok dipadukan dengan kuantisasi (SQ8/PQ) saat memori terbatas. Untuk dataset yang sepenuhnya melebihi RAM, pertimbangkan DiskANN sebagai gantinya.
Pelajari lebih lanjut: baca dokumentasi "IVF_FLAT " untuk parameter indeks, atau lihat "Index Explained " untuk panduan pengambilan keputusan lengkap.
Ikuti langkah demi langkah pencarian graf berlapis — mulai dari lompatan antar-lapisan hingga penelusuran lokal.
Lihat bagaimana PQ-in-RAM + full-vectors-on-SSD memungkinkan Anda mencari dataset berskala miliaran pada laptop.
Seret titik kueri dan beralihlah antara " L2", "Cosine", dan " IP " untuk melihat bagaimana "nearest" berubah.