本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为托管知识库配置和自定义查询
您可以配置和自定义检索,进一步提高结果的相关性。例如,您可以对文档元数据应用筛选器 fields/attributes ,以使用最近更新的文档或修改时间最近的文档。
注意
以下所有配置仅适用于非结构化数据源。
要详细了解控制台或 API 中的这些配置,请从以下主题中进行选择。
当您查询知识库时,默认情况下,Amazon Bedrock 会在响应中返回最多五个结果。每个结果都对应一个来源块。
注意
响应中的实际结果数可能小于指定的 numberOfResults 值,因为此参数设置了要返回的最大结果数。如果您为分块策略配置了分层分块,numberOfResults 参数会映射到知识库将检索的子分块的数量。由于共享同一父块的子块在最终响应中会被父块替换,因此返回的结果数可能少于请求的数量。
要修改返回的最大结果数,请选择与您的首选方法对应的选项卡,然后按照以下步骤操作:
您可以对文档应用筛选器 fields/attributes ,以帮助您进一步提高回复的相关性。您的数据源可以包含 attributes/fields 要筛选的文档元数据,并且可以指定嵌入中要包含哪些字段。
托管知识库注意事项
在托管知识库中使用元数据筛选时:
-
不支持
startsWith和stringContains元数据过滤器。改用equalsgreaterThan、lessThan、in、或notIn运算符。 -
范围运算符(
greaterThangreaterThanOrEqualslessThan、、和lessThanOrEquals)接受数字或日期时间值。要按日期时间进行过滤,请将该值作为 ISO-8601 偏移日期时间格式的字符串提供。使用全偏移形式,例如2026-03-02T19:02:18Z。范围运算符仅支持托管知识库的日期时间字符串值。 -
对于自定义知识库,前缀
x-amz-bedrock为的元数据字段由服务保留。对于完全托管的知识库,保留的元数据字段使用下划线前缀(例如_source_uri,,_data_source_id)。您不能覆盖任一知识库类型中的保留元数据字段。
例如,“epoch_modification_time”表示文档自 1970 年 1 月 1 日(UTC)最后一次更新之后经历的秒数。您可以通过将“epoch_modification_time”设置为大于某个数值,筛选出最新的数据。这些最新的文档可用于查询。
要在查询知识库时使用筛选条件,请检查您的知识库是否满足以下要求:
-
配置数据来源连接器时,大多数连接器都会抓取文档的主元数据字段。如果使用 Amazon S3 存储桶作为数据来源,则针对与其关联的文件或文档,该存储桶必须至少包含一个
fileName.extension.metadata.json。有关配置元数据文件的更多信息,请参阅连接配置中的文档元数据字段。 -
如果您的知识库的矢量索引在 Amazon OpenSearch Serverless 矢量存储中,请检查向量索引是否已使用
faiss引擎配置。如果向量索引是使用nmslib引擎配置,则您必须执行以下操作之一: -
如果您的知识库使用 S3 向量存储桶中的向量索引,则无法使用
startsWith和stringContains筛选条件。 -
如果您要向 Amazon Aurora 数据库集群中的现有向量索引添加元数据,建议您提供自定义元数据列的字段名称,以便将所有元数据存储在一个列中。在数据摄取期间,此列将用来填入数据来源中的元数据文件包含的所有信息。如果您选择提供该字段,则必须在此列上创建索引。
如果您的数据源中有 PDF 文档,并且使用亚马逊 OpenSearch Serverless 或 Amazon Aurora 作为矢量存储:亚马逊 Bedrock 知识库将生成文档页码并将其存储在 field/attribute 名为 x-amz-bedrock-kb-document-page-number 的元数据中。请注意,如果您为文档选择不分块,则不支持在元数据字段中存储的页码。
您可以使用以下筛选运算符在查询时筛选结果:
| 运算符 | 控制台 | API 筛选条件名称 | 支持的属性数据类型 | 筛选结果 |
|---|---|---|---|---|
| Equals | = | equals | 字符串、数字、布尔值 | 属性与您提供的值相匹配 |
| Not equals | != | noteQuals | 字符串、数字、布尔值 | 属性与您提供的值不匹配 |
| Greater than | > | greaterThan | 数字 | 属性大于您提供的值 |
| Greater than or equals | >= | 更大 ThanOrEquals | 数字 | 属性大于或等于您提供的值 |
| Less than | < | lessThan | 数字 | 属性小于您提供的值 |
| Less than or equals | <= | 更少 ThanOrEquals | 数字 | 属性小于或等于您提供的值 |
| In | : | in | 字符串列表 | 属性在您提供的列表中(目前亚马逊 OpenSearch 无服务器和 Neptune Analytics GraphRag 矢量存储支持效果最佳) |
| Not in | !: | notIn | 字符串列表 | 属性不在您提供的列表中(目前亚马逊 OpenSearch 无服务器和 Neptune Analytics GraphRag 矢量存储支持效果最佳) |
| String contains | 不可用 | stringContains | 字符串 | 属性必须是字符串。属性名称与密钥相匹配,其值是一个字符串,其中包含您作为子字符串提供的值,或者一个包含您作为子字符串提供的值的成员列表(目前最适合由 Amazon OpenSearch Serverless 矢量存储支持)。海王星分析 GraphRag 矢量存储支持字符串变体,但不支持此过滤器的列表变体)。 |
| List contains | 不可用 | listContains | 字符串 | 属性必须采用字符串列表形式。属性名称与键相匹配,其值是一个列表,其中包含您作为其成员之一提供的值(目前 Amazon OpenSearch Serverless 矢量存储最支持该值)。 |
要组合筛选运算符,可以使用以下逻辑运算符:
要了解如何使用元数据筛选结果,请选择与您的首选方法对应的选项卡,然后按照以下步骤操作:
您可以基于自己的应用场景和负责任的人工智能政策为知识库实施防护机制。您可以创建针对不同应用场景量身定制的多个防护机制,并跨多个请求和响应条件应用它们,从而在整个知识库中提供一致的用户体验并标准化安全控制。您可以将拒绝的主题配置为禁止不受欢迎的主题,将内容筛选条件配置为屏蔽模型输入和响应中的有害内容。有关更多信息,请参阅使用 Amazon Bedrock 护栏检测和筛选掉有害内容。
注意
Claude 3 Sonnet 和 Haiku 目前不支持针对知识库应用具有上下文基础的防护机制。
有关提示工程的一般性准则,请参阅提示工程概念。
选择与您的首选方法对应的选项卡,然后按照以下步骤操作:
您可以使用重排器模型对知识库查询的结果进行重排。按照 查询知识库并检索数据 中的控制台步骤进行操作。打开配置窗格后,展开重排部分。选择重排模型,必要时更新权限,并修改任何其他选项。完成重排后,输入提示,然后选择运行以测试结果。