让 Gemini 模型的回答接地

本页介绍了使用 Vertex AI 将模型的响应接地有两种方式,并介绍了如何使用接地 API 在应用中实现接地功能。

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

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

使用 Google 搜索建立依据

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

借助 Google 搜索进行实地查询支持动态检索,可让您选择仅在必要时使用 Google 搜索生成实地查询响应。因此,动态检索配置会评估提示是否需要了解近期活动,并启用 Google 搜索的 Grounding 功能。如需了解详情,请参阅动态检索

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

支持的模型

以下模型支持接地:

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

支持的语言

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

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

动态检索

您可以在请求中使用动态检索,以选择何时通过 Google 搜索关闭接地。如果提示不需要基于 Google 搜索的答案,并且支持的模型可以根据其知识提供答案而无需进行基于 Google 搜索的回答,此功能会非常有用。这有助于您更有效地管理延迟时间、画质和费用。

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

  • 预测得分:当您请求接地答案时,Vertex AI 会为提示分配预测得分。预测得分是介于 [0,1] 范围内的浮点值。其价值取决于提示能否从 Google 搜索中获取最新信息来完善答案。因此,需要基于网络上最新事实的回答的提示具有较高的预测得分。如果模型生成的答案足以回答提示,则预测得分较低。

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

    提示 预测分数 评论
    “写一首关于牡丹的诗” 0.13 模型可以依靠其知识,并且答案不需要接地
    “Suggest a toy for a 2yo child”(为 2 岁儿童推荐玩具) 0.36 模型可以依靠其知识,并且答案不需要接地
    “您能提供一个亚洲风味的鳄梨酱食谱吗?” 0.55 Google 搜索可以提供有根据的答案,但不严格要求提供有根据的答案;模型知识可能就足够了
    “什么是 Agent Builder?如何在 Agent Builder 中为接地功能付费?" 0.72 需要 Google 搜索来生成有根据的答案
    “谁赢得了最新的 F1 大奖赛?” 0.97 需要 Google 搜索来生成有根据的答案
  • 阈值:在请求中,您可以指定具有阈值的动态检索配置。阈值是一个浮点值,范围为 [0,1],默认为 0.7。如果阈值为零,则响应始终依托 Google 搜索进行接地。对于阈值的所有其他值,适用以下规则:

    • 如果预测得分大于或等于阈值,则答案是通过 Google 搜索获得的。阈值越低,使用 Grounding with Google Search 生成的回复的提示就越多。
    • 如果预测得分低于阈值,模型可能会生成答案,但不会以 Google 搜索为基础。

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

注意事项

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

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

  • “借助 Google 搜索接地”功能的查询次数上限为每天 100 万次。如果您需要更高的查询次数,请与支持团队联系。

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. 点击Freeform标签页。
  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 提供的结果混淆。

借助您的数据让 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. 点击Freeform标签页。
  3. 在侧边栏中,点击接地模型响应切换开关以启用接地功能。
  4. 点击自定义并将 Vertex AI Agent Builder 设置为来源。该路径应采用以下格式:projects/project_id/locations/global/collections/default_collection/dataStores/data_store_id
  5. 在文本框中输入提示,然后点击提交

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

更多生成式 AI 资源