Untuk memastikan indeks vektor Anda beradaptasi dengan perubahan yang mungkin memengaruhi akurasi hasil penelusuran, pertahankan 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 pertumbuhan set data Anda, AlloyDB Omni akan menganalisis dan memperbarui centroid serta membagi partisi outlier besar. Hal 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. Misalnya,my_scann_index. Nama indeks dibagikan di seluruh database Anda. Pastikan setiap nama indeks unik untuk setiap tabel di database Anda.TABLE_NAME: tabel yang ingin Anda tambahkan indeksnya.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. Nilaiauto_maintenancedefault, saatmodeditetapkan keAUTO, adalahon.MANUAL: Mengelola dan menyesuaikan indeks ScaNN Anda secara manual. Nilaiauto_maintenancedefault, saatmodeditetapkan 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 nilai 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. Misalnya,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 pekerja latar belakang akan meningkatkan jumlah indeks yang diproses per unit waktu. Tindakan ini tidak mengurangi waktu pemrosesan untuk setiap indeks. Nilai ini harus kurang dari nilai yang ditetapkan untuk cluster database Anda.max_worker_processes
Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi flag database, lihat Mengonfigurasi parameter database.
Meningkatkan penundaan pemeliharaan otomatis
Untuk meningkatkan penundaan antara proses pemeliharaan otomatis, konfigurasikan the
scann.maintenance_background_naptime_s
flag database.
Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi flag database, lihat Mengonfigurasi parameter database.
Mencari persentase partisi
Seiring bertambahnya jumlah partisi dari AlloyDB Omni yang secara otomatis membagi partisi outlier 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
sebagai gantinya. Jika scann.num_leaves_to_search juga ditetapkan ke 0, AlloyDB Omni akan menggunakan 1% leaf secara default.
Jika Anda memperkirakan set data Anda 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. Misalnya, my_scann_index.
Menonaktifkan pemeliharaan otomatis untuk indeks otomatis
Untuk menonaktifkan pemeliharaan otomatis untuk indeks ScaNN yang disesuaikan 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 disesuaikan secara otomatis, lihat Mengonfigurasi pemeliharaan otomatis untuk indeks yang ada.
Mem-build ulang indeks Anda secara manual
Jika tabel Anda rentan terhadap update atau penyisipan yang sering, sebaiknya build ulang indeks ScaNN Anda secara berkala untuk meningkatkan akurasi recall-nya. Untuk mengetahui informasi selengkapnya tentang cara melihat perubahan dalam distribusi atau mutasi vektor sejak indeks Anda dibuat, lihat Melihat metrik indeks vektor.
Untuk mem-build ulang indeks Anda secara manual menggunakan konfigurasi aslinya, jalankan perintah berikut:
REINDEX INDEX CONCURRENTLY INDEX_NAME;
Ganti INDEX_NAME dengan nama indeks yang ingin Anda build ulang. Misalnya, my_scann_index.
Untuk mengetahui informasi selengkapnya tentang pengindeksan ulang di PostgreSQL, lihat REINDEX.