Halaman ini menjelaskan praktik terbaik pengindeksan vektor yang mengoptimalkan indeks vektor dan meningkatkan hasil kueri tetangga terdekat (ANN) perkiraan.
Menyesuaikan opsi penelusuran vektor
Nilai paling optimal untuk opsi indeks vektor Anda bergantung pada kasus penggunaan, set data vektor, dan vektor kueri Anda. Anda dapat menetapkan dan menyesuaikan nilai ini dengan membuat indeks vektor baru dan menetapkan index_option_list
dalam pernyataan CREATE VECTOR INDEX
. Anda mungkin perlu melakukan penyesuaian
berulang untuk menemukan nilai terbaik untuk workload spesifik Anda.
Berikut beberapa panduan berguna yang harus diikuti saat memilih nilai yang sesuai:
tree_depth
(tingkat hierarki): Jika tabel yang Anda indeks memiliki kurang dari 10 juta baris, gunakantree_depth
2
. Jika tidak,tree_depth
dari3
mendukung tabel hingga sekitar 10 miliar baris.num_leaves
: Gunakan akar kuadrat dari jumlah baris dalam set data. Nilai yang lebih besar dapat meningkatkan waktu pembuatan indeks vektor. Hindari menetapkannum_leaves
yang lebih besar daritable_row_count
dibagi 1000 karena akan menghasilkan daun yang terlalu kecil dan performa yang buruk.num_leaves_to_search
: Opsi ini menentukan jumlah node daun indeks yang ditelusuri. Meningkatkannum_leaves_to_search
akan meningkatkan perolehan, tetapi juga meningkatkan latensi dan biaya. Sebaiknya gunakan angka yang 1% dari total jumlah daun yang ditentukan dalam pernyataanCREATE VECTOR INDEX
sebagai nilai untuknum_leaves_to_search
. Jika Anda menggunakan klausa filter, tingkatkan nilai ini untuk memperluas penelusuran.
Jika perolehan yang dapat diterima tercapai, tetapi biaya kueri terlalu tinggi,
sehingga menghasilkan QPS maksimum yang rendah, coba tingkatkan num_leaves
dengan mengikuti
langkah-langkah berikut:
- Tetapkan
num_leaves
ke beberapa kelipatan k dari nilai aslinya (misalnya,2 * sqrt(table_row_count)
). - Tetapkan
num_leaves_to_search
agar sama dengan kelipatan k dari nilai aslinya. - Lakukan eksperimen dengan mengurangi
num_leaves_to_search
untuk meningkatkan biaya dan QPS sambil mempertahankan perolehan.
Meningkatkan perolehan
Untuk meningkatkan perolehan, pertimbangkan untuk menyesuaikan nilai num_leaves_to_search
atau membangun ulang indeks vektor Anda.
Naikkan nilai num_leaves_to_search
Jika nilai num_leaves_to_search
terlalu kecil, Anda mungkin akan lebih
kesulitan menemukan tetangga terdekat untuk beberapa vektor kueri. Membuat indeks vektor baru dengan nilai num_leaves_to_search
yang lebih tinggi dapat membantu meningkatkan perolehan dengan menelusuri lebih banyak daun. Kueri terbaru mungkin berisi lebih banyak vektor sulit ini.
Membangun ulang indeks vektor
Struktur pohon indeks vektor dioptimalkan untuk set data pada saat pembuatan, dan bersifat statis setelahnya. Oleh karena itu, jika vektor yang sangat berbeda ditambahkan setelah membuat indeks vektor awal, struktur hierarki mungkin menjadi kurang optimal, sehingga menyebabkan perolehan yang lebih buruk.
Untuk membangun ulang indeks vektor tanpa periode nonaktif:
- Buat indeks vektor baru pada kolom embedding yang sama dengan indeks vektor saat ini, perbarui parameter (misalnya,
OPTIONS
) sebagaimana mestinya. - Setelah pembuatan indeks selesai, gunakan petunjuk
FORCE_INDEX
untuk menunjuk indeks baru guna memperbarui kueri penelusuran vektor. Hal ini memastikan bahwa kueri menggunakan indeks vektor baru. Anda mungkin juga perlu menyetel ulangnum_leaves_to_search
dalam kueri baru Anda. - Hapus indeks vektor yang sudah tidak berlaku.
Langkah berikutnya
Pelajari lebih lanjut indeks vektor Spanner.
Pelajari lebih lanjut approximate nearest neighbors Spanner.
Pelajari lebih lanjut fungsi GoogleSQL
APPROXIMATE_COSINE_DISTANCE()
,APPROXIMATE_EUCLIDEAN_DISTANCE()
,APPROXIMATE_DOT_PRODUCT()
.Pelajari lebih lanjut pernyataan
VECTOR INDEX
GoogleSQL.