Mengurutkan ulang hasil penelusuran dengan VertexRanker

Agent Retrieval (sebelumnya Penelusuran Vektor 2.0) menyediakan VertexRanker untuk pengurutan ulang semantik, yang didukung oleh Ranking API.

Setelah Pengambilan Agen mengambil dan menggabungkan hasil kandidat (menggunakan Reciprocal Rank Fusion (RRF)), VertexRanker akan memberi skor ulang pada kandidat yang digabungkan berdasarkan kueri bahasa alami Anda menggunakan model semantik khusus. Hal ini meningkatkan relevansi hasil k-teratas, terutama untuk kueri yang hanya penelusuran saja tidak dapat menemukan nuansa. Pengurutan ulang terjadi di sisi server dengan panggilan ke BatchSearchDataObjects. Tidak diperlukan koneksi sisi klien tambahan atau perjalanan pulang pergi tambahan.

VertexRanker

VertexRanker dikonfigurasi sebagai pengurut ulang untuk kolom combine.ranker objek BatchSearchDataObjectsRequest. Anda harus mengonfigurasi pengurut utama (hanya RRF yang didukung). Pengurut ulang berjalan setelah langkah penggabungan RRF dan mengganti output dengan daftar yang diberi skor ulang secara semantik.

Tabel berikut mencantumkan kolom konfigurasi pengurut.

Kolom Diperlukan Deskripsi
combine.ranker.rrf.weights Ya Bobot untuk penggabungan RRF dari hasil penelusuran yang mendasarinya.
combine.ranker.vertex_ranker.model Ya Nama model peringkat. Nilai yang didukung: semantic-ranker-fast@latest, semantic-ranker-default@latest, semantic-ranker-fast-004, semantic-ranker-default-004. Lihat model Ranking API untuk mengetahui detail setiap model.
combine.ranker.vertex_ranker.top_n Ya Jumlah maksimum kandidat dari daftar gabungan yang akan dikirim ke pengurut. Nilai yang valid adalah dari 1 hingga 1000.
combine.ranker.vertex_ranker.text_record_spec.query Ya Kueri bahasa alami yang digunakan oleh pengurut untuk memberi skor pada data.
combine.ranker.vertex_ranker.text_record_spec.title_template Ya String template, misalnya, {title}, yang menentukan cara mengekstrak (membuat) judul untuk setiap data. Gunakan jalur titik untuk menentukan kolom data.
combine.ranker.vertex_ranker.text_record_spec.content_template Ya String template, misalnya, {body.text}, yang menentukan cara mengekstrak (membuat) konten utama untuk setiap data. Gunakan jalur titik untuk menentukan kolom data.
combine.top_k Opsional Jumlah akhir hasil yang akan ditampilkan setelah pengurutan ulang. Jumlah ini harus kurang dari atau sama dengan vertex_ranker.top_n dan kurang dari atau sama dengan 1000.

Contoh berikut menunjukkan isi permintaan.

{
  "searches": [
    { "semantic_search": { "search_text": "running shoes", "search_field": "embedding", "task_type": "RETRIEVAL_QUERY", "top_k": 50 } },
    { "text_search":     { "search_text": "running shoes", "data_field_names": ["title"], "top_k": 50 } }
  ],
  "combine": {
    "top_k": 10,
    "ranker": {
      "rrf": { "weights": [1.0, 1.0] },
      "vertex_ranker": {
        "model": "semantic-ranker-fast@latest",
        "top_n": 50,
        "text_record_spec": {
          "query": "running shoes",
          "title_template": "{title}",
          "content_template": "{body.text}"
        }
      }
    }
  }
}

Template menggunakan jalur titik ke kolom data Objek Data, misalnya, {title} atau {nested.field}. Kolom ini harus ada dalam skema Koleksi. Jika tidak, permintaan akan ditolak selama validasi. Jika Objek Data tidak memiliki kolom yang disediakan, server akan mengambil ulang data lengkap dari penyimpanan secara transparan sehingga template masih dapat diisi.

Kuota dan harga

VertexRanker di Pengambilan Agen menggunakan batas paket gratis dengan penagihan kelebihan berbasis penggunaan. Setiap project menerima batas penggunaan peringkat gratis per periode 30 hari. Penggunaan dalam batas ini tidak dikenai biaya. Harga Ranking API standar berlaku untuk project konsumen untuk penggunaan apa pun di luar batas ini.

Tabel berikut mencantumkan nilai kuota.

Item Nilai
Batas paket gratis 80.000 unit peringkat per project konsumen per periode 30 hari.
Kelebihan Ditagih dengan harga Ranking API standar di project konsumen.
Data maksimum per panggilan pengurutan ulang 1000 (top_n harus berada dalam rentang [1, 1000] dan top_k <= top_n).

Mencapai batas paket gratis tidak akan menyebabkan permintaan Anda gagal. Setelah batas 80.000 unit peringkat habis, penggunaan VertexRanker berikutnya akan terus berhasil dan ditagih sebagai kelebihan. Batas akan direset 30 hari sejak waktu penggunaan pertama Anda.

Unit peringkat dihitung dari jumlah data yang dikirim ke pengurut dan ukuran template judul serta kontennya, menggunakan akuntansi yang sama dengan Ranking API mandiri. Lihat harga Ranking API untuk mengetahui detail selengkapnya.

Sebelum dapat menggunakan VertexRanker, Discovery Engine harus diaktifkan di project konsumen. Untuk mengetahui informasi selengkapnya, lihat Kondisi kegagalan.

Penanganan kegagalan dan peringatan

VertexRanker adalah pengurut ulang upaya terbaik. Jika panggilan peringkat gagal, RPC BatchSearchDataObjects akan tetap berhasil dan menampilkan hasil gabungan RRF yang dipangkas ke top_k. Kegagalan dilaporkan di kolom search_response_metadata.warnings dalam respons. Kode status lengkap dari Ranking API akan dipertahankan. Kode peringatan untuk status yang tidak terduga adalah UNAVAILABLE dengan pesan peringatan: "Reranking is temporarily unavailable. Returning fused (RRF) results without semantic reranking."

Kondisi kegagalan

Seluruh RPC BatchSearchDataObjects gagal dengan FAILED_PRECONDITION (tidak ada penggantian ke RRF) dalam kasus berikut.

  • Discovery Engine API tidak diaktifkan — Ranking API menampilkan FAILED_PRECONDITION dengan pesan Discovery Engine API is not enabled for the consumer project /<N/>. Please enable the API and try again." Perbaikan: aktifkan Discovery Engine API di project konsumen.

Pelanggan harus mengaktifkan Discovery Engine untuk project konsumen agar pengurutan ulang dapat dilakukan.

Tabel berikut mencantumkan kode peringatan, penyebab umum yang menghasilkan peringatan, dan pesan yang menjelaskan peringatan.

Kode Peringatan Penyebab Umum Pesan Peringatan
RESOURCE_EXHAUSTED Melebihi kuota Ranking API di project konsumen. Catatan: melebihi batas 80.000 unit peringkat tidak akan menyebabkan peringatan ini; kelebihan akan ditagih. <Quota exceeded message>; RankService.Rank call failed for consumer project <N> with request query: <query> and <model>: semantic-ranker-fast@latest number of records: <N>
DEADLINE_EXCEEDED Ranker.Rank tidak selesai dalam batas waktu permintaan. <deadline-exceeded message from Ranker.Rank>; RankService.Rank call failed for consumer project <N> with request query: <query> and <model>: semantic-ranker-fast@latest number of records: <N>
UNAVAILABLE Ranker.Rank menampilkan UNAVAILABLE, atau menampilkan kode yang tidak dipertahankan (misalnya, INTERNAL) yang diciutkan ke UNAVAILABLE. Jika kode yang mendasarinya adalah UNAVAILABLE: "RankService.Rank call failed for consumer project...

Jika tidak: "Reranking is temporarily unavailable. Returning fused (RRF) results without semantic reranking."
FAILED_PRECONDITION FAILED_PRECONDITION apa pun yang ditampilkan oleh Ranking API. RankService.Rank call failed for consumer project <N> with request query: <query> and <model>: semantic-ranker-fast@latest number of records: <N>
CANCELLED Pemanggil membatalkan RPC BatchSearchDataObjects sebelum pengurutan ulang selesai. <cancellation message from the cancelled RankService.Rank RPC>; RankService.Rank call failed for consumer project <N> with request query: <query> and <model>: semantic-ranker-fast@latest number of records: <N>