Referensi Indeks ScaNN

Pilih versi dokumentasi:

Halaman ini menyediakan materi referensi untuk Indeks ScaNN.

Parameter penyempurnaan

Parameter indeks dan tanda database berikut digunakan bersama-sama untuk menemukan keseimbangan yang tepat antara perolehan dan QPS.

Parameter penyesuaian Deskripsi Jenis opsi
max_num_levels Jumlah maksimum tingkat sentroid dari hierarki pengelompokan K-means.
  • Indeks hierarki dua tingkat: Secara default disetel ke 1 untuk hierarki dua tingkat (1 tingkat centroid + tingkat daun bawah).
  • Indeks pohon tiga tingkat: Secara default ditetapkan ke 2 untuk pohon tiga tingkat (2 tingkat centroid + tingkat daun bawah)
  • Tetapkan nilai ke 2 jika jumlah baris vektor melebihi 100 juta baris.
  • Tetapkan nilai ke 1 jika jumlah baris vektor kurang dari 10 juta baris.
  • Tetapkan ke 1 atau 2 jika jumlah baris vektor berada di antara 10 juta dan 100 juta baris untuk mengoptimalkan waktu pembuatan indeks (tetapkan ke 2) atau mengoptimalkan perolehan penelusuran (tetapkan ke 1).
Pembuatan indeks
(opsional)
num_leaves Jumlah partisi yang akan diterapkan ke indeks ini. Jumlah partisi yang Anda terapkan saat membuat indeks memengaruhi performa indeks. Dengan meningkatkan partisi untuk sejumlah vektor, Anda membuat indeks yang lebih terperinci, yang meningkatkan perolehan dan performa kueri. Namun, hal ini akan menyebabkan waktu pembuatan indeks yang lebih lama.

Karena pohon tiga tingkat dibuat lebih cepat daripada pohon dua tingkat, Anda dapat meningkatkan num_leaves_value saat membuat indeks pohon tiga tingkat untuk mencapai performa yang lebih baik.
  • Indeks dua tingkat: Tetapkan nilai ini ke nilai apa pun antara 1 dan 1048576.

    Untuk indeks yang menyeimbangkan pembuatan indeks yang cepat dan performa penelusuran yang baik, gunakan sqrt(ROWS) sebagai titik awal, dengan ROWS adalah jumlah baris vektor. Jumlah vektor yang dimiliki setiap partisi dihitung oleh
    ROWS/sqrt(ROWS) = sqrt(ROWS).

    Karena indeks pohon dua tingkat dapat dibuat pada set data dengan kurang dari 10 juta baris vektor, setiap partisi akan menyimpan kurang dari (sqrt(10M)) vektor, yaitu 3200 vektor. Untuk kualitas penelusuran vektor yang optimal, sebaiknya minimalkan jumlah vektor di setiap partisi. Ukuran partisi yang direkomendasikan adalah sekitar 100 vektor per partisi, jadi tetapkan num_leaves ke ROWS/100. Jika Anda memiliki 10 juta vektor,Anda akan menetapkan num_leaves ke 100.000.
  • Indeks tiga tingkat: Tetapkan nilai ini ke nilai apa pun antara 1 dan 1048576.

    Jika Anda tidak yakin dalam memilih nilai yang tepat, gunakan power(ROWS, 2/3) sebagai titik awal, dengan ROWS adalah jumlah baris vektor. Jumlah vektor yang dimiliki setiap partisi dihitung oleh
    ROWS/power(ROWS, 2/3) = power(ROWS, 1/3).

    Karena indeks pohon tiga tingkat dapat dibuat pada set data dengan baris vektor lebih dari 100 juta, setiap partisi akan menyimpan lebih dari
    (power(100M, 1/3)) vektor, yaitu 465 vektor. Untuk kualitas penelusuran vektor yang optimal, sebaiknya minimalkan jumlah vektor di setiap partisi. Ukuran partisi yang direkomendasikan adalah sekitar 100 vektor per partisi, jadi tetapkan num_leaves ke ROWS/100. Jika Anda memiliki 100 juta vektor, Anda akan menetapkan num_leaves ke 1 juta.
Pembuatan indeks
(wajib)
quantizer Jenis penguantisasi yang ingin Anda gunakan untuk pohon K-means. Nilai default ditetapkan ke SQ8 yang memberikan performa kueri yang lebih baik dengan kehilangan perolehan kembali minimal (biasanya kurang dari 1-2%).

Tetapkan ke FLAT jika perolehan kembali 99% atau lebih tinggi diperlukan.
Pembuatan indeks
(opsional)
scann.enable_inline_filtering Mengaktifkan dukungan pemfilteran inline yang membuat kueri data Anda dan menerapkan filter langsung dalam operasi penelusuran kemiripan vektor. Kueri kemiripan vektor ini menggunakan filter pada tabel database yang sama dan menyelesaikan evaluasi filter saat menghitung jarak untuk identifikasi tetangga terdekat. Opsi ini dinonaktifkan secara default.

Untuk mengaktifkan pemfilteran inline, tetapkan parameter ini ke true. Jika Anda melihat penurunan performa, tetapkan ke false.

Opsi ini tersedia dalam Pratinjau.
Waktu proses kueri
(opsional)
scann.enable_pca Mengaktifkan Analisis Komponen Utama (PCA), yang merupakan teknik pengurangan dimensi yang digunakan untuk secara otomatis mengurangi ukuran embedding jika memungkinkan. Opsi ini diaktifkan secara default.

Setel ke false jika Anda melihat penurunan kualitas ingatan.
Pembuatan indeks
(opsional)
scann.num_leaves_to_search Flag database ini mengontrol jumlah absolut daun atau partisi yang akan ditelusuri sehingga Anda dapat menyeimbangkan antara perolehan dan QPS. Nilai defaultnya adalah 1% dari nilai yang ditetapkan di num_leaves.

Nilai yang lebih tinggi akan menghasilkan perolehan yang lebih baik, tetapi QPS yang lebih rendah. Demikian pula, nilai yang lebih rendah akan menghasilkan perolehan yang lebih rendah, tetapi QPS yang lebih tinggi.
Waktu proses kueri
(opsional)
scann.pre_reordering_num_neighbors Jika disetel, tanda database menentukan jumlah tetangga kandidat yang akan dipertimbangkan selama tahap pengurutan ulang setelah penelusuran awal mengidentifikasi sekumpulan kandidat. Tetapkan parameter ini ke nilai yang lebih tinggi daripada jumlah tetangga yang ingin Anda tampilkan dalam kueri.

Nilai yang lebih tinggi menghasilkan perolehan yang lebih baik, tetapi QPS yang lebih rendah. Tetapkan nilai ini ke 0 untuk menonaktifkan pengurutan ulang. Nilai defaultnya adalah 0 jika PCA tidak diaktifkan selama pembuatan indeks. Jika tidak, defaultnya adalah 50 x K, dengan K adalah LIMIT yang ditentukan dalam kueri.
Waktu proses kueri
(opsional)
scann.num_search_threads Jumlah thread penelusur untuk penelusuran multi-thread. Hal ini dapat membantu mengurangi latensi kueri tunggal dengan menggunakan lebih dari satu thread untuk penelusuran ANN ScaNN dalam aplikasi yang sensitif terhadap latensi. Setelan ini tidak meningkatkan latensi kueri tunggal jika database sudah terikat CPU. Nilai defaultnya adalah 2. Waktu proses kueri
(opsional)

Langkah berikutnya