让 Gemini 模型的回答接地

本页介绍了使用 Vertex AI 将模型回答接地的方法,并介绍了如何使用接地 API 在应用中实现接地。

借助 Vertex AI,您可以使用以下数据源为模型输出建立依据:

  • Google 搜索:使用公开的 Web 数据为回答建立依据。
  • 您的数据:使用 Vertex AI Search 中的数据为回答建立依据(预览版)。

使用 Google 搜索建立依据

如果您想将模型与世界知识、各种主题或互联网上的最新信息相连接,请使用“借助 Google 搜索接地”功能。

使用 Google 搜索建立依据支持动态检索,让您可以选择仅在必要时使用 Google 搜索生成接地回答。因此,动态检索配置会评估提示是否需要了解近期活动,并启用“依托 Google 搜索进行接地”功能。如需了解详情,请参阅动态检索

如需详细了解 Vertex AI 中的模型接地功能,请参阅接地概览

支持的模型

以下模型支持接地:

  • Gemini 1.5 Pro(仅包含文本输入)
  • Gemini 1.5 Flash(仅包含文本输入)
  • Gemini 1.0 Pro(仅包含文本输入)

支持的语言

  • 英语 (en)
  • 西班牙语 (es)
  • 日语 (ja)

按照以下说明借助公开提供的网络数据让模型接地。

动态检索

您可以在请求中使用动态检索功能,选择何时停用“依托 Google 搜索进行接地”。如果提示不需要依托 Google 搜索提供回答,并且受支持的模型可以根据自己的知识提供回答,而不依托接地,这项功能会很有用。这有助于您更有效地管理延迟时间、质量和费用。

在请求中调用动态检索配置之前,请先了解以下术语:

  • 预测得分:当您请求基于事实的回答时,Vertex AI 会为问题分配预测得分。预测得分是一个介于 [0,1] 范围内的浮点值。其价值取决于问题是否可以通过使用 Google 搜索中的最新信息来为回答提供依据。因此,如果问题要求回答基于网络上最新事实,则预测得分会更高。如果模型生成的回答足以回答提示,则预测得分较低。

    下面是一些问题及其预测得分示例。

    提示 预测分数 评论
    “写一首关于牡丹的诗歌” 0.13 模型可以依赖其知识,并且答案不需要依据
    “为 2 岁儿童推荐玩具” 0.36 模型可以依赖其知识,并且答案不需要依据
    “您能提供亚洲风味的鳄梨酱食谱吗?” 0.55 Google 搜索可以给出基于事实的回答,但并不严格要求基于事实;模型知识可能就足够了
    “什么是 Agent Builder?How is grounding billed in Agent Builder?" 0.72 要求 Google 搜索生成有依据的回答
    “谁赢得了最新的 F1 大奖赛?” 0.97 要求 Google 搜索生成有依据的回答
  • 阈值:在请求中,您可以指定带有阈值的动态检索配置。阈值是一个介于 [0,1] 范围内的浮点值,默认为 0.7。如果阈值为零,则回答始终依托 Google 搜索进行接地。对于所有其他阈值,请遵循以下规则:

    • 如果预测得分大于或等于阈值,则系统会根据 Google 搜索来回答问题。阈值越低,使用“使用 Google 搜索建立依据”功能生成回答的提示就越多。
    • 如果预测得分低于阈值,模型可能仍会生成回答,但不会以 Google 搜索为基础。

为了找到适合您业务需求的阈值,您可以创建一组代表您预计会遇到的查询。然后,您可以根据响应中的预测得分对查询进行排序,并为您的用例选择合适的阈值。

注意事项

  • 如需使用“依托 Google 搜索进行接地”功能,您必须启用 Google 搜索建议。如需了解详情,请参阅 Google 搜索建议

  • 为了获得理想的结果,请使用 0.0 温度。如需详细了解如何设置此配置,请参阅模型参考文档中的 Gemini API 请求正文

  • “借助 Google 搜索接地”功能的查询次数上限为每天 100 万次。如果您有其他问题,请与 Google Cloud 支持团队联系以寻求帮助。

REST

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

  • LOCATION:处理请求的区域。
  • PROJECT_ID:您的项目 ID
  • MODEL_ID:多模态模型的模型 ID。
  • TEXT:要包含在提示中的文本说明。
  • DYNAMIC_THRESHOLD:可选字段,用于设置调用动态检索配置的阈值。该值是一个介于 [0,1] 范围内的浮点值。如果您未设置 dynamicThreshold 字段,则阈值默认为 0.7。

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": [{
    "googleSearchRetrieval": {
      "dynamicRetrievalConfig": {
        "mode": "MODE_DYNAMIC",
        "dynamicThreshold": DYNAMIC_THRESHOLD
      }
    }
  }],
  "model": "projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID"
}

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

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

{
   "candidates": [
     {
       "content": {
         "role": "model",
         "parts": [
           {
             "text": "Chicago weather changes rapidly, so layers let you adjust easily. Consider a base layer, a warm mid-layer (sweater-fleece), and a weatherproof outer layer."
           }
         ]
       },
       "finishReason": "STOP",
       "safetyRatings":[
       "..."
    ],
       "groundingMetadata": {
         "webSearchQueries": [
           "What's the weather in Chicago this weekend?"
         ],
         "searchEntryPoint": {
            "renderedContent": "....................."
         }
         "groundingSupports": [
            {
              "segment": {
                "startIndex": 0,
                "endIndex": 65,
                "text": "Chicago weather changes rapidly, so layers let you adjust easily."
              },
              "groundingChunkIndices": [
                0
              ],
              "confidenceScores": [
                0.99
              ]
            },
          ]
          "retrievalMetadata": {
              "webDynamicRetrievalScore": 0.96879
            }
       }
     }
   ],
   "usageMetadata": { "..."
   }
 }

控制台

如需将“使用 Google 搜索建立依据”与 Vertex AI Studio 搭配使用,请按照以下步骤操作:

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

    进入 Vertex AI Studio

  2. 点击自由形式标签页。
  3. 在侧边栏中,点击对模型回答进行地面验证切换开关。
  4. 点击自定义,并将 Google 搜索设置为来源。
  5. 在文本框中输入提示,然后点击提交

您的提示回答现在会以 Google 搜索为基础。

Python

如需了解如何安装或更新 Vertex AI SDK for Python,请参阅安装 Vertex AI SDK for Python。 如需了解详情,请参阅 Python API 参考文档

import vertexai

from vertexai.generative_models import (
    GenerationConfig,
    GenerativeModel,
    Tool,
    grounding,
)

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

model = GenerativeModel("gemini-1.5-flash-001")

# Use Google Search for grounding
tool = Tool.from_google_search_retrieval(grounding.GoogleSearchRetrieval())

prompt = "When is the next total solar eclipse in US?"
response = model.generate_content(
    prompt,
    tools=[tool],
    generation_config=GenerationConfig(
        temperature=0.0,
    ),
)

print(response.text)
# Example response:
# The next total solar eclipse visible from the contiguous United States will be on **August 23, 2044**.

理解回答

如果您的模型提示从 Vertex AI Studio 或 API 成功连接到 Google 搜索,则回答会包含带有来源链接(网址)的元数据。但是,有多种原因可能会导致此元数据无法提供,并且提示回答不会落地。这些原因包括模型回答中的来源相关性低或信息不完整。

引用

强烈建议显示引用。可帮助用户验证发布方自身的回答,并为用户提供更多学习途径。

对来自 Google 搜索来源的回答的引用应以内嵌和汇总形式显示。请参阅下图,了解如何执行此操作。

引用示例

使用备用搜索引擎选项

客户使用“与 Google 搜索搭配使用”功能并不会妨碍客户提供备选搜索引擎选项、将备选搜索选项设为客户应用的默认选项,或在客户应用中显示自己的搜索建议或搜索结果,前提是任何此类非 Google 搜索服务或相关结果都与“与 Google 搜索搭配使用”功能提供的结果和搜索建议分开显示,并且无法合理归因于 Google 或与 Google 提供的结果混淆。

借助您的数据让 Gemini 接地

本部分介绍如何使用 Vertex AI API 将文本回答连接到 Vertex AI Agent Builder 数据存储区。您无法将网站搜索数据存储区指定为基准来源。

支持的模型

以下模型支持接地:

  • Gemini 1.5 Pro(仅包含文本输入)
  • Gemini 1.5 Flash(仅包含文本输入)
  • Gemini 1.0 Pro(仅包含文本输入)

前提条件

需要满足一些前提条件才能让模型输出接地到您的数据。

  1. 启用 Vertex AI Agent Builder 并激活此 API。
  2. 创建 Vertex AI Agent Builder 数据源和应用。
  3. 在 Vertex AI Agent Builder 中将您的数据存储区与应用相关联。数据源用作在 Vertex AI 中让 Gemini 1.0 Pro 接地的基础。您不能将网站搜索数据存储区指定为基准来源。
  4. 为您的数据存储区启用企业版。

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

启用 Vertex AI Agent Builder

  1. 在 Google Cloud 控制台中,前往 Agent Builder 页面。

    Agent Builder

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

Vertex AI Agent Builder 在 global 位置或 euus 多区域提供。如需了解详情,请参阅 Vertex AI Agent Builder 位置

在 Vertex AI Agent Builder 中创建数据存储区

如需将模型连接到源数据,您需要准备好数据并将其保存到 Vertex AI Search。为此,您需要在 Vertex AI Agent Builder 中创建数据存储区

如果您从头开始,则需要准备数据以将其注入到 Vertex AI Agent Builder 中。如需开始操作,请参阅准备数据以进行注入。注入过程可能需要几分钟到几小时才能完成,具体取决于数据的大小。只有非结构化数据存储区支持连接功能。

准备好要注入的数据后,您可以创建搜索数据存储区。成功创建数据存储区后,创建搜索应用以关联到该存储区并启用企业版

示例:让 Gemini 1.5 Flash 模型接地

按照以下说明借助您自己的数据让模型接地。

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

  1. 在 Google Cloud 控制台中,前往 Vertex AI Agent Builder 页面,然后在导航菜单中点击数据存储区

    前往“数据存储区”页面

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

  3. 在数据存储区的数据页面上,获取数据存储区 ID。您无法将网站搜索数据存储区指定为基准来源。

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": {
    "..."
  }
}

了解以 Google 搜索为依据的回答

生成基于事实的结果时,元数据中会包含一个 URI,该 URI 会重定向到用于生成基于事实的结果的内容的发布商。元数据还包含发布商的网域。在生成基于地理位置的结果后,所提供的 URI 将在 30 天内保持可访问状态。

Python

如需了解如何安装或更新 Vertex AI SDK for Python,请参阅安装 Vertex AI SDK for Python。 如需了解详情,请参阅 Python API 参考文档

import vertexai

from vertexai.preview.generative_models import (
    GenerationConfig,
    GenerativeModel,
    Tool,
    grounding,
)

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# data_store_id = "your-data-store-id"

vertexai.init(project=PROJECT_ID, location="us-central1")

model = GenerativeModel("gemini-1.5-flash-001")

tool = Tool.from_retrieval(
    grounding.Retrieval(
        grounding.VertexAISearch(
            datastore=data_store_id,
            project=PROJECT_ID,
            location="global",
        )
    )
)

prompt = "How do I make an appointment to renew my driver's license?"
response = model.generate_content(
    prompt,
    tools=[tool],
    generation_config=GenerationConfig(
        temperature=0.0,
    ),
)

print(response.text)

控制台

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

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

    进入 Vertex AI Studio

  2. 点击自由形式标签页。
  3. 在侧边栏中,点击为模型回答提供事实依据切换开关以启用接地功能。
  4. 点击自定义并将 Vertex AI Agent Builder 设置为来源。该路径应采用以下格式:projects/project_id/locations/global/collections/default_collection/dataStores/data_store_id
  5. 在文本框中输入提示,然后点击提交

您的提示回答现在会借助 Vertex AI Agent Builder 接地。

更多生成式 AI 资源