Amati perjalanan pencarian melalui grafik berlapis — dari lapisan atas yang jarang (jalan raya) hingga lapisan bawah yang padat (jalan lokal). Seret titik kueri pada Lapisan 0 dan sesuaikan M / ef untuk melihat bagaimana grafik tersebut berubah.
M ). Lapisan yang lebih tinggi bersifat jarang (sedikit simpul, tepi panjang = "jalan raya"). Lapisan 0 bersifat padat (semua simpul, tepi pendek = "jalan lokal").ef": pada lapisan terbawah, alih-alih berhenti di minimum lokal pertama, " HNSW " mempertahankan kumpulan ef kandidat terbaik dan memperluas lingkungan sekitarnya. Lebih besar ef → semakin akurat namun semakin lambat.Mengapa ini cepat: lapisan teratas bertindak seperti indeks di atas indeks — Anda menempuh jarak yang sangat jauh hanya dalam beberapa lompatan, lalu memperbesar. Untuk N titik, pencarian mengunjungi sekitar O(log N) node, bukan N.
HNSW (Hierarchical Navigable Small World) adalah algoritma tetangga terdekat aproksimatif berbasis graf. Algoritma ini mengatur vektor ke dalam tumpukan graf "small-world" yang dapat dinavigasi: lapisan atas yang jarang dengan tepi jangkauan panjang untuk rute kasar, dan lapisan bawah yang padat dengan tepi pendek untuk perjalanan akhir yang lebih detail. Pencarian secara rakus melompat menuju kueri pada setiap lapisan, lalu turun ke lapisan berikutnya — mengunjungi kira-kira O(log N) node alih-alih memindai seluruh N.
HNSW adalah indeks vektor dalam memori yang paling banyak digunakan, dan indeks graf default di Milvus. Milvus juga menawarkan HNSW_SQ dan HNSW_PQ varian yang mengkuantisasi vektor yang disimpan untuk mengurangi penggunaan memori dengan sedikit pengorbanan pada recall.
M (waktu pembangunan): jumlah tepi maksimum per simpul, pengaturan yang sama dengan penggeser di atas. Nilai tipikal adalah 8–64. Nilai M yang lebih tinggi meningkatkan recall dan konektivitas graf, tetapi meningkatkan penggunaan memori secara linier dan memperlambat proses pembangunan.efConstruction (waktu pembuatan): ukuran kumpulan kandidat yang digunakan saat menyisipkan simpul. Nilai yang lebih tinggi menghasilkan grafik berkualitas lebih baik (recall yang lebih tinggi) dengan mengorbankan waktu pembuatan indeks yang lebih lambat. Nilai umumnya berkisar antara 100–500.ef / ef_search (waktu kueri): kumpulan kandidat yang disimpan selama proses Layer-0 walk — pengatur utama recall/latensi pada saat pencarian. Nilainya harus setidaknya sebesar top-K. Tingkatkan nilainya hingga recall mencapai titik jenuh; latensi akan meningkat secara linier seiring dengan peningkatan tersebut.HNSW biasanya memberikan latensi kueri terbaik dengan recall tinggi untuk pencarian dalam memori — itulah mengapa ini menjadi pilihan default ketika dataset (ditambah overhead graf) muat dalam RAM. Biayanya adalah memori dan waktu pembangunan: graf menambah overhead yang terasa per vektor, dan penyisipan lebih lambat daripada penugasan k-means di IVF. Pilih IVF saat Anda membutuhkan pembuatan indeks yang cepat atau kuantisasi agresif, dan DiskANN saat dataset terlalu besar untuk RAM tetapi Anda tetap membutuhkan tingkat recall yang tinggi.
M membatasi jumlah tepi yang disimpan setiap simpul per lapisan. Nilai M yang lebih besar membuat grafik lebih terhubung — recall lebih tinggi dan perutean lebih kuat — tetapi memori bertambah secara linier seiring dengan M dan pembuatan indeks menjadi lebih lambat. Nilai antara 8 dan 64 mencakup sebagian besar beban kerja; 16–32 adalah titik optimal yang umum.
Keduanya merupakan ukuran kumpulan kandidat, yang diterapkan pada waktu yang berbeda. " efConstruction " digunakan saat membangun indeks: ini menentukan seberapa teliti setiap simpul yang dimasukkan mencari tetangganya, sehingga mengontrol kualitas graf. " ef " (ef_search) digunakan saat melakukan kueri: ini mengontrol seberapa luas pencarian Layer-0, menukar latensi dengan recall pada setiap kueri.
Secara kasar, vektor mentah ditambah grafik: sekitar d × 4 byte per vektor untuk data float32, ditambah sekitar M × 2 × 8 byte tepi per simpul. Untuk penerapan dengan keterbatasan memori, Milvus menawarkan HNSW_SQ dan HNSW_PQ, yang mengkuantisasi vektor yang disimpan, atau DiskANN, yang memindahkan vektor lengkap ke SSD.
Gunakan " HNSW " ketika latensi kueri pada tingkat recall tinggi menjadi prioritas dan indeks muat dalam memori — biasanya metode ini yang paling unggul. Pilih " IVF " ketika Anda sering membangun ulang indeks (proses pembangunannya jauh lebih cepat), atau ketika dikombinasikan dengan kuantisasi " SQ8" / "PQ " untuk menyesuaikan dengan anggaran memori yang ketat.
Pelajari lebih lanjut: baca dokumentasi "HNSW " untuk parameter indeks yang tepat, atau lihat "Index Explained " untuk panduan pengambilan keputusan lengkap.
Perbandingan berdampingan antara pencarian brute-force dan pencarian terkluster. Sesuaikan " nprobe " secara real-time.
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.