DiskANN menyimpan salinan kecil yang dikompresi denganPQ dari setiap vektor di RAM serta vektor lengkap + grafik di SSD. Pencarian menjelajahi grafik dengan perbandingan RAM yang murah, kemudian menyusun ulang peringkat kandidat teratas dengan beberapa pembacaan disk yang mahal.
Satu komoditas SSD dapat dengan mudah menampung sisi disk. Sisi RAM dapat muat di laptop mana pun. Tanpa trik PQ, Anda memerlukan server dengan ratusan GB RAM hanya untuk memuat dataset tersebut.
PQ ≈ 1 µs, SSD ≈ 100 µs. Angka riil bergantung pada perangkat keras.R) yang dioptimalkan untuk tata letak disk berurutan. Tanpa hierarki — hanya satu grafik besar.L. Pilih yang terbaik, perluas tetangganya, perkirakan jarak hanya menggunakan kode in-RAM PQ . Tidak ada I/O disk selama proses beam-walk.Model mental: " PQ " adalah tes murah untuk menilai "apakah lingkungan ini menjanjikan?". Pembacaan disk adalah pemeriksaan mahal untuk "memverifikasi secara aktual". " DiskANN " menyelesaikan sebagian besar pekerjaannya dengan tes murah tersebut.
DiskANN adalah indeks tetangga terdekat aproksimatif berbasis graf yang dirancang untuk dataset yang tidak muat dalam RAM. Sistem ini membangun grafVamana berlapis tunggal yang disusun untuk akses disk yang efisien, menyimpan kode kuantisasi produk (PQ) berukuran kecil untuk setiap vektor di memori, dan menyimpan vektor presisi penuh serta tepi graf di SSD. Proses pencarian menelusuri graf menggunakan perbandingan in-RAM PQ yang efisien dan hanya mengakses disk untuk menyusun ulang peringkat beberapa finalis.
Dalam Milvus, DiskANN mendukung opsi indeks pada disk: koleksi berskala miliaran dapat dicari pada mesin dengan puluhan — bukan ratusan — gigabyte RAM, sementara langkah pemeringkatan ulang pada disk menjaga recall mendekati indeks grafik dalam memori.
R (derajat graf, waktu pembuatan): jumlah maksimum tepi per simpul dalam graf " Vamana ". Nilai R yang lebih tinggi memberikan konektivitas dan recall yang lebih baik, dengan konsekuensi graf yang lebih besar di disk dan proses pembuatan yang lebih lambat.L / search_list (waktu kueri): kumpulan kandidat yang dipertahankan selama pencarian beam — pengatur utama recall/latensi, setara dengan ef di HNSW. Nilainya harus setidaknya sebesar top-K.Pilih " DiskANN " ketika dataset (atau penggunaan memori) melebihi kapasitas " RAM": opsi ini melayani kueri dengan akurasi tinggi menggunakan sebagian kecil memori, dengan imbalan latensi tingkat milidetik yang didominasi oleh pembacaan " SSD ". Jika semuanya muat dengan nyaman di memori, " HNSW " memberikan respons lebih cepat. Jika Anda membutuhkan pembentukan indeks yang cepat atau penghematan memori sedang tanpa melibatkan disk, varian " IVF " berada di antara keduanya.
Ketika vektor Anda tidak lagi muat di RAM — atau RAM untuk menyimpannya membutuhkan biaya lebih dari yang ingin Anda bayar. Satu miliar vektor float 768-dimensi membutuhkan ~3 TB memori untuk HNSW, tetapi hanya puluhan GB RAM ditambah SSD dengan DiskANN. Jika dataset muat dengan nyaman di memori, HNSW tetap menjadi pilihan dengan latensi lebih rendah.
Kecepatan " NVMe " ( SSD ) merupakan persyaratan utama, karena latensi kueri didominasi oleh beberapa pembacaan disk acak (masing-masing ~100 µs). Kebutuhan " RAM " relatif sederhana: kira-kira kode " PQ " (misalnya 32–64 byte per vektor) ditambah buffer kerja.
Per kueri, ya — biasanya dalam milidetik satu digit rendah dibandingkan sub-milidetik untuk " HNSW" dalam memori, karena setiap "disk re-rank" ~100× lebih lambat daripada akses " RAM ". Komprominya adalah biaya: " DiskANN " melayani dataset yang sama dengan " RAM " yang lebih rendah satu orde besar sambil mempertahankan recall di atas 90–95%.
PQ Kode hanya digunakan untuk mengarahkan penelusuran graf, bukan untuk menghasilkan skor akhir. Sebelum mengembalikan hasil, ` DiskANN ` membaca vektor presisi penuh dari kandidat teratas dari ` SSD ` dan menyusun ulang peringkatnya secara tepat, memperbaiki kesalahan kuantisasi yang tidak dapat diperbaiki oleh indeks berbasis ` PQ` murni seperti ` IVF_PQ `.
Pelajari lebih lanjut: baca dokumentasi "DiskANN " untuk persyaratan pengaturan, atau lihat "Index Explained " untuk panduan pengambilan keputusan lengkap.
Ikuti langkah demi langkah pencarian graf berlapis — mulai dari lompatan antar-lapisan hingga penelusuran lokal.
Perbandingan berdampingan antara pencarian brute-force dan pencarian terkluster. Sesuaikan " nprobe " secara real-time.
Seret titik kueri dan beralihlah antara " L2", "Cosine", dan " IP " untuk melihat bagaimana "nearest" berubah.