Referensi Indeks ScaNN

Pilih versi dokumentasi:

Halaman ini menyediakan materi referensi untuk indeks ScaNN.

Parameter penyempurnaan

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

Parameter penyempurnaan Deskripsi Jenis opsi
max_num_levels Jumlah maksimum tingkat sentroid dari pohon pengelompokan K-means.
  • Indeks pohon dua tingkat: Tetapkan ke 1 secara default untuk pohon dua tingkat (1 tingkat sentroid + tingkat daun bawah).
  • Indeks pohon tiga tingkat: Tetapkan ke 2 secara default untuk pohon tiga tingkat (2 tingkat sentroid + 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 antara 10 juta dan 100 juta baris untuk mengoptimalkan waktu build 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 akan memengaruhi performa indeks. Dengan meningkatkan partisi untuk sejumlah vektor, Anda membuat indeks yang lebih mendetail, yang meningkatkan perolehan dan performa kueri. Namun, hal ini akan memperpanjang waktu pembuatan indeks.

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 build indeks 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 dengan
    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 memiliki 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,tetapkan 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 dengan
    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 memiliki 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, tetapkan num_leaves ke 1 juta.
Pembuatan indeks
(wajib)
quantizer Jenis quantizer yang ingin Anda gunakan untuk pohon K-means. Nilai default ditetapkan ke SQ8 yang memberikan performa kueri yang lebih baik dengan kehilangan perolehan minimal (biasanya kurang dari 1-2%).

Tetapkan ke FLAT jika perolehan 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 mengamati penurunan performa, tetapkan ke false.

Opsi ini tersedia dalam Pratinjau.
Runtime kueri
(opsional)
scann.enable_pca Mengaktifkan Principal Component Analysis (PCA), yang merupakan teknik pengurangan dimensi yang digunakan untuk mengurangi ukuran embedding secara otomatis jika memungkinkan. Opsi ini diaktifkan secara default.

Tetapkan ke false jika Anda mengamati penurunan perolehan.
Pembuatan indeks
(opsional)
scann.num_leaves_to_search Flag database ini mengontrol jumlah absolut daun atau partisi yang akan ditelusuri sehingga Anda dapat menukar antara perolehan dan QPS. Nilai default 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.
Runtime kueri
(opsional)
scann.pre_reordering_num_neighbors Jika ditetapkan, flag database akan 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 dari jumlah tetangga yang ingin Anda tampilkan oleh kueri.

Nilai yang lebih tinggi akan menghasilkan perolehan yang lebih baik, tetapi QPS yang lebih rendah. Tetapkan nilai ini ke 0 untuk menonaktifkan pengurutan ulang. 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.
Runtime 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 ScaNN ANN di aplikasi yang sensitif terhadap latensi. Setelan ini tidak meningkatkan latensi kueri tunggal jika database sudah terikat CPU. Nilai defaultnya adalah 2. Runtime kueri
(opsional)

Langkah berikutnya