Vertex AI RAG 引擎的重新排名

本頁面說明重新排名和排名器類型。本頁面也說明如何使用 Vertex AI 排名 API 重新排序擷取的回覆。

可用的重新排序工具

排名選項 說明 延遲 準確性 定價
Vertex AI 排名 API Vertex AI 排名 API 是獨立的語意重新排名工具,可提供精確的相關性評分,並降低延遲時間。

如要進一步瞭解 Vertex AI 排名 API,請參閱「使用排名 API 改善搜尋和 RAG 品質」。
極低 (少於 100 毫秒) 頂尖成效 每個 Vertex AI RAG 引擎要求
LLM 重新排名工具 LLM 重新排序器會使用單獨的 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 Engine 擷取資料。

請替換範例程式碼中使用的下列變數:

  • PROJECT_ID: Google Cloud 專案的 ID。
  • LOCATION:處理要求的區域。
  • MODEL_NAME:用於產生內容的大型語言模型。例如:gemini-2.0-flash
  • GENERATION_METHOD:用於產生內容的 LLM 方法。選項包括 generateContentstreamGenerateContent
  • 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 Engine 中使用 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"
          }
        }
      }
    }
  }'

後續步驟