AISAQCompatible with Milvus 2.6.4+
AISAQ adalah indeks vektor berbasis disk yang memperluas DISKANN untuk menangani set data berskala miliaran tanpa melebihi batas RAM. Tidak seperti DISKANN, yang menyimpan vektor terkompresi dalam memori, AISAQ menyimpan semua data pada disk-menawarkan dua mode untuk menyeimbangkan kinerja dan biaya penyimpanan.
Gunakan AISAQ ketika dataset vektor Anda terlalu besar untuk ditampung dalam RAM, atau ketika Anda perlu mengoptimalkan biaya infrastruktur dengan menukar beberapa kinerja kueri untuk mengurangi kebutuhan memori.
Cara kerja AISAQ
Diagram di atas membandingkan tata letak penyimpanan DISKANN, AISAQ-Performance, dan AISAQ-Scale, yang menunjukkan bagaimana data (vektor mentah, daftar tepi, dan kode PQ) didistribusikan antara RAM dan disk.
Aisaq Vs Diskann
Dasar: Rekap DISKANN
Dalam DISKANN, vektor mentah dan daftar tepi disimpan di disk, sedangkan vektor yang dikompresi PQ disimpan di memori (DRAM).
Ketika DISKANN berjalan ke sebuah simpul (misalnya, vektor 0):
Ia memuat vektor mentah(raw_vector_0) dan daftar sisi(edgelist_0) dari disk.
Daftar sisi menunjukkan tetangga mana yang akan dikunjungi berikutnya (node 2, 3, dan 5 dalam contoh ini).
Vektor mentah digunakan untuk menghitung jarak yang tepat ke vektor kueri untuk pemeringkatan.
Data PQ dalam memori digunakan untuk penyaringan jarak perkiraan untuk memandu penjelajahan berikutnya.
Karena data PQ sudah di-cache di DRAM, setiap kunjungan node hanya membutuhkan satu disk I/O, sehingga mencapai kecepatan kueri yang tinggi dengan penggunaan memori yang moderat.
Untuk penjelasan rinci tentang komponen dan parameter ini, lihat DISKANN.
Mode AISAQ
AISAQ menawarkan dua strategi penyimpanan berbasis disk. Perbedaan utamanya adalah bagaimana data yang dikompresi PQ disimpan.
Kinerja AISAQ
Performa AISAQ mencapai penyimpanan berbasis disk sepenuhnya dengan memindahkan data PQ dari memori ke disk sambil mempertahankan IOPS yang rendah melalui kolokasi dan redundansi data.
Dalam mode ini:
Vektor mentah setiap node, daftar tepi, dan data PQ tetangganya disimpan bersama pada disk.
Tata letak ini memastikan bahwa mengunjungi sebuah node (misalnya, vektor 0) hanya membutuhkan satu disk I/O.
Namun, karena data PQ disimpan secara berlebihan di dekat beberapa node, ukuran file indeks meningkat secara signifikan, menghabiskan lebih banyak ruang disk.
Skala AISAQ
Skala AISAQ berfokus pada pengurangan penggunaan ruang disk sambil tetap menyimpan semua data di disk.
Dalam mode ini:
Data PQ disimpan secara terpisah pada disk, tanpa redundansi.
Desain ini meminimalkan ukuran indeks tetapi menyebabkan lebih banyak operasi I / O selama penjelajahan grafik.
Untuk mengurangi biaya overhead IOPS, AISAQ memperkenalkan dua pengoptimalan:
Strategi penyusunan ulang yang mengurutkan vektor PQ berdasarkan prioritas untuk meningkatkan lokalitas data.
Cache PQ dalam DRAM (pq_cache_size) yang menyimpan data PQ yang sering diakses.
Hasilnya, skala AISAQ mencapai efisiensi penyimpanan yang lebih baik tetapi kinerja lebih rendah daripada DISKANN atau AISAQ-Performance.
Contoh konfigurasi
# milvus.yaml
knowhere:
AISAQ:
build:
max_degree: 56 # Maximum degree of the Vamana graph
pq_code_budget_gb_ratio: 0.125 # Size limit on the PQ code (compared with raw data)
search_list_size: 100 # Size of the candidate list during building graph
search:
beam_width_ratio: 4 # Ratio between the maximum number of IO requests per search iteration and CPU number
Parameter khusus AISAQ
AISAQ mewarisi banyak parameter dari DISKANN. Untuk menghindari redundansi, hanya parameter khusus AISAQ yang dirinci di bawah ini. Untuk deskripsi parameter bersama seperti max_degree, pq_code_budget_gb_ratio, search_list_size, dan beam_width_ratio, lihat DISKANN.
Parameter |
Deskripsi |
Rentang Nilai |
Saran Penyetelan |
|---|---|---|---|
|
Jumlah vektor PQ yang disimpan sebaris per node. Menentukan tata letak penyimpanan (mode Performa vs Skala). |
Tipe Bilangan bulat Rentang: [0, max_degree] Nilai default: |
Semakin dekat Ketika Catatan: Ini sangat tergantung pada kinerja disk. Jika kinerja disk buruk, tidak disarankan untuk mengaktifkan opsi ini, karena bandwidth disk yang terbatas dapat menjadi hambatan dan menurunkan kinerja secara keseluruhan. |
|
Mengaktifkan pengurutan vektor PQ berdasarkan prioritas untuk meningkatkan lokalitas I/O. |
Jenis Boolean Rentang: [benar, salah] Nilai default: |
Mengurangi I/O kueri tetapi meningkatkan waktu pembuatan indeks. |
|
Ukuran cache PQ dalam DRAM (byte). |
Jenis: Bilangan bulat Rentang: [0, 1<<30] Nilai default: |
Cache yang lebih besar meningkatkan kinerja kueri tetapi meningkatkan penggunaan DRAM. |
Pertimbangan
Performa disk penting. AISAQ sangat bergantung pada IOPS SSD; penyimpanan yang buruk dapat mengurangi QPS.
Mode performa AISAQ ≈ latensi DISKANN, tetapi mungkin memerlukan ruang disk beberapa kali lebih besar.
Mode skala AISAQ cocok untuk pencarian offline atau beban kerja pengarsipan data di mana QPS tidak terlalu penting.