Question answering

Semantic Retrieval API 提供托管式问答服务,用于使用 Google 的基础设施构建检索增强生成 (RAG) 系统。

方法:models.generateAnswer

根据输入 GenerateAnswerRequest 生成有依据的回答。

端点

帖子 https://generativelanguage.googleapis.com/v1beta/{model=models/*}:generateAnswer

路径参数

model string

必需。用于生成有依据的回答的 Model 的名称。

格式:model=models/{model}。其格式为 models/{model}

请求正文

请求正文中包含结构如下的数据:

字段
contents[] object (Content)

必需。与 Model 的当前对话的内容。对于单轮查询,这是要回答的单个问题。对于多轮查询,这是包含对话历史记录的重复字段,并且列表中的最后一个 Content 包含问题。

注意:models.generateAnswer 仅支持英语查询。

answerStyle enum (AnswerStyle)

必需。回答应采用的风格。

safetySettings[] object (SafetySetting)

可选。用于屏蔽不安全内容的唯一 SafetySetting 实例的列表。

此限制将在 GenerateAnswerRequest.contentsGenerateAnswerResponse.candidate 上强制执行。每种 SafetyCategory 类型不应有多个设置。API 会屏蔽任何不符合这些设置所设阈值的内容和响应。此列表会替换 safetySettings 中指定的每个 SafetyCategory 的默认设置。如果列表中未提供给定 SafetyCategorySafetySetting,API 将使用相应类别的默认安全设置。支持的危害类别包括 HARM_CATEGORY_HATE_SPEECH、HARM_CATEGORY_SEXUALLY_EXPLICIT、HARM_CATEGORY_DANGEROUS_CONTENT 和 HARM_CATEGORY_HARASSMENT。如需详细了解可用的安全设置,请参阅指南。您还可以参阅安全指南,了解如何在 AI 应用中纳入安全注意事项。

grounding_source Union type
用于生成答案的来源。grounding_source 只能是下列其中一项:
inlinePassages object (GroundingPassages)

与请求一起以内嵌方式提供的段落。

semanticRetriever object (SemanticRetrieverConfig)

通过 Semantic Retriever API 创建的资源中检索到的内容。

temperature number

可选。控制输出的随机性。

值可以介于 [0.0,1.0] 之间(含 0.0 和 1.0)。值越接近 1.0,生成的回答就越多样化和富有创意;值越接近 0.0,模型通常会生成更直接的回答。对于归因式问答用例,通常建议使用较低的温度(约为 0.2)。

响应正文

模型针对有事实依据的回答给出的回答。

如果成功,响应正文将包含结构如下的数据:

字段
answer object (Candidate)

模型给出的候选答案。

注意:即使给定的段落不太可能提供答案,模型也始终会尝试提供有依据的答案。在这种情况下,系统可能会提供质量较低或毫无根据的回答,并给出较低的 answerableProbability

answerableProbability number

仅限输出。模型估计的答案正确且基于输入段落的概率。

较低的 answerableProbability 表明回答可能并非基于来源。

answerableProbability 较低时,您可能需要:

  • 向用户显示“我们无法回答该问题”之类的消息。
  • 回退到根据世界知识回答问题的通用 LLM。此类回退的阈值和性质将取决于具体用例。0.5 是一个不错的起始阈值。
inputFeedback object (InputFeedback)

仅限输出。与用于回答问题的输入数据相关的反馈,而不是与模型针对问题生成的回答相关的反馈。

输入数据可以是以下一项或多项:

  • GenerateAnswerRequest.content 中最后一个条目指定的问题
  • GenerateAnswerRequest.content 中其他条目指定的对话历史记录
  • 依据来源(GenerateAnswerRequest.semantic_retrieverGenerateAnswerRequest.inline_passages
JSON 表示法
{
  "answer": {
    object (Candidate)
  },
  "answerableProbability": number,
  "inputFeedback": {
    object (InputFeedback)
  }
}

GroundingPassages

一段重复的段落列表。

字段
passages[] object (GroundingPassage)

段落列表。

JSON 表示法
{
  "passages": [
    {
      object (GroundingPassage)
    }
  ]
}

GroundingPassage

与接地配置内嵌的段落。

字段
id string

用于在基于事实的回答中归因相应段落的段落标识符。

content object (Content)

段落的内容。

JSON 表示法
{
  "id": string,
  "content": {
    object (Content)
  }
}

SemanticRetrieverConfig

用于从使用 Semantic Retriever API 创建的 CorpusDocument 中检索依据内容的配置。

字段
source string

必需。要检索的资源的名称。示例:corpora/123corpora/123/documents/abc

query object (Content)

必需。用于按相似度匹配给定资源中的 Chunk 的查询。

metadataFilters[] object (MetadataFilter)

可选。用于从资源中选择 Document 和/或 Chunk 的过滤条件。

maxChunksCount integer

可选。要检索的相关 Chunk 的数量上限。

minimumRelevanceScore number

可选。检索到的相关 Chunk 的最低相关性得分。

JSON 表示法
{
  "source": string,
  "query": {
    object (Content)
  },
  "metadataFilters": [
    {
      object (MetadataFilter)
    }
  ],
  "maxChunksCount": integer,
  "minimumRelevanceScore": number
}

AnswerStyle

有依据的回答的样式。

枚举
ANSWER_STYLE_UNSPECIFIED 未指定回答风格。
ABSTRACTIVE 简洁但抽象的风格。
EXTRACTIVE 非常简短的提取式摘要。
VERBOSE 详细样式,包含额外详细信息。回答可以采用句子、段落、多个段落或项目符号等格式。

InputFeedback

与用于回答问题的输入数据相关的反馈,而不是与模型针对问题生成的回答相关的反馈。

字段
safetyRatings[] object (SafetyRating)

输入内容的安全评级。每个类别最多只能有一个分级。

blockReason enum (BlockReason)

可选。如果设置,则输入被屏蔽,并且不返回任何候选对象。改述输入内容。

JSON 表示法
{
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ],
  "blockReason": enum (BlockReason)
}

BlockReason

指定输入被阻止的原因。

枚举
BLOCK_REASON_UNSPECIFIED 默认值。此值未使用。
SAFETY 出于安全原因,输入内容被屏蔽。检查 safetyRatings 以了解是哪个安全类别屏蔽了它。
OTHER 输入因其他原因而被屏蔽。