本页介绍了如何使用在“模型端点管理”中注册的 Vertex AI 排名模型端点对应用的搜索结果进行排名或评分。
Vertex AI Ranking API 会接受文档列表,并根据文档与给定查询(搜索字符串)的相关性对这些文档进行排名。当您使用 ai.rank()
函数时,该函数会返回文档回答给定查询的准确程度得分。
如需使用本页中的说明,您必须了解 AlloyDB for PostgreSQL 并熟悉生成式 AI 概念。
AlloyDB 会预留 ai
架构,并在您安装 google_ml_integration
扩展程序时尝试创建此架构。如果架构创建失败,请在 google_ml
架构中使用具有相同名称的函数。
准备工作
请求使用排名模型对搜索结果进行排名的权限,并等待收到启用确认后,再按照本页中的说明操作。
确保已注册 Vertex AI 排名模型。如需了解详情,请参阅 Vertex AI 排名模型。
对搜索结果进行排名
以下 SQL 查询展示了如何对搜索结果进行排名:
SELECT
ai.rank(
model_id => 'MODEL_ID',
search_string => 'SEARCH_STRING',
documents => ARRAY['DOCUMENT_1', 'DOCUMENT_2', 'DOCUMENT_3']);
替换以下内容:
参数 | 说明 |
---|---|
MODEL_ID |
您定义的模型端点的唯一 ID。 |
SEARCH_STRING |
用于对记录进行排名或评分的搜索字符串。 |
DOCUMENTS |
用于标识记录的唯一字符串。 |
示例
如需使用已注册的排名端点对搜索结果进行排名,请运行以下查询:
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.']);
响应是一个表格,其中显示了每份文档以及与搜索查询的相关性得分。以下是示例响应:
index | score
-------+-------
1 | 0.03
2 | 0.02
3 | 0.01
(3 rows)
我们来看一个 AlloyDB 数据库示例,其中包含已转换为嵌入的评价说明列表。以下代码段示例展示了如何使用排名模型根据评价说明与查询的语义相似性检索排名靠前的商品的名称。该示例假定 text-embedding-005
和 semantic-ranker-512@002
模型端点均已注册。
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;