查询配置 - Amazon Bedrock

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

查询配置

您可以在查询知识库时修改配置,以自定义检索和响应生成。要了解有关配置以及如何在控制台或 API 中修改配置的更多信息,请从以下主题中进行选择。

搜索类型定义了如何查询知识库中的数据源。以下搜索类型是可能的:

  • 默认 — Amazon Bedrock 为您决定搜索策略。

  • Hybrid — 将搜索向量嵌入(语义搜索)与搜索原始文本相结合。目前,只有包含可筛选文本字段的 Amazon OpenSearch Serverless 矢量存储才支持混合搜索。如果您使用其他矢量存储,或者您的 Amazon OpenSearch Serverless 矢量存储不包含可筛选的文本字段,则查询将使用语义搜索。

  • 语义-仅搜索向量嵌入。

要了解如何定义搜索类型,请选择与您选择的方法相对应的选项卡,然后按照步骤操作。

Console

按照中的控制台步骤进行操作查询知识库并返回结果或生成响应。打开 “配置” 窗格时,您将看到以下搜索类型选项:

  • 默认 — Amazon Bedrock 决定哪种搜索策略最适合您的矢量商店配置。

  • 混合 — Amazon Bedrock 使用矢量嵌入和原始文本查询知识库。只有当您使用配置了可筛选文本字段的 Amazon OpenSearch Serverless 矢量存储时,此选项才可用。

  • 语义 — Amazon Bedrock 使用其向量嵌入来查询知识库。

API

RetrieveAndGenerate发出Retrieve或请求时,请添加一个映射到KnowledgeBaseRetrievalConfiguration对象的retrievalConfiguration字段。要查看此字段的位置,请参阅 API 参考中的RetrieveRetrieveAndGenerate请求正文。

以下 JSON 对象显示了该KnowledgeBaseRetrievalConfiguration对象中设置搜索类型配置所需的最少字段:

"retrievalConfiguration": { "vectorSearchConfiguration": { "overrideSearchType": "HYBRID | SEMANTIC" } }

overrideSearchType字段中指定搜索类型。您有以下选项:

  • 如果您未指定值,Amazon Bedrock 将决定哪种搜索策略最适合您的矢量商店配置。

  • HYBRID — Amazon Bedrock 同时使用矢量嵌入和原始文本来查询知识库。只有当您使用配置了可筛选文本字段的 Amazon OpenSearch Serverless 矢量存储时,此选项才可用。

  • 语义 — Amazon Bedrock 使用其向量嵌入来查询知识库。

查询分解是一种用于将复杂查询分解为更小、更易于管理的子查询的技术。这种方法可以帮助检索更准确、更相关的信息,尤其是在初始查询涉及多个方面或过于宽泛的情况下。启用此选项可能会导致对您的知识库执行多个查询,这可能有助于获得更准确的最终响应。

例如,对于像 “谁在2022年FIFA世界杯上得分更高,阿根廷还是法国?” 之类的问题 ,在生成最终答案之前,Amazon Bedrock 知识库可能会先生成以下子查询:

  1. 阿根廷在2022年FIFA世界杯决赛中打进了多少球?

  2. 法国在2022年FIFA世界杯决赛中打进了多少球?

Console
  1. 创建和同步数据源或使用现有知识库。

  2. 进入测试窗口并打开配置面板。

  3. 启用查询重新表达。

API
POST /retrieveAndGenerate HTTP/1.1 Content-type: application/json { "input": { "text": "string" }, "retrieveAndGenerateConfiguration": { "knowledgeBaseConfiguration": { "orchestrationConfiguration": { // Query decomposition "queryTransformationConfiguration": { "type": "string" // enum of QUERY_DECOMPOSITION } }, ...} }

在基于信息检索生成响应时,您可以使用推理参数来更好地控制模型在推理期间的行为并影响模型的输出。要了解如何修改推理参数,请选择与所选方法对应的选项卡,然后按照步骤操作。

Console

要在查询知识库时修改推理参数,请按照中的控制台查询知识库并返回结果或生成响应步骤操作。当你打开配置窗格时,你会看到推理参数部分。根据需要修改参数。

要在与文档聊天时修改推理参数,请按照中的步骤操作。使用知识库与您的文档数据聊天配置窗格中,展开推理参数部分并根据需要修改参数。

API

您在调用 RetrieveAndGenerateAPI 时提供模型参数。您可以通过在(如果您查询知识库)或knowledgeBaseConfiguration(如果您与文档聊天)的inferenceConfig字段中externalSourcesConfiguration提供推理参数来自定义模型。

inferenceConfig字段中有一个包含以下参数的textInferenceConfig字段,您可以执行以下操作:

  • 温度

  • topP

  • maxTokenCount

  • 停止序列

您可以通过在externalSourcesConfiguration和的inferenceConfig字段中使用以下参数来自定义模型knowledgeBaseConfiguration

  • 温度

  • topP

  • maxTokenCount

  • 停止序列

有关每个参数功能的详细说明,请参见推理参数

此外,您可以textInferenceConfig通过additionalModelRequestFields地图提供不支持的自定义参数。您可以使用此参数为特定模型提供唯一的参数,有关唯一的参数,请参见。根基模型的推理参数

如果省略了参数textInferenceConfig,则将使用默认值。中未识别的任何参数都textInferneceConfig将被忽略,而在中未识别的任何参数都AdditionalModelRequestFields将导致异常。

如果additionalModelRequestFields和中的参数相同,则会引发验证异常TextInferenceConfig

在中使用模型参数 RetrieveAndGenerate

以下是RetrieveAndGenerate请求正文generationConfigurationinferenceConfigadditionalModelRequestFields下方的结构示例:

"inferenceConfig": { "textInferenceConfig": { "temperature": 0.5, "topP": 0.5, "maxTokens": 2048, "stopSequences": ["\nObservation"] } }, "additionalModelRequestFields": { "top_k": 50 }

上面的示例将 a temperature 设置为 0.5,top_p为 0.5,maxTokens为 2048,如果在生成的响应中遇到字符串 “\ n Observation”,则停止生成,并传递自定义top_k值 50。

当您查询知识库时,默认情况下,Amazon Bedrock 会在响应中返回最多五个结果。每个结果都对应一个源块。要修改要返回的最大结果数,请选择与所选方法对应的选项卡,然后按照步骤操作。

Console

按照中的控制台步骤进行操作查询知识库并返回结果或生成响应。在 “配置” 窗格中,展开 “检索到的最大结果数”。

API

RetrieveAndGenerate发出Retrieve或请求时,请添加一个映射到KnowledgeBaseRetrievalConfiguration对象的retrievalConfiguration字段。要查看此字段的位置,请参阅 API 参考中的RetrieveRetrieveAndGenerate请求正文。

以下 JSON 对象显示了KnowledgeBaseRetrievalConfiguration对象中设置要返回的最大结果数所需的最小字段:

"retrievalConfiguration": { "vectorSearchConfiguration": { "numberOfResults": number } }

指定要在numberOfResults字段中KnowledgeBaseRetrievalConfiguration返回的最大检索结果数(有关可接受值的范围,请参阅中的numberOfResults字段)。

您的数据源可以包含要筛选的文档元数据属性/字段,例如 “last_updated” 或从当前日期起上次更新文档后的天数。要在查询知识库时使用筛选器,请检查您的知识库是否满足以下要求:

  • 配置数据源连接器时,大多数连接器都会抓取文档的主元数据字段。如果使用 Amazon S3 存储桶作为数据源,则该存储桶必须包含至少一个与其关联的源文档同名的.metadata.json文件。

  • 如果知识库的向量索引位于 Amazon OpenSearch Serverless 矢量存储中,请检查该faiss引擎是否配置了矢量索引。如果使用引nmslib擎配置了向量索引,则必须执行以下操作之一:

在查询时,您可以使用以下筛选运算符来筛选结果:

筛选运算符
运算符 控制台 API 筛选器名称 支持的属性数据类型 筛选结果
等于 = equals 字符串、数字、布尔值 属性与您提供的值相匹配
不等于 != noteQuals 字符串、数字、布尔值 属性与您提供的值不匹配
Greater than > 大于 number 属性大于您提供的值
大于或等于 >= greaterThanOr等于 number 属性大于或等于您提供的值
Less than < 小于 number 属性小于您提供的值
小于或等于 <= lessThanOr等于 number 属性小于或等于您提供的值
In : 字符串列表 属性在您提供的列表中
不在 !: notIn 字符串列表 属性不在您提供的列表中
开始于 ^ 开头为 字符串 属性以您提供的字符串开头(仅支持 Amazon OpenSearch Serverless 矢量存储)

要组合筛选运算符,可以使用以下逻辑运算符:

逻辑运算符
运算符 控制台 API 筛选器字段名称 筛选结果
并且 以及 andAll 结果满足群组中的所有筛选表达式
Or 或者 orAll 结果满足组中至少一个筛选表达式

要了解如何使用元数据筛选结果,请选择与您选择的方法相对应的选项卡,然后按照步骤操作。

Console

按照中的控制台步骤进行操作查询知识库并返回结果或生成响应。当你打开 “配置” 窗格时,你会看到 “筛选器” 部分。以下过程描述了不同的用例:

  • 要添加筛选条件,请在框中输入元数据属性、筛选运算符和值来创建筛选表达式。用空格分隔表达式的每个部分。按 Enter 键添加过滤器。

    有关可接受的筛选运算符的列表,请参阅上面的筛选运算符表。在元数据属性后面添加空格时,还可以看到筛选运算符列表。

    注意

    必须用引号将字符串括起来。

    例如,您可以通过添加以下筛选器来筛选来自包含genre元数据属性的源文档"entertainment"的结果,该属性的值为:genre = "entertainment"

    添加一个过滤器。
  • 要添加其他筛选器,请在框中输入另一个筛选表达式,然后按 E nter。您最多可以在群组中添加 5 个过滤器。

    添加另一个过滤器。
  • 默认情况下,查询将返回满足您提供的所有筛选表达式的结果。要返回至少满足其中一个筛选表达式的结果,请在任意两个筛选操作之间选择下拉菜单,然后选择

    更改过滤器之间的逻辑操作。
  • 要组合不同的逻辑运算符,请选择 + 添加组以添加筛选器组。在新组中输入筛选表达式。您最多可以添加 5 个筛选器组。

    添加筛选器组以组合不同的逻辑运算符。
  • 要更改所有筛选组之间使用的逻辑运算符,请在任意两个筛选组之间选择 AND 下拉菜单,然后选择 O R

    更改筛选器组之间的逻辑操作。
  • 要编辑筛选器,请将其选中,修改筛选操作,然后选择应用

    编辑筛选条件。
  • 要移除筛选器组,请选择该组旁边的垃圾桶图标 ( Trapezoid-shaped diagram showing data flow from source to destination through AWS Transfer Family. )。要移除过滤器,请选择过滤器旁边的删除图标 ( Close or cancel icon represented by an "X" symbol. )。

    删除筛选器或筛选器组。

下图显示了一个筛选器配置示例,除了类型为或2018且作者以开头的文档外"entertainment",该配置还返回所有以其类型为"cooking""sports"的文档编写的文档"C"

过滤器配置示例。
API

RetrieveAndGenerate发出Retrieve或请求时,请添加一个映射到KnowledgeBaseRetrievalConfiguration对象的retrievalConfiguration字段。要查看此字段的位置,请参阅 API 参考中的RetrieveRetrieveAndGenerate请求正文。

以下 JSON 对象显示了KnowledgeBaseRetrievalConfiguration对象中为不同用例设置过滤器所需的最少字段:

  1. 使用一个过滤运算符(参见上面的过滤运算符表)。

    "retrievalConfiguration": { "vectorSearchConfiguration": { "filter": { "<filter-type>": { "key": "string", "value": "string" | number | boolean | ["string", "string", ...] } } } }
  2. 使用逻辑运算符(参见上面的逻辑运算符表)最多可组合 5 个。

    "retrievalConfiguration": { "vectorSearchConfiguration": { "filter": { "andAll | orAll": [ "<filter-type>": { "key": "string", "value": "string" | number | boolean | ["string", "string", ...] }, "<filter-type>": { "key": "string", "value": "string" | number | boolean | ["string", "string", ...] }, ... ] } } }
  3. 使用逻辑运算符将最多 5 个筛选运算符组合到一个筛选器组中,使用第二个逻辑运算符将该筛选器组与其他筛选运算符合并。

    "retrievalConfiguration": { "vectorSearchConfiguration": { "filter": { "andAll | orAll": [ "andAll | orAll": [ "<filter-type>": { "key": "string", "value": "string" | number | boolean | ["string", "string", ...] }, "<filter-type>": { "key": "string", "value": "string" | number | boolean | ["string", "string", ...] }, ... ], "<filter-type>": { "key": "string", "value": "string" | number | boolean | ["string", "string", ...] } ] } } }
  4. 将最多 5 个筛选器组嵌入到另一个逻辑运算符中,从而将其合并。您可以创建一层嵌入。

    "retrievalConfiguration": { "vectorSearchConfiguration": { "filter": { "andAll | orAll": [ "andAll | orAll": [ "<filter-type>": { "key": "string", "value": "string" | number | boolean | ["string", "string", ...] }, "<filter-type>": { "key": "string", "value": "string" | number | boolean | ["string", "string", ...] }, ... ], "andAll | orAll": [ "<filter-type>": { "key": "string", "value": "string" | number | boolean | ["string", "string", ...] }, "<filter-type>": { "key": "string", "value": "string" | number | boolean | ["string", "string", ...] }, ... ] ] } } }

下表描述了您可以使用的过滤器类型:

字段 支持的值数据类型 筛选结果
equals 字符串、数字、布尔值 属性与您提供的值相匹配
notEquals 字符串、数字、布尔值 属性与您提供的值不匹配
greaterThan number 属性大于您提供的值
greaterThanOrEquals number 属性大于或等于您提供的值
lessThan number 属性小于您提供的值
lessThanOrEquals number 属性小于或等于您提供的值
in 字符串列表 属性在您提供的列表中
notIn 字符串列表 属性不在您提供的列表中
startsWith 字符串 属性以您提供的字符串开头(仅支持 Amazon OpenSearch Serverless 矢量存储)

要组合筛选器类型,可以使用以下逻辑运算符之一:

字段 地图到 筛选结果
andAll 最多 5 种过滤器类型的列表 结果满足群组中的所有筛选表达式
orAll 最多 5 种过滤器类型的列表 结果满足组中至少一个筛选表达式

有关示例,请参阅发送查询并包含筛选条件(检索)发送查询并包含筛选条件(RetrieveAndGenerate)

当您查询知识库并请求生成响应时,Amazon Bedrock 使用将说明和上下文与用户查询相结合的提示模板来构造发送到模型以生成响应的提示。您可以使用以下工具设计提示模板:

  • 提示占位符 — Amazon Bedrock 知识库中的预定义变量,这些变量在知识库查询期间在运行时动态填充。在系统提示符中,您会看到这些占位符被$符号包围。以下列表描述了您可以使用的占位符:

    Variable 替换为 模型 必填?
    $query$ 发送到知识库的用户查询。 AnthropicClaude Instant,AnthropicClaudev2.x
    Anthropic Claude 3 Sonnet 否(自动包含在模型输入中)
    $search_results$ 检索到的用户查询结果。 全部
    $output_format_instructions$ 格式化响应生成和引文的基本说明。因型号而异。如果您自己定义格式化说明,我们建议您删除此占位符。如果没有这个占位符,响应将不包含引文。 全部
    $current_time$ 当前时间。 全部
  • XML 标签 — Anthropic 模型支持使用 XML 标签来构造和描述您的提示。使用描述性标签名称以获得最佳结果。例如,在默认的系统提示中,您将看到用于描述先前问过的问题数据库的<database>标签)。有关更多信息,请参阅Anthropic用户指南中的使用 XML 标签

有关一般提示工程指南,请参阅 提示工程准则

选择与您选择的方法相对应的选项卡,然后按照步骤操作。

Console

按照中的控制台步骤进行操作查询知识库并返回结果或生成响应。在测试窗口中,打开 “生成响应”。然后,在配置窗格中,展开知识库提示模板部分。

  1. 选择编辑

  2. 在文本编辑器中编辑系统提示,包括必要的提示占位符和 XML 标签。要恢复到默认提示模板,请选择 “重置为默认值”。

  3. 编辑完成后,选择保存更改。要在不保存系统提示的情况下退出,请选择 “放弃更改”。

API

RetrieveAndGenerate发出请求时,请添加一个映射到GenerationConfiguration对象的generationConfiguration字段。要查看此字段的位置,请参阅 API 参考中的RetrieveAndGenerate请求正文。

以下 JSON 对象显示了GenerationConfiguration对象中设置要返回的最大检索结果数所需的最小字段:

"generationConfiguration": { "promptTemplate": { "textPromptTemplate": "string" } }

textPromptTemplate字段中输入您的自定义提示模板,必要时包括提示占位符和 XML 标签。有关系统提示中允许的最大字符数,请参阅中的textPromptTemplate字段GenerationConfiguration

您可以针对自己的用例和负责任的 AI 政策为知识库实施保护措施。您可以创建针对不同用例量身定制的多个护栏,并将其应用于多个请求和响应条件,从而在整个知识库中提供一致的用户体验并标准化安全控制。您可以将拒绝的主题配置为禁止不受欢迎的话题,将内容过滤器配置为屏蔽模型输入和响应中的有害内容。有关更多信息,请参阅 Amazon Bedrock 的护栏

注意

Claude 3 Sonnet 和 Haiku 目前不支持使用具有上下文基础的护栏作为知识库。

有关一般提示工程指南,请参阅 提示工程准则

选择与您选择的方法相对应的选项卡,然后按照步骤操作。

Console

按照中的控制台步骤进行操作查询知识库并返回结果或生成响应。在测试窗口中,打开 “生成响应”。然后,在 “配置” 窗格中,展开 “护栏” 部分。

  1. 护栏部分,选择护栏的名称版本如果您想查看所选护栏和版本的详细信息,请选择 “查看”。

    或者,您可以通过选择 Guardrail 链接来创建新的。

  2. 编辑完成后,选择保存更改。要在不保存的情况下退出,请选择 “放弃更改”。

API

当您提出RetrieveAndGenerate请求时,请在请求中添加generationConfiguration要使用护栏的guardrailsConfiguration字段。要查看此字段的位置,请参阅 API 参考中的RetrieveAndGenerate请求正文。

以下 JSON 对象显示了在中设置所需的最少字段guardrailsConfigurationGenerationConfiguration

"generationConfiguration": { "guardrailsConfiguration": { "guardrailsId": "string", "guardrailsVersion": "string" } }

指定所选护栏guardrailsVersionguardrailsId和。