使用您的数据建立依据

本页介绍了如何使用 Vertex AI Search 中的数据来为回答提供依据。

借助您的数据让 Gemini 接地

如果您想进行检索增强生成 (RAG),请将模型连接到您的网站数据或文档集,然后使用依托 Vertex AI Search 进行接地

基于数据的接地最多支持 10 个 Vertex AI Search 数据源,并且可以与依托 Google 搜索进行接地结合使用。

支持的模型

本部分列出了支持使用您的数据进行接地的模型。

前提条件

在将模型输出接地到您的数据之前,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 IAM 页面,然后搜索 discoveryengine.servingConfigs.search 权限,该权限是地面服务正常运行所必需的。

    进入 IAM

  2. 启用 AI 应用并激活此 API。

  3. 创建 AI 应用数据源和应用。

如需了解详情,请参阅 Vertex AI Search 简介

启用 AI Applications

  1. 在 Google Cloud 控制台中,前往 AI Applications 页面。

    AI 应用

  2. 阅读并同意服务条款,然后点击继续并激活 API

AI 应用在 global 位置或 euus 多区域提供。如需了解详情,请参阅 AI Applications 位置

在 AI 应用中创建数据存储区

如需在 AI 应用中创建数据存储区,您可以选择使用网站数据或文档进行归因。

网站

  1. 在 Google Cloud 控制台中打开创建数据存储区页面。

  2. 网站内容框中,点击选择
    系统随即会显示为数据存储区指定网站窗格。

  3. 如果高级网站索引编制未选中,请选中高级网站索引编制复选框以将其开启。
    系统随即会显示配置数据存储区窗格。

  4. 指定要编入索引的网址格式部分中,执行以下操作:

    • 添加要包含的网站的网址。
    • 可选:为要排除的网站添加网址。
  5. 点击继续

  6. 配置数据存储区窗格中,

    1. 数据存储区的位置列表中选择一个值。
    2. 您的数据存储区名称字段中输入名称。系统会生成该 ID。使用数据存储区生成依据回答时,请使用此 ID。如需了解详情,请参阅使用数据存储区生成有依据的回答
    3. 点击创建

文档

  1. 在 Google Cloud 控制台中打开创建数据存储区页面。

  2. Cloud Storage 框中,点击选择
    系统随即会显示从 Cloud Storage 导入数据窗格。

  3. 非结构化文档(PDF、HTML、TXT 等)部分中,选择非结构化文档(PDF、HTML、TXT 等)

  4. 选择同步频率选项。

  5. 选择选择您要导入的文件夹或文件选项,然后在相应字段中输入路径。

  6. 点击继续
    系统随即会显示配置数据存储区窗格。

  7. 配置数据存储区窗格中,

    1. 数据存储区的位置列表中选择一个值。
    2. 您的数据存储区名称字段中输入名称。系统会生成该 ID。
    3. 如需为文档选择解析和分块选项,请展开文档处理选项部分。如需详细了解不同的解析器,请参阅解析文档
    4. 点击创建
  8. 点击创建

使用数据存储区生成有依据的回答

按照以下说明借助您的数据让模型接地。最多支持 10 个数据存储区。

如果您不知道数据存储区 ID,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 AI Applications 页面,然后在导航菜单中点击 Data stores

    前往“数据存储区”页面

  2. 点击您的数据存储区的名称。

  3. 在数据存储区的数据页面上,获取数据存储区 ID。

控制台

如需在Google Cloud 控制台中使用 Vertex AI Studio 将模型输出连接到 AI 应用,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 Vertex AI Studio Freeform 页面。

    前往“自由格式”

  2. 如需开启接地功能,请点击接地:您的数据切换开关。
  3. 点击自定义
    1. 选择 Vertex AI Search 作为来源。
    2. 使用以下路径格式,替换数据存储区项目 ID 和数据存储区 ID:

      projects/project_id/locations/global/collections/default_collection/dataStores/data_store_id.

  4. 点击保存
  5. 在文本框中输入提示,然后点击提交

您的提示回答基于 AI 应用。

Python

在尝试此示例之前,请按照《Vertex AI 快速入门:使用客户端库》中的 Python 设置说明执行操作。 如需了解详情,请参阅 Vertex AI Python API 参考文档

如需向 Vertex AI 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证

from google import genai
from google.genai.types import (
    GenerateContentConfig,
    HttpOptions,
    Retrieval,
    Tool,
    VertexAISearch,
)

client = genai.Client(http_options=HttpOptions(api_version="v1"))

# Load Data Store ID from Vertex AI Search
# datastore = "projects/111111111111/locations/global/collections/default_collection/dataStores/data-store-id"

response = client.models.generate_content(
    model="gemini-2.0-flash-001",
    contents="How do I make an appointment to renew my driver's license?",
    config=GenerateContentConfig(
        tools=[
            # Use Vertex AI Search Tool
            Tool(
                retrieval=Retrieval(
                    vertex_ai_search=VertexAISearch(
                        datastore=datastore,
                    )
                )
            )
        ],
    ),
)

print(response.text)
# Example response:
# 'The process for making an appointment to renew your driver's license varies depending on your location. To provide you with the most accurate instructions...'

REST

如需使用 Vertex AI API 测试文本提示,请向发布方模型端点发送 POST 请求。

在使用任何请求数据之前,请先进行以下替换:

  • LOCATION:处理请求的区域。
  • PROJECT_ID:您的项目 ID
  • MODEL_ID:多模态模型的模型 ID。
  • TEXT:要包含在提示中的文本说明。

HTTP 方法和网址:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent

请求 JSON 正文:

{
  "contents": [{
    "role": "user",
    "parts": [{
      "text": "TEXT"
    }]
  }],
  "tools": [{
    "retrieval": {
      "vertexAiSearch": {
        "datastore": projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID
      }
    }
  }],
  "model": "projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID"
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [
          {
            "text": "You can make an appointment on the website https://dmv.gov/"
          }
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        "..."
      ],
      "groundingMetadata": {
        "retrievalQueries": [
          "How to make appointment to renew driving license?"
        ],
        "groundingChunks": [
          {
            "retrievedContext": {
              "uri": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AXiHM.....QTN92V5ePQ==",
              "title": "dmv"
            }
          }
        ],
        "groundingSupport": [
          {
            "segment": {
              "startIndex": 25,
              "endIndex": 147
            },
            "segment_text": "ipsum lorem ...",
            "supportChunkIndices": [1, 2],
            "confidenceScore": [0.9541752, 0.97726375]
          },
          {
            "segment": {
              "startIndex": 294,
              "endIndex": 439
            },
            "segment_text": "ipsum lorem ...",
            "supportChunkIndices": [1],
            "confidenceScore": [0.9541752, 0.9325467]
          }
        ]
      }
    }
  ],
  "usageMetadata": {
    "..."
  }
}

理解回答

这两个 API 的响应都包含 LLM 生成的文本,称为候选文本。如果您的模型提示成功连接到 Elasticsearch 数据源,则回答会包含锚定元数据,用于标识回答中派生自 Elasticsearch 数据的部分。但是,有多种原因可能会导致此元数据无法提供,并且提示回答不会落地。这些原因包括模型回答中的来源相关性低或信息不完整。

以下是输出数据的细分:

  • 角色:表示基于事实的回答的发件人。由于响应始终包含基于事实的文本,因此角色始终为 model
  • 文本:LLM 生成的有依据的回答。
  • 接地元数据:与接地源相关的信息,其中包含以下元素:
    • 基准数据块:Elasticsearch 索引中支持相应答案的结果列表。
    • 接地支持:回答中有关特定断言的信息,可用于显示引用:
    • 片段:模型回答的由基准数据块佐证的部分。
    • 锚定分块索引:与此声明对应的锚定分块列表中的锚定分块的索引。
    • 置信度得分:一个介于 0 到 1 之间的数字,表示断言在所提供的一组接地数据块中的接地程度。不适用于 Gemini 2.5 及更高版本。

后续步骤

  • 如需了解如何发送聊天提示请求,请参阅多回合聊天
  • 如需了解 Responsible AI 最佳实践和 Vertex AI 的安全过滤条件,请参阅安全最佳实践