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 menggunakan daftar dokumen dan memberi peringkat pada dokumen tersebut berdasarkan relevansi dokumen dengan kueri tertentu (string penelusuran). Saat Anda menggunakan fungsi ai.rank(), fungsi ini akan menampilkan skor untuk seberapa baik dokumen menjawab kueri tertentu.
Untuk menggunakan petunjuk di halaman ini, Anda harus memahami AlloyDB Omni dan memahami konsep AI generatif.
AlloyDB Omni mencadangkan, dan membuat, skema ai.
Sebelum memulai
Sebelum memberi peringkat pada hasil penelusuran, lakukan hal berikut:
- Konfigurasi akses pengguna ke model Vertex AI.
- Pastikan versi terbaru
google_ml_integrationtelah diinstal.Untuk memeriksa versi yang diinstal, jalankan perintah berikut command:
SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.5.2 (1 row)
Jika ekstensi tidak diinstal atau jika versi yang diinstal lebih lama dari 1.5.2, update ekstensi.
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.5.2 setelah Anda menjalankan perintah sebelumnya, hubungi dukungan Google Cloud.
Untuk menggunakan fungsi mesin kueri AI AlloyDB, tetapkan
google_ml_integration.enable_ai_query_engineflag keon.- Gunakan editor teks untuk menetapkan flag berikut dalam file konfigurasi
postgresql.confuntuk penginstalan AlloyDB Omni Anda:google_ml_integration.enable_ai_query_engine = on
- Setelah menyimpan file
postgresql.conf, mulai ulang layanan AlloyDB Omni agar perubahan diterapkan.sudo systemctl restart alloydbomni18
- Gunakan editor teks untuk menetapkan flag berikut dalam file konfigurasi
Dapatkan peran yang diperlukan untuk menggunakan model peringkat.
Mengaktifkan Discovery Engine API
<p>To use ranking models, you must enable the Discovery Engine API.<br>
Replace <code><var>PROJECT_ID</var></code> with your
Google Cloud project ID and <code><var>PROJECT_NUMBER</var></code>
with your corresponding project number.</p>
<pre class="prettyprint lang-terminal">
# Enable Discovery Engine API
gcloud services enable discoveryengine.googleapis.com --project=<var>PROJECT_ID</var>
gcloud projects add-iam-policy-binding <var>PROJECT_ID</var> \
--member="serviceAccount:service-<var>PROJECT_NUMBER</var>@iam.gserviceaccount.com" \
--role="roles/discoveryengine.viewer"
</pre>
<p>Model registration for ranking isn't required for Vertex AI models.
You can use the Vertex AI model name as the
<code>model_id</code>, which is shown in the following example.
</p>
<pre class="prettyprint lang-sh">
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'])
</pre>
<p>A common use case for the semantic ranker is to rerank the results returned
by vector search for better query ordering. The following example shows how to
use the semantic ranking model for this use case. The example retrieves an
initial result set for the query <code>personal fitness
equipment</code> using vector search. These results are then re-ranked to
return the top five results.
</p>
<pre class="prettyprint lang-sh">
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;
</pre>
<p>For a list of available models and use cases, see <a href="/generative-ai-app-builder/docs/ranking#models">Supported models</a>.</p>
Mengintegrasikan dengan Vertex AI dan menginstal ekstensi
Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi penginstalan AlloyDB Omni untuk membuat kueri model berbasis cloud.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk menggunakan model peringkat dari
Discovery Engine, minta administrator untuk memberikan peran Pengamat Discovery Engine (roles/discoveryengine.viewer) Identity and Access Management (IAM)
kepada akun layanan AlloyDB Omni 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 pada hasil penelusuran
Kueri SQL berikut menunjukkan cara memberi peringkat pada hasil penelusuran :
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 data. |
DOCUMENTS |
Array string teks unik yang ingin Anda beri peringkat. |
Untuk mengetahui daftar model peringkat Vertex AI yang didukung, lihat Model yang didukung.
Contoh
Untuk memberi peringkat pada 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 Omni dengan daftar deskripsi ulasan yang dikonversi menjadi embedding. Cuplikan contoh kode berikut menunjukkan cara menggunakan model peringkat untuk mengambil nama produk berperingkat 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;