该页面介绍了重新排名和排名器类型。该页面还演示了如何使用 Vertex AI 排名 API 对检索到的回答进行重新排名。
可用的重排名器
排名器选项 | 说明 | 延迟时间 | 准确率 | 价格 |
---|---|---|---|---|
Vertex AI Ranking API | Vertex AI Ranking API 是一款独立的语义重排名器,旨在实现高度精确的相关性评分和低延迟。 如需详细了解 Vertex AI 排名 API,请参阅使用排名 API 提高搜索和 RAG 质量。 |
非常低(不到 100 毫秒) | 领先的性能 | 每次 Vertex AI RAG 引擎请求 |
LLM 重排名器 | LLM 重新排名器会单独调用 Gemini 来评估各个块与查询的相关性。 | 高(1 到 2 秒) | 取决于模型 | LLM token 价格 |
使用 Vertex AI 排名 API
如需使用 Vertex AI 排名 API,您必须启用 Discovery Engine API。如需查看所有支持的模型,请参阅使用排名 API 提高搜索和 RAG 质量。
以下代码示例演示了如何在工具配置中通过 Vertex AI 排名 API 启用重新排名。
Python
如需了解如何安装或更新 Python 版 Vertex AI SDK,请参阅安装 Python 版 Vertex AI SDK。如需了解详情,请参阅 Python API 参考文档。
替换示例代码中使用的以下变量:
- PROJECT_ID:您的 Google Cloud 项目的 ID。
- LOCATION:处理请求的区域。
- MODEL_NAME:用于内容生成的 LLM 模型。例如
gemini-2.0-flash
。 - INPUT_PROMPT:发送到 LLM 用于生成内容的文本。
- RAG_CORPUS_RESOURCE:RAG 语料库资源的名称。
格式:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
。 - SIMILARITY_TOP_K(可选):要检索的热门上下文数量。
- RANKER_MODEL_NAME:用于重新排名的模型的名称。例如
semantic-ranker-default@latest
。
from vertexai import rag
from vertexai.generative_models import GenerativeModel, Tool
import vertexai
PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/{PROJECT_ID}/locations/LOCATION/ragCorpora/RAG_CORPUS_RESOURCE"
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")
config = rag.RagRetrievalConfig(
top_k=10,
ranking=rag.Ranking(
rank_service=rag.RankService(
model_name=RANKER_MODEL_NAME
)
)
)
rag_retrieval_tool = Tool.from_retrieval(
retrieval=rag.Retrieval(
source=rag.VertexRagStore(
rag_resources=[
rag.RagResource(
rag_corpus=CORPUS_NAME,
)
],
rag_retrieval_config=config
),
)
)
rag_model = GenerativeModel(
model_name="MODEL_NAME", tools=[rag_retrieval_tool]
)
response = rag_model.generate_content("INPUT_PROMPT")
print(response.text)
# Example response:
# The sky appears blue due to a phenomenon called Rayleigh scattering.
# Sunlight, which contains all colors of the rainbow, is scattered
# by the tiny particles in the Earth's atmosphere....
# ...
REST
如需使用 Gemini 模型生成内容,请调用 Vertex AI GenerateContent
API。通过在发出请求时指定 RAG_CORPUS_RESOURCE
,模型会自动从 Vertex AI RAG 引擎检索数据。
替换示例代码中使用的以下变量:
- PROJECT_ID:您的 Google Cloud 项目的 ID。
- LOCATION:处理请求的区域。
- MODEL_NAME:用于内容生成的 LLM 模型。例如
gemini-2.0-flash
。 - GENERATION_METHOD:用于生成内容的 LLM 方法。选项包括
generateContent
和streamGenerateContent
。 - INPUT_PROMPT:发送到 LLM 用于生成内容的文本。
- RAG_CORPUS_RESOURCE:RAG 语料库资源的名称。
格式:projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
。 - SIMILARITY_TOP_K(可选):要检索的热门上下文数量。
- RANKER_MODEL_NAME:用于重新排名的模型的名称。例如
semantic-ranker-default@latest
。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_NAME:GENERATION_METHOD" \
-d '{
"contents": {
"role": "user",
"parts": {
"text": "INPUT_PROMPT"
}
},
"tools": {
"retrieval": {
"disable_attribution": false,
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": "RAG_CORPUS_RESOURCE"
},
"rag_retrieval_config": {
"top_k": SIMILARITY_TOP_K,
"ranking": {
"rank_service": {
"model_name": "RANKER_MODEL_NAME"
}
}
}
}
}
}
}'
在 Vertex AI RAG 引擎中使用 LLM 重排名器
本部分介绍了使用 LLM 重排序器的前提条件和代码示例。
LLM 重新排名器仅支持 Gemini 模型,当 Vertex AI RAG 引擎 API 处于启用状态时,即可访问这些模型。如需查看支持的型号列表,请参阅 Gemini 模型。
如需使用 Vertex AI RAG 引擎 API 检索相关上下文,请执行以下操作:
Python
如需了解如何安装或更新 Python 版 Vertex AI SDK,请参阅安装 Python 版 Vertex AI SDK。如需了解详情,请参阅 Python API 参考文档。
替换代码示例中使用的以下变量:
- PROJECT_ID:您的 Google Cloud 项目的 ID。
- LOCATION:处理请求的区域。
- RAG_CORPUS_RESOURCE:RAG 语料库资源的名称。格式:
projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
- TEXT:要获取相关上下文的查询文本。
- MODEL_NAME:用于重新排名的模型的名称。
from vertexai import rag
import vertexai
PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/[PROJECT_ID]/locations/LOCATION/ragCorpora/RAG_CORPUS_RESOURCE"
MODEL_NAME= "MODEL_NAME"
# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")
rag_retrieval_config = rag.RagRetrievalConfig(
top_k=10,
ranking=rag.Ranking(
llm_ranker=rag.LlmRanker(
model_name=MODEL_NAME
)
)
)
response = rag.retrieval_query(
rag_resources=[
rag.RagResource(
rag_corpus=CORPUS_NAME,
)
],
text="TEXT",
rag_retrieval_config=rag_retrieval_config,
)
print(response)
# Example response:
# contexts {
# contexts {
# source_uri: "gs://your-bucket-name/file.txt"
# text: "....
# ....
REST
替换代码示例中使用的以下变量:
- PROJECT_ID:您的 Google Cloud 项目的 ID。
- LOCATION:处理请求的区域。
- RAG_CORPUS_RESOURCE:RAG 语料库资源的名称。格式:
projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
- TEXT:要获取相关上下文的查询文本。
- MODEL_NAME:用于重新排名的模型的名称。
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts" \
-d '{
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": "RAG_CORPUS_RESOURCE"
}
},
"query": {
"text": "TEXT",
"rag_retrieval_config": {
"top_k": 10,
"ranking": {
"llm_ranker": {
"model_name": "MODEL_NAME"
}
}
}
}
}'
后续步骤
- 如需详细了解 RAG 的回答,请参阅 Vertex AI RAG Engine 的检索和生成输出。
- 管理 RAG 知识库(语料库)