Untuk memastikan indeks vektor Anda beradaptasi dengan perubahan yang dapat memengaruhi akurasi hasil penelusuran, kelola indeks vektor Anda.
Sebelum memulai
Sebelum mengelola pemeliharaan indeks, instal atau update ekstensi vector dan
alloydb_scann:
Jika ekstensi
vectordanalloydb_scannbelum diinstal, instal ekstensi tersebut.CREATE EXTENSION IF NOT EXISTS vector; CREATE EXTENSION IF NOT EXISTS alloydb_scann;Jika ekstensi
vectordanalloydb_scannsudah diinstal, update ekstensi tersebut.ALTER EXTENSION vector UPDATE; ALTER EXTENSION alloydb_scann UPDATE;
Mempertahankan indeks secara otomatis
Anda dapat mengizinkan AlloyDB Omni mengelola indeks vektor Anda secara otomatis. Seiring bertambahnya ukuran set data Anda, AlloyDB Omni akan menganalisis dan memperbarui centroid serta membagi partisi pencilan besar. Tindakan ini akan otomatis meningkatkan kueri per detik (QPS) dan kualitas hasil penelusuran. Semua update otomatis bersifat permanen hingga proses pemeliharaan berikutnya.
AlloyDB Omni mengaktifkan pemeliharaan indeks otomatis secara default untuk indeks ScaNN yang disesuaikan secara otomatis. Jika Anda ingin membuat indeks ScaNN yang disesuaikan secara otomatis, tetapi menonaktifkan pemeliharaan otomatis, lihat Menonaktifkan pemeliharaan otomatis untuk indeks otomatis.
Untuk mengaktifkan pemeliharaan otomatis untuk indeks yang dibuat secara manual, lihat Mengaktifkan pemeliharaan otomatis selama pembuatan indeks.
Mengaktifkan pemeliharaan otomatis selama pembuatan indeks
Untuk mengaktifkan pemeliharaan otomatis selama pembuatan indeks, tetapkan parameter auto_maintenance ke on. Misalnya, lihat perintah berikut yang membuat indeks vektor ScaNN.
CREATE INDEX INDEX_NAME ON TABLE_NAME \
USING scann (EMBEDDING_COLUMN_NAME DISTANCE_FUNCTION_NAME) \
WITH (mode='INDEX_MODE', num_leaves=NUM_PARTITIONS, auto_maintenance=on);
Ganti variabel berikut:
INDEX_NAME: nama indeks yang ingin Anda buat. Contoh,my_scann_index. Nama indeks digunakan bersama di seluruh database Anda. Pastikan setiap nama indeks unik untuk setiap tabel dalam database Anda.TABLE_NAME: tabel yang ingin Anda tambahi indeks.EMBEDDING_COLUMN_NAME: kolom yang menyimpan datavectoryang ingin Anda indeks.DISTANCE_FUNCTION_NAME: fungsi jarak yang akan digunakan dengan indeks ini. Pilih salah satu opsi berikut:Jarak L2:
l2Perkalian titik:
dot_productJarak kosinus:
cosine
INDEX_MODE: mode untuk membuat indeks ScaNN. Nilai yang tersedia adalah sebagai berikut:AUTO: AlloyDB Omni secara otomatis mengelola dan menyesuaikan struktur indeks. Jikamodeditetapkan keAUTO, nilaiauto_maintenancedefault akan ditetapkan keon.MANUAL: Mengelola dan menyesuaikan indeks ScaNN secara manual. Nilaiauto_maintenancedefault, jikamodeditetapkan keMANUAL, adalahoff.
Untuk mengetahui informasi selengkapnya tentang mode indeks yang akan digunakan, lihat Membuat indeks ScaNN.
NUM_PARTITIONS: jumlah partisi yang akan diterapkan ke indeks ini. Tetapkan ini ke nilai apa pun antara3dan1048576. Untuk mengetahui informasi selengkapnya tentang cara menentukan nilai ini, lihat Menyesuaikan indeksScaNN.
Mengonfigurasi pemeliharaan otomatis untuk indeks yang ada
Untuk mengonfigurasi pemeliharaan otomatis untuk indeks manual yang ada, jalankan perintah berikut:
ALTER INDEX INDEX_NAME SET (auto_maintenance = AUTOMATIC_MAINTENANCE);
Ganti variabel berikut:
INDEX_NAME: nama indeks yang ingin Anda ubah. Contoh,my_scann_index.AUTOMATIC_MAINTENANCE: mengaktifkan atau menonaktifkan pemeliharaan otomatis. Untuk mengaktifkan, tetapkan nilai keon. Untuk menonaktifkan, tetapkan nilai keoff.
Meningkatkan throughput pemeliharaan otomatis
Untuk meningkatkan throughput pemeliharaan otomatis, konfigurasikan flag database scann.max_background_workers. Meningkatkan jumlah worker latar belakang akan meningkatkan jumlah indeks yang diproses per unit waktu. Hal ini tidak mengurangi waktu pemrosesan untuk
setiap indeks. Nilai ini harus lebih kecil dari nilai
max_worker_processes
yang ditetapkan untuk cluster database Anda.
Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi flag database, lihat Mengonfigurasi parameter database.
Meningkatkan penundaan pemeliharaan otomatis
Untuk meningkatkan jeda antara proses pemeliharaan otomatis, konfigurasi flag database
scann.maintenance_background_naptime_s.
Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi flag database, lihat Mengonfigurasi parameter database.
Persentase partisi penelusuran
Seiring bertambahnya jumlah partisi dari AlloyDB Omni yang otomatis membagi partisi pencilan besar, sebaiknya sesuaikan jumlah leaf yang Anda telusuri untuk mempertahankan performa yang optimal. Untuk mengelola jumlah ini
secara otomatis, konfigurasikan parameter scann.pct_leaves_to_search.
scann.pct_leaves_to_search mewakili persentase partisi saat ini yang akan ditelusuri. Anda dapat menetapkan parameter ini ke nilai apa pun antara 0 dan 100. Nilai defaultnya adalah 0, yang menonaktifkan parameter ini, dan menggunakan nilai yang ditetapkan di scann.num_leaves_to_search. Jika scann.num_leaves_to_search juga ditetapkan ke 0, AlloyDB Omni akan ditetapkan secara default ke 1% leaf.
Jika Anda memperkirakan set data akan bertambah secara signifikan, tetapkan nilai awal ke 1.
Untuk menetapkan scann.pct_leaves_to_search, jalankan perintah berikut:
ALTER DATABASE DB_NAME SET scann.pct_leaves_to_search = PERCENTAGE_PARTITIONS_TO_SEARCH;
Ganti variabel berikut:
DB_NAME: nama database Anda.PERCENTAGE_PARTITIONS_TO_SEARCH: persentase partisi yang akan ditelusuri.
Memanggil pemeliharaan indeks secara manual
Jika Anda ingin memanggil pemeliharaan pada indeks tertentu secara manual, jalankan perintah berikut:
SELECT scann_index_maintenance('INDEX_NAME');
Ganti INDEX_NAME dengan
nama indeks yang ingin Anda panggil pemeliharaannya. Contoh,
my_scann_index.
Menonaktifkan pemeliharaan otomatis untuk indeks otomatis
Untuk menonaktifkan pemeliharaan otomatis untuk indeks ScaNN yang disetel secara otomatis, tetapkan parameter auto_maintenance ke OFF selama pembuatan indeks. Misalnya, lihat
perintah berikut yang membuat indeks ScaNN yang disesuaikan secara otomatis:
CREATE INDEX similarity_index ON products
USING scann (description_embedding cosine)
WITH (MODE = 'AUTOMATIC', auto_maintenance = 'OFF');
Jika Anda ingin menonaktifkan pemeliharaan otomatis pada indeks ScaNN yang sudah disesuaikan secara otomatis, lihat bagian Mengonfigurasi pemeliharaan otomatis untuk indeks yang ada.
Membangun ulang indeks secara manual
Jika tabel Anda rentan terhadap pembaruan atau penyisipan yang sering, sebaiknya buat ulang indeks ScaNN secara berkala untuk meningkatkan akurasi perolehannya. Untuk mengetahui informasi selengkapnya tentang cara melihat perubahan dalam distribusi atau mutasi vektor sejak indeks Anda dibuat, lihat Melihat metrik indeks vektor.
Untuk membangun kembali indeks secara manual menggunakan konfigurasi aslinya, jalankan perintah berikut:
REINDEX INDEX CONCURRENTLY INDEX_NAME;
Ganti INDEX_NAME dengan nama indeks yang ingin Anda bangun ulang. Contoh, my_scann_index.
Untuk mengetahui informasi selengkapnya tentang pengindeksan ulang di PostgreSQL, lihat REINDEX.