Menggunakan bantuan vektor

Bantuan vektor di AlloyDB untuk PostgreSQL menyediakan framework SQL deklaratif yang memungkinkan Anda men-deploy, menyesuaikan, dan mengelola workload penelusuran vektor di instance Anda. Anda dapat menentukan persyaratan penelusuran vektor, membuat dan menerapkan konfigurasi SQL yang direkomendasikan, serta memantau performa workload. Untuk mempelajari lebih lanjut cara kerja bantuan vektor, lihat Ringkasan bantuan vektor.

Sebelum memulai

  • Pastikan instance Anda menggunakan versi pemeliharaan yang benar. Vector Assist memerlukan nomor versi pemeliharaan minimum POSTGRES_17.20260128.03_06. Untuk mengetahui informasi selengkapnya tentang cara melakukan pemeliharaan mandiri, lihat Pemeliharaan mandiri performa.
  • Aktifkan ekstensi bantuan vektor menggunakan perintah berikut di database yang ingin Anda gunakan:

    CREATE EXTENSION vector_assist CASCADE;
    

    Tindakan ini akan menghasilkan skema vector_assist, yang digunakan oleh bantuan vektor.

Menggunakan bantuan vektor untuk men-deploy workload vektor

Untuk menggunakan bantuan vektor guna men-deploy dan mengelola workload vektor, Anda harus melakukan hal berikut:

Menentukan spesifikasi vektor Anda

Menentukan spesifikasi vektor, atau spesifikasi vektor, adalah langkah pertama dalam menggunakan bantuan vektor. Bergantung pada jenis workload vektor, kolom yang Anda gunakan untuk menentukan spesifikasi vektor mungkin berbeda.

Misalnya, jika Anda ingin mengaktifkan penelusuran semantik pada kolom tertentu dalam tabel, jalankan fungsi vector_assist.define_spec untuk menentukan spesifikasi vektor Anda:

SELECT
  recommendation_id,
  REGEXP_REPLACE(query, 'SET hnsw.ef_search TO \d+', 'SET hnsw.ef_search TO') AS query_1,
  recommendation,
  vector_spec_id,
  table_name,
  applied,
  modified
FROM vector_assist.define_spec(
  table_name => 'TABLE_NAME',
  vector_column_name => 'VECTOR_COLUMN_NAME',
  target_recall => TARGET_RECALL,
  tune_vector_index => TUNE_INDEX
);

Ganti parameter berikut:

  • TABLE_NAME: nama tabel yang ingin Anda gunakan dalam workload vektor.

  • (Opsional) VECTOR_COLUMN_NAME: kolom yang ingin Anda gunakan untuk melakukan penelusuran semantik. Jika Anda hanya memiliki satu kolom dengan vektor dalam tabel, vector_assist dapat menetapkannya secara otomatis. Jika ada lebih dari satu tabel dengan vektor, Anda harus menentukan kolom yang akan digunakan.

  • (Opsional) TARGET_RECALL: perolehan target yang Anda inginkan untuk dipenuhi oleh bantuan vektor. Jika ditentukan, vector_assist akan bereksperimen dengan berbagai nilai ef_search, membandingkan perolehan dalam penelusuran tetangga terdekat yang tepat. vector_assist menetapkan ef_search ke nilai yang memberikan perolehan target terdekat. Nilai defaultnya adalah 0.95.

  • (Opsional) TUNE_INDEX: boolean yang menentukan apakah bantuan vektor menyesuaikan indeks vektor dalam workload Anda. Nilai defaultnya adalah false, yang berarti hanya parameter terkait penelusuran (ef_search) yang disesuaikan—parameter waktu build (m, ef_construction) tidak disesuaikan.

Untuk melihat daftar lengkap semua parameter yang tersedia untuk spesifikasi vektor, lihat Referensi fungsi bantuan vektor.

Setelah Anda menjalankan kueri untuk membuat spesifikasi vektor, bantuan vektor akan otomatis menghasilkan langkah-langkah, yang disebut rekomendasi, yang harus Anda jalankan untuk men-deploy workload vektor.

Melihat rekomendasi bantuan vektor

Untuk melihat rekomendasi yang dihasilkan oleh bantuan vektor menggunakan spesifikasi vektor Anda, jalankan fungsi vector_assist.get_recommendations:

SELECT vector_assist.get_recommendations(
  spec_id => 'SPEC_ID'
);

Ganti SPEC_ID dengan ID spesifikasi dari spesifikasi vektor yang ingin Anda lihat rekomendasinya. Untuk mendapatkan daftar spesifikasi vektor yang tersedia, lihat Mencantumkan spesifikasi vektor.

vector_assist.get_recommendations menampilkan tabel bernama vector_assist.RECOMMENDATIONS yang berisi semua rekomendasi. Setiap rekomendasi disimpan dalam tabel dengan spec_id terkait. Setiap rekomendasi umumnya berisi informasi berikut:

  • Kueri SQL yang perlu Anda jalankan
  • Penjelasan mendetail untuk rekomendasi
  • Informasi relevan lainnya yang menjelaskan rekomendasi

Menerapkan rekomendasi bantuan vektor

Anda dapat menerapkan rekomendasi yang dihasilkan satu per satu atau secara keseluruhan.

Untuk menerapkan rekomendasi tertentu, jalankan fungsi vector_assist.apply_recommendation:

SELECT vector_assist.apply_recommendation(
  recommendation_id => 'RECOMMENDATION_ID'
);

Ganti RECOMMENDATION_ID dengan ID rekomendasi bantuan vektor yang ingin Anda terapkan dari tabel vector_assist.RECOMMENDATIONS.

Untuk menerapkan semua rekomendasi sekaligus, jalankan fungsi vector_assist.apply_spec dengan parameter spec_id atau table_name:

SELECT vector_assist.apply_spec(
  spec_id => 'SPEC_ID'
);

Ganti SPEC_ID dengan ID spesifikasi vektor yang ingin Anda gunakan.

Secara opsional, Anda juga dapat memasukkan parameter schema_name atau column_name. Untuk mengetahui informasi tentang semua parameter kueri yang tersedia, lihat Referensi fungsi bantuan vektor.

Setelah Anda menerapkan rekomendasi yang dihasilkan oleh bantuan vektor, indeks vektor siap digunakan.

Membuat kueri penelusuran

Anda dapat menggunakan bantuan vektor untuk membantu membuat kueri penelusuran yang dioptimalkan untuk workload vektor yang di-deploy menggunakan spesifikasi vektor workload dan indeks vektor yang dihasilkan. Untuk membuat kueri penelusuran yang dioptimalkan, jalankan fungsi vector_assist.generate_query:

SELECT vector_assist.generate_query(
  spec_id => 'SPEC_ID',
  search_vector => 'SEARCH_VECTOR',
  top_k => TOP_K,
  target_recall => TARGET_RECALL,
  filter_expressions => ARRAY['FILTER_EXPRESSION']
);

Ganti parameter berikut:

  • SPEC_ID: ID spesifikasi yang ingin Anda gunakan.

  • SEARCH_VECTOR: vektor untuk kueri penelusuran Anda. Contoh, [1, 2, 3].

  • (Opsional) TOP_K: jumlah tetangga terdekat yang akan ditampilkan. Jika tidak ditentukan, nilai defaultnya adalah 10.

  • (Opsional) TARGET_RECALL: perolehan target yang Anda inginkan untuk dipenuhi oleh bantuan vektor. Jika ditentukan, vector_assist akan bereksperimen dengan berbagai nilai ef_search, membandingkan perolehan dalam penelusuran tetangga terdekat yang tepat. vector_assist menetapkan ef_search ke nilai yang memberikan perolehan target terdekat.

  • (Opsional) FILTER_EXPRESSION: filter apa pun untuk kueri penelusuran. Misalnya, pemfilteran berdasarkan kolom lain.

Untuk melihat daftar lengkap semua parameter yang tersedia untuk membuat kueri penelusuran, lihat Referensi fungsi bantuan vektor.

Output fungsi ini menampilkan teks yang berisi kueri SQL. Anda dapat menjalankan atau menyimpan kueri SQL ini sesuai kebutuhan.

Mencantumkan spesifikasi vektor Anda

Jika Anda perlu mencantumkan spesifikasi vektor yang ada untuk tabel, jalankan fungsi vector_assist.list_specs, atau gunakan vector_assist.get_spec untuk melihat satu spesifikasi vektor berdasarkan ID:

SELECT vector_assist.list_specs(
  table_name => 'TABLE_NAME',
  column_name => 'COLUMN_NAME'
);

Ganti parameter berikut:

  • TABLE_NAME: nama tabel yang Anda gunakan untuk menentukan spesifikasi vektor.

  • (Opsional) COLUMN_NAME: nama kolom vektor dalam tabel. Jika dihilangkan, vector_assist.list_specs akan menampilkan semua spesifikasi vektor yang ditentukan pada tabel yang ditentukan. Untuk mengambil spesifikasi vektor tertentu berdasarkan ID, panggil SELECT vector_assist.get_spec(spec_id => 'SPEC_ID');.

Langkah berikutnya