Pembuatan indeks ScaNN
Untuk mengetahui informasi selengkapnya, lihat referensi Indeks ScaNN.
Indeks hierarki dua tingkat
Untuk menerapkan rekomendasi yang membantu Anda menemukan nilai optimal num_leaves dan num_leaves_to_search untuk set data Anda,
ikuti langkah-langkah yang direkomendasikan berikut:
- Untuk membuat indeks
ScaNNyang dioptimalkan untuk kasus berikut, tetapkan parameternum_leaveske nilai berikut, dengan baris adalah jumlah baris dalam tabel yang diindeks:- waktu dan kualitas build indeks yang seimbang tetapkan
num_leaveskesqrt(rows). - kualitas tetapkan num_leaves ke rows/100.
- waktu dan kualitas build indeks yang seimbang tetapkan
- Jalankan kueri pengujian Anda, dengan meningkatkan nilai
scann.num_of_leaves_to_search, hingga Anda mencapai rentang recall target, misalnya, 95%. Untuk mengetahui informasi selengkapnya tentang cara menganalisis kueri, lihat Menganalisis kueri. - Catat rasio antara
scann.num_leaves_to_searchdannum_leavesyang akan digunakan pada langkah berikutnya. Rasio ini memberikan perkiraan di sekitar set data yang akan membantu Anda mencapai recall target.
Jika Anda menggunakan vektor dimensi tinggi (500 dimensi atau lebih tinggi) dan ingin meningkatkan recall, coba sesuaikan nilaiscann.pre_reordering_num_neighbors. Nilai default ditetapkan ke nilai500 * KdenganKadalah batas yang Anda tetapkan dalam kueri. - Jika QPS Anda terlalu rendah setelah kueri mencapai recall target, ikuti langkah-langkah berikut:
- Buat ulang indeks, dengan meningkatkan nilai
num_leavesdanscann.num_leaves_to_searchsesuai dengan panduan berikut:- Tetapkan
num_leaveske faktor yang lebih besar dari akar kuadrat jumlah baris Anda. Misalnya, jika indeks memilikinum_leavesyang ditetapkan ke akar kuadrat jumlah baris Anda, coba tetapkan ke dua kali akar kuadrat. Jika nilainya sudah dua kali lipat, coba tetapkan ke tiga kali akar kuadrat. - Tingkatkan
scann.num_leaves_to_searchsesuai kebutuhan untuk mempertahankan rasionya dengannum_leaves, yang Anda catat di Langkah 3. - Tetapkan
num_leaveske nilai yang kurang dari atau sama dengan jumlah baris dibagi 100.
- Tetapkan
- Jalankan kembali kueri pengujian.
Saat menjalankan kueri pengujian, lakukan eksperimen dengan mengurangi
scann.num_leaves_to_search, temukan nilai yang meningkatkan QPS sekaligus mempertahankan recall Anda tetap tinggi. Coba nilaiscann.num_leaves_to_searchyang berbeda tanpa membangun ulang indeks.
- Buat ulang indeks, dengan meningkatkan nilai
- Ulangi Langkah 4 hingga QPS dan rentang recall mencapai nilai yang dapat diterima.
Indeks hierarki tiga tingkat
Selain rekomendasi untuk indeks ScaNN hierarki dua tingkat, gunakan panduan berikut.
Untuk menerapkan rekomendasi guna menemukan nilai optimal parameter indeks num_leaves dan max_num_levels, ikuti langkah-langkah berikut:
Buat indeks
ScaNNdengan kombinasinum_leavesdanmax_num_levelsberikut berdasarkan sasaran performa Anda:- waktu &kualitas build indeks yang seimbang: Tetapkan
max_num_levelssebagai2dannum_leavessebagaipower(rows, ⅔). - optimalkan kualitas: Tetapkan
max_num_levelssebagai2dannum_leavessebagairows/100.
- waktu &kualitas build indeks yang seimbang: Tetapkan
Jalankan kueri pengujian Anda. Untuk mengetahui informasi selengkapnya tentang cara menganalisis kueri, lihat Menganalisis kueri.
Catat rasio antara
scann.num_leaves_to_searchdannum_leavesyang akan digunakan pada langkah berikutnya. Rasio ini memberikan perkiraan di sekitar set data yang akan membantu Anda mencapai recall target.
Jika Anda menggunakan vektor dimensi tinggi (500 dimensi atau lebih tinggi) dan ingin meningkatkan recall, coba sesuaikan nilai scann.pre_reordering_num_neighbors. Nilai default ditetapkan ke nilai 500 * K dengan K adalah batas yang Anda tetapkan dalam kueri.
Jika QPS Anda terlalu rendah setelah kueri mencapai recall target, ikuti langkah-langkah berikut:
- Buat ulang indeks, dengan meningkatkan nilai
num_leavesdanscann.num_leaves_to_searchsesuai dengan panduan berikut: - Tetapkan
num_leaveske faktor yang lebih besar daripower(rows, ⅔). Misalnya, jika indeks memilikinum_leavesyang ditetapkan kepower(rows, ⅔), coba tetapkan ke dua kalipower(rows, ⅔). Jika nilainya sudah dua kali lipat, coba tetapkan ke tiga kalipower(rows, ⅔). - Tingkatkan
scann.num_leaves_to_searchsesuai kebutuhan untuk mempertahankan rasionya dengannum_leaves, yang Anda catat di Langkah 3. - Tetapkan
num_leaveske nilai yang kurang dari atau sama denganrows/100. - Jalankan kembali kueri pengujian. Saat menjalankan kueri pengujian, lakukan eksperimen dengan mengurangi
scann.num_leaves_to_search, temukan nilai yang meningkatkan QPS sekaligus mempertahankan recall Anda tetap tinggi. Coba nilaiscann.num_leaves_to_searchyang berbeda tanpa membangun ulang indeks.
- Buat ulang indeks, dengan meningkatkan nilai
Ulangi Langkah 4 hingga QPS dan rentang recall mencapai nilai yang dapat diterima.
Pemeliharaan indeks
Jika tabel Anda rentan terhadap pembaruan atau penyisipan yang sering, sebaiknya indeks ScaNN yang ada diindeks ulang secara berkala untuk meningkatkan akurasi recall.
Anda dapat memantau metrik indeks untuk melihat perubahan dalam distribusi vektor atau mutasi vektor sejak indeks dibuat, lalu mengindeks ulang sesuai kebutuhan. Untuk mengetahui informasi selengkapnya tentang metrik, lihat Metrik indeks vektor.