Milvus
Zilliz
Beranda
  • Panduan Pengguna
  • Home
  • Docs
  • Panduan Pengguna

  • Indeks

  • Indeks Vektor Mengambang

  • AISAQ

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 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

inline_pq

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: -1

Semakin dekat inline_pq ke max_degree, kinerja cenderung lebih baik, tetapi ukuran file indeks meningkat secara signifikan.

Ketika inline_pq mendekati 0, kinerja menurun, dan ukuran indeks menjadi serupa dengan DISKANN.

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.

rearrange

Mengaktifkan pengurutan vektor PQ berdasarkan prioritas untuk meningkatkan lokalitas I/O.

Jenis Boolean

Rentang: [benar, salah]

Nilai default: false

Mengurangi I/O kueri tetapi meningkatkan waktu pembuatan indeks.

pq_cache_size

Ukuran cache PQ dalam DRAM (byte).

Jenis: Bilangan bulat

Rentang: [0, 1<<30]

Nilai default: 0

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.

Coba Milvus yang Dikelola secara Gratis

Zilliz Cloud bebas masalah, didukung oleh Milvus dan 10x lebih cepat.

Mulai
Umpan balik

Apakah halaman ini bermanfaat?