Menilai dan memberi skor hasil penelusuran

Halaman ini menjelaskan cara memberi peringkat atau skor pada hasil penelusuran untuk aplikasi menggunakan endpoint model peringkat Vertex AI yang terdaftar di pengelolaan endpoint Model.

Vertex AI ranking API mengambil 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 mengukur tingkat ketepatan dokumen dalam menjawab kueri tertentu.

Untuk menggunakan petunjuk di halaman ini, Anda harus memiliki pemahaman tentang AlloyDB untuk PostgreSQL dan memahami konsep AI generatif.

AlloyDB mencadangkan skema ai, dan mencoba membuat skema ini saat Anda menginstal ekstensi google_ml_integration. Jika pembuatan skema gagal, gunakan fungsi dengan nama yang sama dalam skema google_ml.

Sebelum memulai

Mengurutkan hasil penelusuran

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 menentukan peringkat atau skor data.
DOCUMENTS String unik yang mengidentifikasi data.

Contoh

Untuk memberi peringkat pada hasil penelusuran menggunakan endpoint peringkat terdaftar, jalankan kueri berikut:

SELECT index, score
FROM
  ai.rank(
    model_id => 'semantic-ranker-512-002',
    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 responsnya:

 index | score
-------+------------
     2 |  0.33
     1 |  0.28
     3 |  0.16
(3 rows)

Pertimbangkan contoh database AlloyDB dengan daftar deskripsi ulasan yang dikonversi menjadi penyematan. Contoh cuplikan kode berikut menunjukkan cara menggunakan model peringkat untuk mengambil nama produk berperingkat teratas berdasarkan kemiripan semantik deskripsi ulasan dengan kueri. Ini mengasumsikan bahwa endpoint model text-embedding-005 dan semantic-ranker-512@002 terdaftar.

WITH
  initial_results 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(
        'text-embedding-005', 'good desserts')
    LIMIT 100
  ),
reranked AS (
    SELECT
      ai.rank(
        model_id => 'semantic-ranker-512@002',
        search_string => 'good desserts',
        documents => ARRAY_AGG(review ORDER BY ref_number))
    FROM initial_results
  )
SELECT product_id, name
FROM initial_results, reranked
WHERE initial_results.ref_number = reranked.index
ORDER BY reranked.score;

Langkah berikutnya