Pelajari cara memberi peringkat dan memeringkat ulang hasil penelusuran untuk aplikasi menggunakan model peringkat Vertex AI seperti semantic-ranker-default-003
.
Anda dapat menggunakan fungsi ai.rank()
untuk memberi skor pada dokumen berdasarkan relevansinya dengan kueri, dan meningkatkan hasil penelusuran vektor dengan memberi peringkat ulang untuk pengurutan kueri yang lebih baik.
Vertex AI Ranking API mengambil daftar dokumen dan memberi peringkat
dokumen tersebut berdasarkan seberapa relevan dokumen tersebut dengan kueri tertentu (string
penelusuran). Saat Anda menggunakan fungsi ai.rank()
, fungsi ini akan menampilkan skor seberapa baik dokumen menjawab kueri tertentu.
Untuk menggunakan petunjuk di halaman ini, Anda harus memahami AlloyDB untuk PostgreSQL dan memahami konsep AI generatif.
AlloyDB mencadangkan, dan membuat, skema ai
.
Sebelum memulai
Sebelum Anda memberi peringkat hasil penelusuran, lakukan hal berikut:
- Pastikan ekstensi
google_ml_integration
telah diinstal. - Verifikasi bahwa tanda
google_ml_integration.enable_model_support
ditetapkan keon
. - Berintegrasi dengan Vertex AI.
- Aktifkan Discovery Engine API.
- Dapatkan peran yang diperlukan untuk menggunakan model peringkat.
Mengaktifkan Discovery Engine API
Konsol
- Mengaktifkan API
- Pada langkah Confirm project, klik Next untuk mengonfirmasi nama project yang akan Anda ubah.
- Pada langkah Enable APIs, klik Enable untuk mengaktifkan Discovery Engine API. Jika sudah mengaktifkan API ini, Anda tidak akan melihatnya tercantum di sini.
gcloud
Untuk menggunakan model peringkat, Anda harus mengaktifkan Discovery Engine API.
Ganti PROJECT_ID
dengan
Google Cloud project ID dan PROJECT_NUMBER
dengan nomor project yang sesuai.
# Enable Discovery Engine API gcloud services enable discoveryengine.googleapis.com --project=PROJECT_ID gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-alloydb." \ --role="roles/discoveryengine.viewer"
Pendaftaran model untuk peringkat tidak diperlukan untuk model Vertex AI.
Anda dapat menggunakan nama model Vertex AI sebagai
model_id
, yang ditunjukkan dalam contoh berikut.
SELECT index, score FROM ai.rank( model_id => 'semantic-ranker-default-003', search_string => 'Affordable family-friendly vacation spots in Southeast Asia?', documents => ARRAY[ 'Luxury resorts in South Korea', 'Family vacation packages for Vietnam: Ha Long Bay and Hoi An', 'Budget-friendly beaches in Thailand perfect for families', 'A backpacker guide to solo travel in India'])
Kasus penggunaan umum untuk perankingan semantik adalah mengurutkan ulang hasil yang ditampilkan
oleh penelusuran vektor untuk pengurutan kueri yang lebih baik. Contoh berikut menunjukkan cara menggunakan model peringkat semantik untuk kasus penggunaan ini. Contoh ini mengambil
kumpulan hasil awal untuk kueri personal fitness
equipment
menggunakan penelusuran vektor. Hasil ini kemudian diberi peringkat ulang untuk
menampilkan lima hasil teratas.
WITH initial_ranking AS ( SELECT id, description, ROW_NUMBER() OVER () AS ref_number FROM product ORDER BY embedding <=> google_ml.embedding( 'gemini-embedding-001', 'personal fitness equipment')::vector LIMIT 10 ), reranked_results AS ( SELECT index, score FROM ai.rank( model_id => 'semantic-ranker-default-003', search_string => 'personal fitness equipment', documents => (SELECT ARRAY_AGG(description ORDER BY ref_number) FROM initial_ranking), top_n => 5) ) SELECT id, description FROM initial_ranking, reranked_results WHERE initial_ranking.ref_number = reranked_results.index ORDER BY reranked_results.score DESC;
Untuk mengetahui daftar model dan kasus penggunaan yang tersedia, lihat Model yang didukung.
Berintegrasi dengan Vertex AI dan menginstal ekstensi
- Berintegrasi dengan Vertex AI.
- Pastikan
google_ml_integration
versi terbaru sudah diinstal.Untuk memeriksa versi yang diinstal, jalankan perintah berikut:
SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.4.3 (1 row)
Jika ekstensi tidak diinstal atau jika versi yang diinstal lebih lama dari 1.4.3, update ekstensi dengan menjalankan perintah berikut:
CREATE EXTENSION IF NOT EXISTS google_ml_integration; ALTER EXTENSION google_ml_integration UPDATE;
Jika Anda mengalami masalah saat menjalankan perintah sebelumnya, atau jika ekstensi tidak diupdate ke versi 1.4.3 setelah Anda menjalankan perintah sebelumnya, hubungi dukungan AlloyDB.
Setelah Anda memastikan bahwa versi sudah yang terbaru, instal fungsi pratinjau dengan menjalankan prosedur
upgrade_to_preview_version
:CALL google_ml.upgrade_to_preview_version(); SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.4.4 (1 row)
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan guna menggunakan model peringkat dari
Discovery Engine, minta administrator untuk memberi Anda peran
Discovery Engine Viewer (roles/discoveryengine.viewer
) Identity and Access Management (IAM)
di your project
. Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat
Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Memberi peringkat hasil penelusuran Anda
Kueri SQL berikut menunjukkan cara memberi peringkat pada hasil penelusuran Anda :
SELECT
ai.rank(
model_id => 'MODEL_ID',
search_string => 'SEARCH_STRING',
documents => ARRAY['DOCUMENT_1', 'DOCUMENT_2', 'DOCUMENT_3']);
Ganti kode berikut:
Parameter | Deskripsi |
---|---|
MODEL_ID |
ID unik untuk endpoint model yang Anda tentukan. |
SEARCH_STRING |
String penelusuran yang digunakan untuk memberi peringkat pada kumpulan data. |
DOCUMENTS |
String unik yang mengidentifikasi data. |
Untuk mengetahui daftar model ranking Vertex AI yang didukung, lihat Model yang didukung.
Contoh
Untuk memberi peringkat hasil penelusuran menggunakan model peringkat Vertex AI, jalankan kueri berikut:
SELECT index, score
FROM
ai.rank(
model_id => 'semantic-ranker-default-003',
search_string => 'AlloyDB is a PostgreSQL compatible AI database that is ready for production.',
documents =>
ARRAY[
'Alloys are made from combination of metals',
'The best enterprise-ready PostgreSQL database.',
'You can feel the heat in Alloy apartments.']);
Responsnya adalah tabel yang menampilkan setiap dokumen dan skor berdasarkan relevansinya dengan kueri penelusuran. Berikut adalah contoh respons:
index | score
-------+------------
2 | 0.33
1 | 0.28
3 | 0.16
(3 rows)
Pertimbangkan contoh database AlloyDB dengan daftar deskripsi ulasan yang dikonversi menjadi embedding. Cuplikan kode contoh berikut menunjukkan cara menggunakan model peringkat untuk mengambil nama produk dengan peringkat teratas berdasarkan kemiripan semantik deskripsi ulasannya dengan kueri.
WITH initial_ranking AS (
SELECT product_id, name, review, review_id, ROW_NUMBER() OVER () AS ref_number
FROM user_reviews
ORDER BY
review_desc_embedding <=> google_ml.embedding(
'gemini-embedding-001', 'good desserts')::vector
LIMIT 10
), reranked_results AS (
SELECT index, score
FROM
ai.rank(
model_id => 'semantic-ranker-512',
search_string => 'good desserts',
documents => (SELECT ARRAY_AGG(review ORDER BY ref_number) FROM initial_ranking),
top_n => 5)
)
SELECT product_id, name
FROM initial_ranking, reranked_results
WHERE initial_ranking.ref_number = reranked_results.index
ORDER BY reranked_results.score DESC;