Untuk memastikan indeks vektor Anda beradaptasi dengan perubahan yang dapat 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 terlebih dahulu.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;
Memelihara indeks secara otomatis
Anda dapat mengizinkan AlloyDB mengelola indeks vektor Anda secara otomatis. Seiring berkembangnya set data Anda, AlloyDB menganalisis dan memperbarui sentroid serta membagi partisi pencilan besar. Hal ini akan otomatis meningkatkan kueri per detik (QPS) dan kualitas hasil penelusuran. Semua update otomatis bersifat permanen hingga proses pemeliharaan berikutnya.
AlloyDB mengaktifkan pemeliharaan indeks otomatis secara default untuk indeks ScaNN yang disesuaikan secara otomatis. Jika Anda ingin membuat indeks ScaNN yang disetel secara otomatis, tetapi menonaktifkan pemeliharaan otomatis, lihat bagian 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 secara otomatis mengelola dan menyesuaikan struktur indeks. Nilaiauto_maintenancedefault, jikamodeditetapkan keAUTO, adalahon.MANUAL: Mengelola dan menyesuaikan indeks ScaNN secara manual. Nilai defaultauto_maintenance, 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 artikel 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, konfigurasi flag database
scann.max_background_workers. Meningkatkan jumlah pekerja 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 mengonfigurasi flag database, lihat Mengonfigurasi flag database instance.
Meningkatkan penundaan pemeliharaan otomatis
Untuk meningkatkan jeda antara proses pemeliharaan otomatis, konfigurasi tanda database
scann.maintenance_background_naptime_s.
Untuk mengetahui informasi selengkapnya tentang mengonfigurasi flag database, lihat Mengonfigurasi flag database instance.
Persentase partisi penelusuran
Seiring bertambahnya jumlah partisi dari AlloyDB yang secara otomatis memisahkan partisi pencilan besar, sebaiknya sesuaikan jumlah leaf yang Anda telusuri untuk mempertahankan performa yang optimal. Untuk mengelola nomor 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
default-nya 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, maka
AlloyDB secara default akan menggunakan 1% daun.
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 jalankan 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 di-tuning secara otomatis, lihat bagian Mengonfigurasi pemeliharaan otomatis untuk indeks yang ada.
Membangun ulang indeks secara manual
Jika tabel Anda sering diperbarui atau disisipkan, sebaiknya bangun ulang indeks ScaNN Anda secara berkala untuk meningkatkan akurasi perolehan kembali. 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.