本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置和自定义查询与响应生成
您可以配置和自定义检索和响应生成,从而进一步提高响应的相关性。例如,您可以对文档元数据字段/属性应用筛选条件,以使用最近更新的文档或修改时间最近的文档。
注意
除编排和生成外,以下所有配置仅适用于非结构化数据源。
要在控制台或中了解有关这些配置的更多信息API,请从以下主题中进行选择。
主题
从亚马逊 Kendra GenAI 索引中检索
您可以查询使用 Amazon Kendra GenAI 索引的知识库,并且仅返回来自数据源的相关文本。对于此查询,请发送 Retrieve使用适用于 Amazon Bedrock 的代理运行时端点进行请求,就像使用标准知识库一样。
从带有 Amazon Kendra GenAI 索引的知识库返回的响应结构与标准相同。 KnowledgeBaseRetrievalResult但是,回复中还包括来自Amazon Kendra的其他几个字段。
下表描述了您可能在返回的响应中看到的 Amazon Kendra 字段。亚马逊 Bedrock 从亚马逊 Kendra 的回复中获得了这些字段。如果该响应不包含这些字段,那么 Amazon Bedrock 返回的查询结果也不会包含这些字段。
字段 | 描述 |
---|---|
x-amz-kendra-document-标题 |
返回的文档的标题。 |
x-amz-kendra-score-信心 |
响应与查询的相关程度的相对排名。可能的值为 VERY _ HIGH HIGH、MEDIUM、LOW、和 NOT _ AVAILABLE。 |
x-amz-kendra-passage-id |
返回的通道的 ID。 |
x-amz-kendra-document-id |
返回的文档的 ID。 |
DocumentAttributes |
来自 Amazon Kendra 的文档属性或元数据字段。知识库返回的查询结果将它们存储为元数据键值对。您可以使用 Amazon Bedrock 中的元数据筛选功能筛选结果。有关更多信息,请参阅 DocumentAttribute。 |
搜索类型定义了知识库中的数据来源的查询方式。可能的搜索类型如下:
-
默认:Amazon Bedrock 为您决定搜索策略。
-
混合:将搜索向量嵌入(语义搜索)与搜索原始文本相结合。目前,只有包含可筛选文本字段的 Amazon OpenSearch Serverless 矢量存储才支持混合搜索。如果您使用其他矢量存储,或者您的 Amazon OpenSearch Serverless 矢量存储不包含可筛选的文本字段,则查询将使用语义搜索。
-
语义:仅搜索向量嵌入。
要了解如何定义搜索类型,请选择首选方法的选项卡,然后按照以下步骤操作:
查询分解是一种用于将复杂查询分解为更小、更易于管理的子查询的技术。这种方法可以帮助检索更准确、更相关的信息,尤其是在初始查询涉及多个方面或过于宽泛的情况下。启用此选项可能会导致对您的知识库执行多个查询,这可能有助于获得更准确的最终响应。
例如,对于像 “谁在2022年FIFA世界杯上得分更高,阿根廷还是法国?” ,在生成最终答案之前,Amazon Bedrock 知识库可能会先生成以下子查询:
-
阿根廷在2022年FIFA世界杯决赛中打进了多少球?
-
法国在 FIFA 2022年世界杯决赛中打进了多少球?
在基于信息检索生成响应时,您可以使用推理参数来更好地控制模型在推理期间的行为并影响模型的输出。
要了解如何修改推理参数,请选择首选方法的选项卡,然后按照以下步骤操作:
当您查询知识库时,默认情况下,Amazon Bedrock 会在响应中返回最多五个结果。每个结果都对应一个来源块。
要修改要返回的最大结果数,请选择首选方法对应的选项卡,然后按照以下步骤操作:
您可以将筛选器应用于fields/attributes to help you further improve the relevancy of responses. Your data sources can include document metadata attributes/fields要筛选的文档,也可以指定要在嵌入中包含哪些字段。例如,文档“epoch_modification_time”或文档在 1970 年 1 月 1 日最后一次更新之后经历的秒数。您可以通过将“epoch_modification_time”设置为大于某个数值,筛选出最新的数据。这些最新的文档可用于查询。
要在查询知识库时使用筛选条件,请检查您的知识库是否满足以下要求:
-
配置数据来源连接器时,大多数连接器都会抓取文档的主元数据字段。如果您使用 Amazon S3 存储桶作为数据源,则该存储桶必须至少
fileName.extension.metadata.json
包含与之关联的文件或文档的存储桶。有关配置元数据文件的连接配置更多信息,请参阅中的文档元数据字段。 -
如果知识库的向量索引位于 Amazon OpenSearch Serverless 矢量存储中,请检查该
faiss
引擎是否配置了矢量索引。如果向量索引是使用nmslib
引擎配置,则您必须执行以下操作之一: -
如果您要向 Amazon Aurora 数据库集群中的现有向量索引添加元数据,则在开始摄取之前,您必须为元数据文件中的每个元数据属性向表中添加一列。元数据属性值将写入这些列。
如果您的数据源中有PDF文档,并且使用 Amazon OpenSearch Serverless 作为矢量存储:Amazon Bedrock 知识库将生成文档页码并将其存储在名为-的元数据字段/属性中。x-amz-bedrock-kb document-page-number请注意,如果您为文档选择不分块,则不支持存储在元数据字段中的页码。
您可以使用以下筛选运算符在查询时筛选结果:
运算符 | 控制台 | API过滤器名称 | 支持的属性数据类型 | 筛选结果 |
---|---|---|---|---|
Equals | = | equals | 字符串、数字、布尔值 | 属性与您提供的值相匹配 |
Not equals | != | notEquals | 字符串、数字、布尔值 | 属性与您提供的值不匹配 |
Greater than | > | greaterThan | 数字 | 属性大于您提供的值 |
Greater than or equals | >= | greaterThanOr等于 | 数字 | 属性大于或等于您提供的值 |
Less than | < | lessThan | 数字 | 属性小于您提供的值 |
Less than or equals | <= | lessThanOr等于 | 数字 | 属性小于或等于您提供的值 |
In | : | in | 字符串列表 | 属性在您提供的列表中(目前亚马逊 OpenSearch 无服务器矢量商店最受支持) |
Not in | !: | notIn | 字符串列表 | 属性不在您提供的列表中(目前,Amazon OpenSearch Serverless 矢量存储最受支持) |
开始于 | ^ | startsWith | 字符串 | 属性以您提供的字符串开头(目前最支持的是 Amazon OpenSearch Serverless 矢量存储) |
要组合筛选运算符,可以使用以下逻辑运算符:
要了解如何使用元数据筛选结果,请选择首选方法对应的选项卡,然后按照以下步骤操作:
Amazon Bedrock 知识库根据用户查询和元数据架构生成并应用检索筛选器。
注意
该功能目前仅适用于 Anthropic Claude 3.5 Sonnet.
在中vectorSearchConfiguration
指定 implicitFilterConfiguration
Retrieve请求正文。包括以下字段:
-
metadataAttributes
— 在此数组中,提供描述模型将为其生成过滤器的元数据属性的架构。 -
modelArn
— 要ARN使用的模型的。
以下是您可以添加到数组中的metadataAttributes
元数据架构的示例。
[ { "key": "company", "type": "STRING", "description": "The full name of the company. E.g. `Amazon.com, Inc.`, `Alphabet Inc.`, etc" }, { "key": "ticker", "type": "STRING", "description": "The ticker name of a company in the stock market, e.g. AMZN, AAPL" }, { "key": "pe_ratio", "type": "NUMBER", "description": "The price to earning ratio of the company. This is a measure of valuation of a company. The lower the pe ratio, the company stock is considered chearper." }, { "key": "is_us_company", "type": "BOOLEAN", "description": "Indicates whether the company is a US company." }, { "key": "tags", "type": "STRING_LIST", "description": "Tags of the company, indicating its main business. E.g. `E-commerce`, `Search engine`, `Artificial intelligence`, `Cloud computing`, etc" } ]
当您查询知识库并请求生成响应时,Amazon Bedrock 使用将说明和上下文与用户查询相结合的提示模板来构造发送到模型以生成响应的生成提示。您还可以自定义编排提示,它将用户的提示转换为搜索查询。您可以使用以下工具设计提示模板:
-
提示占位符:Amazon Bedrock 知识库中的预定义变量,这些变量在知识库查询期间在运行时动态填充。在系统提示中,您将看到这些占位符两边都有
$
符号。以下列表介绍了可以使用的占位符:变量 提示模板 已替换为 模型 必填? $query$ 编排、生成 发送到知识库的用户查询。 Anthropic Claude Instant, Anthropic Claude v2.x Yes Anthropic Claude 3 Sonnet 否(自动包含在模型输入中) $search_results$ 生成 针对用户查询的检索到的结果。 全部 Yes $output_format_instructions$ 编排 用于格式化响应生成和引文的底层指令。因模型而异。如果您定义了自己的格式化指令,建议您删除此占位符。如果没有这个占位符,响应将不包含引文。 全部 否 $current_time$ 编排、生成 当前时间。 全部 否 -
XML标签 — Anthropic 模型支持使用XML标签来构造和描绘您的提示。请使用描述性标签名称以获得最佳结果。例如,在默认的系统提示中,您将看到用于描述先前询问过的相关数据库的
<database>
标签)。有关更多信息,请参阅中的使用XML标签Anthropic 用户指南 。
有关提示工程的一般性准则,请参阅 提示工程概念。
选择您首选方法的选项卡,然后按照以下步骤操作:
您可以基于自己的应用场景和负责任的人工智能政策为知识库实施防护机制。您可以创建针对不同应用场景量身定制的多个防护机制,并跨多个请求和响应条件应用它们,从而在整个知识库中提供一致的用户体验并标准化安全控制。您可以将拒绝的主题配置为禁止不受欢迎的主题,将内容筛选条件配置为屏蔽模型输入和响应中的有害内容。有关更多信息,请参阅 使用 Amazon Bedrock 防护机制阻止模型中的有害内容。
注意
Claude 3 Sonnet 和 Haiku 目前不支持针对知识库应用具有上下文基础的防护机制。
有关提示工程的一般性准则,请参阅 提示工程概念。
选择您首选方法的选项卡,然后按照以下步骤操作: