本頁說明重新排序和排序器類型。本頁面也示範如何使用 Vertex AI 排序 API,重新排序擷取的回覆。
可用的重新排序器
排序器選項 | 說明 | 延遲 | 準確度 | 定價 |
---|---|---|---|---|
Vertex AI 排名 API | Vertex AI 排名 API 是獨立的語意重新排名工具,專為高精確度的相關性評分和低延遲而設計。 如要進一步瞭解 Vertex AI 排序 API,請參閱「使用排序 API 提升搜尋和 RAG 品質」。 |
極低 (不到 100 毫秒) | 頂尖成效 | 每個 Vertex AI RAG 引擎要求 |
LLM 重新排序器 | LLM reranker 會另外呼叫 Gemini,評估區塊與查詢的相關性。 | 高 (1 到 2 秒) | 視機型而定 | LLM 符記價格 |
使用 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:用於生成內容的大型語言模型。例如:
gemini-2.0-flash
。 - INPUT_PROMPT:傳送至大型語言模型以生成內容的文字。
- 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:用於生成內容的大型語言模型。例如:
gemini-2.0-flash
。 - GENERATION_METHOD:用於生成內容的 LLM 方法。
選項包括
generateContent
和streamGenerateContent
。 - INPUT_PROMPT:傳送至大型語言模型以生成內容的文字。
- 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 Engine API 後即可存取。如要查看支援的型號清單,請參閱「Gemini 型號」。
如要使用 Vertex AI RAG Engine 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 引擎的擷取和生成輸出內容」。
- 管理 RAG 知識庫 (語料庫)