

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

# 利用查询和响应测试知识库
<a name="knowledge-base-test"></a>

设置知识库后，可以通过以下方式测试其行为：
+ 使用 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 操作发送查询并从数据来源中检索相关信息。
+ 使用 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 操作，发送查询并根据从数据来源中检索到的信息生成对查询的响应。
+ 在使用 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 或 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 时，使用一个重排模型（而非默认的 Amazon Bedrock 知识库重排模型）以检索更相关的来源。
+ 在 `Retrieve` 或 `RetrieveAndGenerate` API 中使用可选的元数据筛选条件，来指定可使用数据来源中的哪些文档。

对知识库的行为感到满意后，可通过执行[为人工智能应用程序部署知识库](knowledge-base-deploy.md)这一操作，设置应用程序来查询知识库或将知识库附加到代理。

选择一个主题以了解更多相关信息。

**Topics**
+ [查询知识库并检索数据](kb-test-retrieve.md)
+ [根据检索到的数据查询知识库并生成响应](kb-test-retrieve-generate.md)
+ [生成对结构化数据的查询](knowledge-base-generate-query.md)
+ [查询连接到 Amazon Kendra GenAI 索引的知识库](kb-test-kendra.md)
+ [查询连接到 Amazon Neptune Analytics 分析数据库引擎图表的知识库](kb-test-neptune.md)
+ [配置和自定义查询与响应生成](kb-test-config.md)
+ [使用知识库为推理模型配置响应生成](kb-test-configure-reasoning.md)

# 查询知识库并检索数据
<a name="kb-test-retrieve"></a>

**重要**  
护栏仅适用于输入和 LLM 生成的响应。它们不适用于运行时从知识库中检索到的参考信息。

知识库设置完成后，您可以使用 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) API 操作对其进行查询，从源数据中检索与查询相关的分块。您也可以[使用重排模型](rerank.md)，而不是默认的 Amazon Bedrock 知识库排名器，来对检索期间的来源分块进行相关性排名。

要了解如何查询知识库，请选择与您的首选方法对应的选项卡，然后按照以下步骤操作：

------
#### [ Console ]

**测试知识库**

1. 使用有权使用 Amazon Bedrock 控制台的 IAM 身份登录。 AWS 管理控制台 然后，在 [https://console.aws.amazon.com/](https://console.aws.amazon.com/bedrock)bedrock 上打开 Amazon Bedrock 控制台。

1. 在左侧导航窗格中，选择**知识库**。

1. 在**知识库**部分中，执行以下操作之一：
   + 选择要测试的知识库旁边的单选按钮，然后选择**测试知识库**。一个文本窗口将从右侧展开。
   + 选择您要测试的知识库。一个文本窗口将从右侧展开。

1. 在测试窗口中，清除**为查询生成响应**以直接从知识库返回检索到的信息。

1. （可选）选择配置图标（![\[Three horizontal sliders with adjustable circular controls for settings or parameters.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/configurations.png)）以打开**配置**。有关配置的信息，请参阅[配置和自定义查询与响应生成](kb-test-config.md)。

1. 在聊天窗口的文本框中输入查询，然后选择**运行**，让知识库返回响应。

1. 来源分块会按相关性顺序直接返回。从数据来源中提取的图像也可以作为来源分块返回。

1. 要查看有关返回的分块的详细信息，请选择**显示来源详细信息**。
   + 要查看您为查询设置的配置，请展开**查询配置**。
   + 要查看有关来源分块的详细信息，请选择其旁边的向右箭头 (![\[Play button icon with a triangular shape pointing to the right.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/caret-right-filled.png)) 将其展开。您可以查看以下信息：
     + 来自来源分块的原始文本。要复制此文本，请选择复制图标 (![\[Icon representing a crop or resize function, with two overlapping rectangles.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/copy.png))。如果您使用 Amazon S3 存储数据，请选择外部链接图标（![\[Icon of a square with an arrow pointing outward from its top-right corner.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/external.png)）以导航到包含该文件的 S3 对象。
     + 与来源分块关联的元数据（如果您使用了 Amazon S3 存储数据）。 attribute/field 键和值在与源文档关联`.metadata.json`的文件中定义。有关更多信息，请参阅[配置和自定义查询与响应生成](kb-test-config.md)中的**元数据和筛选**部分。

**聊天选项**
+ 通过打开**生成响应**，切换为基于检索到的来源分块生成响应。如果更改设置，聊天窗口中的文本将被完全清除。
+ 要清除聊天窗口，请选择扫帚图标（![\[Magnifying glass icon with a checkmark inside, symbolizing search or inspection.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/broom.png)）。
+ 要复制聊天窗口中的所有输出，请选择复制图标（![\[Icon representing a crop or resize function, with two overlapping rectangles.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/copy.png)）。

------
#### [ API ]

要查询知识库并仅从数据来源返回相关文本，请使用 [Amazon Bedrock 代理运行时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)发送 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 请求。

以下字段是必填字段：


****  

| 字段 | Basic description | 
| --- | --- | 
| knowledgeBaseId | 指定要查询的知识库。 | 
| retrievalQuery | 包含用于指定查询的 text 字段。 | 
| guardrailsConfiguration | 包括 guardrailsConfiguration 字段，例如 guardrailsId 和 guardrailsVersion，以便在请求中使用护栏 | 

以下字段是可选字段：


****  

| 字段 | 使用案例 | 
| --- | --- | 
| nextToken | 返回下一批响应（请参阅以下响应字段）。 | 
| retrievalConfiguration | 包括用于自定义向量搜索的[查询配置](kb-test-config.md)。请参阅[KnowledgeBaseVectorSearchConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseVectorSearchConfiguration.html)了解更多信息。 | 

在默认的 Amazon Bedrock 知识库排名模型中，您可以使用重新排名模型而不是默认的 Amazon Bedrock 知识库排名模型。`rerankingConfiguration` [KnowledgeBaseVectorSearchConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseVectorSearchConfiguration.html)该`rerankingConfiguration`字段映射到一个[VectorSearchRerankingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_VectorSearchRerankingConfiguration.html)对象，您可以在其中指定要使用的重新排名模型、要包含的任何其他请求字段、在重新排名期间筛选出文档的元数据属性以及重新排名后要返回的结果数。有关更多信息，请参阅 [VectorSearchRerankingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_VectorSearchRerankingConfiguration.html)。

**注意**  
如果您指定的`numberOfRerankedResults`值大于中的`numberOfResults`值 [KnowledgeBaseVectorSearchConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseVectorSearchConfiguration.html)，则返回的最大结果数就是的值`numberOfResults`。一个例外情况是在您使用查询分解时（有关更多信息，请参阅[配置和自定义查询与响应生成](kb-test-config.md)中的**查询修改**部分）。如果您使用查询分解，则 `numberOfRerankedResults` 最多可以是 `numberOfResults` 的五倍。

该响应以`retrievalResults`字段中[KnowledgeBaseRetrievalResult](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalResult.html)对象数组的形式返回来自数据源的源块。每个都[KnowledgeBaseRetrievalResult](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalResult.html)包含以下字段：


****  

| 字段 | 说明 | 
| --- | --- | 
| content | 在 text 中包含文本来源分块，或者在 byteContent 字段中包含图像来源分块。如果内容是图像，则按以下格式返回 base64 编码内容的数据 URI：data:image/jpeg;base64,\$1\$1base64-encoded string\$1。 | 
| 元数据 | 包含每个元数据属性作为键，并包含元数据值作为键映射到的 JSON 值。 | 
| 地点 | 包含来源分块所属文档的 URI 或 URL。 | 
| 分数 | 文档的相关性分数。您可以使用此分数来分析对结果的排名。 | 

如果来源分块的数量超过了响应中可以容纳的数量，则 `nextToken` 字段中将返回一个值。将该值用于另一个请求中可返回下一批结果。

如果检索到的数据包含图像，则响应还会返回以下响应标头，其中包含响应中返回的来源分块的元数据：
+ `x-amz-bedrock-kb-byte-content-source` – 包含图像的 Amazon S3 URI。
+ `x-amz-bedrock-kb-description` – 包含图像的 base64 编码的字符串。

**注意**  
[配置元数据筛选条件](kb-test-config.md)时，您无法根据这些元数据响应标头进行筛选。

**多模式查询**  
对于使用多模嵌入模型的知识库，您可以使用文本或图像进行查询。该`retrievalQuery`字段支持用于图像查询的`multimodalInputList`字段：

**注意**  
有关设置和使用多模式知识库（包括在 Nova 和 BDA 方法之间进行选择）的全面指导，请参阅。[为多模式内容建立知识库](kb-multimodal.md)

您可以使用以下`multimodalInputList`字段查询图片：

```
{
    "knowledgeBaseId": "EXAMPLE123", 
    "retrievalQuery": {
        "multimodalInputList": [
            {
                "content": {
                    "byteContent": "base64-encoded-image-data"
                },
                "modality": "IMAGE"
            }
        ]
    }
}
```

或者，您也可以使用以下`text`字段仅使用文本进行查询：

```
{
    "knowledgeBaseId": "EXAMPLE123",
    "retrievalQuery": {
        "text": "Find similar shoes"
    }
}
```

**常见的多模式查询模式**  
以下是一些常见的查询模式：

Image-to-image 搜索  
上传图片以查找视觉上相似的图像。示例：上传一双红色 Nike 鞋的照片，以便在您的产品目录中找到类似的鞋子。

基于文本的搜索  
使用文本查询来查找相关内容。示例：“查找相似鞋子”，使用文字描述搜索您的商品目录。

可视化文档搜索  
在文档中搜索图表、图表或视觉元素。示例：上传图表图像以在您的文档集合中查找相似的图表。

**在 Nova 和 BDA 之间进行选择以获得多模式内容**  
在处理多模式内容时，请根据您的内容类型和查询模式选择您的方法：


**Nova vs BDA 决策矩阵**  

| 内容类型 | 使用 Nova 多模态嵌入式 | 使用基岩数据自动化 (BDA) 解析器 | 
| --- | --- | --- | 
| 视频内容 | 以视觉叙事为重点（体育、广告、演示）、对视觉元素的查询、最少的语音内容 | 重要 speech/narration （演讲、会议、教程）、口语内容查询、需要笔录 | 
| 音频内容 | 音乐或音效识别，非语音音频分析 | 播客、访谈、会议、任何需要转录的演讲内容 | 
| 图片内容 | 视觉相似度搜索、 image-to-image检索、视觉内容分析 | 从图像中提取文本、文档处理、OCR 要求 | 

**注意**  
Nova 多模态嵌入无法直接处理语音内容。如果您的音频或视频文件包含重要的语音信息，请先使用 BDA 解析器将语音转换为文本，或者改为选择文本嵌入模型。

**多模式查询限制**  
以下是多模式查询的一些限制：
+ 在当前版本中，每次查询最多只能有一张图片
+ 只有多模态嵌入模型（Titan G1 或 Cohere Embed v3）才支持图像查询
+ RetrieveAndGenerate 具有多模式嵌入模型和 S3 内容存储桶的知识库不支持 API
+ 如果您使用纯文本嵌入模型向知识库提供图像查询，则将返回 4xx 错误

**多模态 API 响应结构**  
多模式内容的检索响应包括其他元数据：
+ **来源 URI：**指向您的原始 S3 存储桶位置
+ **补充 URI：**指向多式联运存储桶中的副本
+ **时间戳元数据：**包含用于视频和音频区块的时间戳元数据，以实现精确的播放定位

**注意**  
使用 API 或 SDK 时，您需要在应用程序中处理文件检索和时间戳导航。控制台通过增强的视频播放和自动时间戳导航自动处理此问题。

------

**注意**  
如果您在生成响应时收到提示超过字符限制的错误消息，则可以通过以下方式缩短提示：  
减少检索到的最大结果数（这会缩短 [知识库提示模板：编排和生成](kb-test-config.md#kb-test-config-prompt-template) 中为 \$1search\$1results\$1 占位符填写的内容）。
使用采用更小分块的分块策略重新创建数据来源（这会缩短 [知识库提示模板：编排和生成](kb-test-config.md#kb-test-config-prompt-template) 中为 \$1search\$1results\$1 占位符填写的内容）。
缩短提示模板。
缩短用户查询（这会缩短 [知识库提示模板：编排和生成](kb-test-config.md#kb-test-config-prompt-template) 中为 \$1query\$1 占位符填写的内容）。

# 根据检索到的数据查询知识库并生成响应
<a name="kb-test-retrieve-generate"></a>

**重要**  
护栏仅适用于输入和 LLM 生成的响应。它们不适用于运行时从知识库中检索到的参考信息。

设置了知识库之后，您可以使用 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API 操作查询知识库，并根据从源数据中检索到的分块来生成响应。返回的响应中附有对原始源数据的引用。您也可以[使用重排模型](rerank.md)，而不是默认的 Amazon Bedrock 知识库排名器，来对检索期间的来源分块进行相关性排名。

**多式联运内容限制**  
`RetrieveAndGenerate`对多式联运内容的支持有限。使用 Nova 多模态嵌入时，RAG 功能仅限于文本内容。要获得包括音频和视频处理在内的完整多模态支持，请将 BDA 与文本嵌入模型一起使用。有关更多信息，请参阅 [为多模式内容建立知识库](kb-multimodal.md)。

**注意**  
`RetrieveAndGenerate` 流期间，从 `Retrieve` 响应返回的图像包含在用于响应生成的提示中。`RetrieveAndGenerate` 响应不能包含图像，但可以引用包含图像的来源。

要了解如何查询知识库，请选择与您的首选方法对应的选项卡，然后按照以下步骤操作：

------
#### [ Console ]

**测试知识库**

1. 使用有权使用 Amazon Bedrock 控制台的 IAM 身份登录。AWS 管理控制台然后，在 [https://console.aws.amazon.com/](https://console.aws.amazon.com/bedrock)bedrock 上打开 Amazon Bedrock 控制台。

1. 在左侧导航窗格中，选择**知识库**。

1. 在**知识库**部分中，执行以下操作之一：
   + 选择要测试的知识库旁边的单选按钮，然后选择**测试知识库**。一个文本窗口将从右侧展开。
   + 选择您要测试的知识库。一个文本窗口将从右侧展开。

1. 要基于从知识库检索到的信息生成响应，请启用**为查询生成响应**。Amazon Bedrock 将根据您的数据来源生成响应，并通过脚注引用它提供的信息。

1. 要选择用于生成响应的模型，请选择**选择模型**。然后选择**应用**。

1. （可选）选择配置图标（![\[Three horizontal sliders with adjustable circular controls for settings or parameters.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/configurations.png)）以打开**配置**。有关配置的信息，请参阅[配置和自定义查询与响应生成](kb-test-config.md)。

1. 在聊天窗口的文本框中输入查询，然后选择**运行**，让知识库返回响应。

1. 请选择脚注以查看对应响应部分的引用来源摘录。选择链接以导航到包含该文件的 S3 对象。

1. 要查看有关返回的分块的详细信息，请选择**显示来源详细信息**。
   + 要查看您为查询设置的配置，请展开**查询配置**。
   + 要查看有关来源分块的详细信息，请选择其旁边的向右箭头 (![\[Play button icon with a triangular shape pointing to the right.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/caret-right-filled.png)) 将其展开。您可以查看以下信息：
     + 来自来源分块的原始文本。要复制此文本，请选择复制图标 (![\[Icon representing a crop or resize function, with two overlapping rectangles.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/copy.png))。如果您使用 Amazon S3 存储数据，请选择外部链接图标（![\[Icon of a square with an arrow pointing outward from its top-right corner.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/external.png)）以导航到包含该文件的 S3 对象。
     + 与来源分块关联的元数据（如果您使用了 Amazon S3 存储数据）。 attribute/field 键和值在与源文档关联`.metadata.json`的文件中定义。有关更多信息，请参阅[配置和自定义查询与响应生成](kb-test-config.md)中的**元数据和筛选**部分。

**聊天选项**
+ 要使用不同的模型进行响应生成，请选择**更改模型**。如果更改模型，聊天窗口中的文本将被完全清除。
+ 通过清除**生成响应**直接切换到检索来源分块。如果更改设置，聊天窗口中的文本将被完全清除。
+ 要清除聊天窗口，请选择扫帚图标（![\[Magnifying glass icon with a checkmark inside, symbolizing search or inspection.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/broom.png)）。
+ 要复制聊天窗口中的所有输出，请选择复制图标（![\[Icon representing a crop or resize function, with two overlapping rectangles.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/copy.png)）。

------
#### [ API ]

要查询知识库，并使用基础模型根据数据来源的结果生成响应，请使用 [Amazon Bedrock 代理运行时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)发送 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 请求。

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html) API 以流式格式返回数据，让您能够以分块方式访问生成的响应，而无需等待整个结果完成后再返回。

以下字段是必填字段：

**注意**  
API 响应包含引文事件。`citation` 成员已弃用。建议您改用 `generatedResponse` 和 `retrievedReferences` 字段。有关参考，请参阅 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_CitationEvent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_CitationEvent.html)。


****  

| 字段 | Basic description | 
| --- | --- | 
| input | 包含用于指定查询的 text 字段。 | 
| retrieveAndGenerate配置 | 包含 [RetrieveAndGenerateConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateConfiguration.html)，它指定了检索和生成的配置。有关更多详细信息，请参阅下文。 | 

以下字段是可选字段：


****  

| 字段 | 使用案例 | 
| --- | --- | 
| sessionId | 使用与前一个会话相同的值来继续该会话，并从中维护模型的上下文。 | 
| sessionConfiguration | 包括用于会话加密的自定义 KMS 密钥。 | 

将该`knowledgeBaseConfiguration`字段包含在[RetrieveAndGenerateConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateConfiguration.html)。此字段映射到一个[KnowledgeBaseRetrieveAndGenerateConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrieveAndGenerateConfiguration.html)对象，其中包含以下字段：
+ 以下字段是必填字段：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/kb-test-retrieve-generate.html)
+ 以下字段是可选字段：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/kb-test-retrieve-generate.html)

您可以通过在[KnowledgeBaseVectorSearchConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseVectorSearchConfiguration.html)中添加`rerankingConfiguration`字段来使用重新排名模型，而不是默认的 Amazon Bedrock 知识库排名模型。[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html)该`rerankingConfiguration`字段映射到一个[VectorSearchRerankingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_VectorSearchRerankingConfiguration.html)对象，您可以在其中指定要使用的重新排名模型、要包含的任何其他请求字段、在重新排名期间筛选出文档的元数据属性以及重新排名后要返回的结果数。有关更多信息，请参阅 [VectorSearchRerankingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_VectorSearchRerankingConfiguration.html)。

**注意**  
如果您指定的`numberOfRerankedResults`值大于中的`numberOfResults`值 [KnowledgeBaseVectorSearchConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseVectorSearchConfiguration.html)，则返回的最大结果数就是的值`numberOfResults`。一个例外情况是在您使用查询分解时（有关更多信息，请参阅[配置和自定义查询与响应生成](kb-test-config.md)中的**查询修改**部分）。如果您使用查询分解，则 `numberOfRerankedResults` 最多可以是 `numberOfResults` 的五倍。

响应在 `output` 字段中返回生成的响应，并将引用的来源分块作为数组在 `citations` 字段中返回。每个[引文](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Citation.html)对象都包含以下字段。


****  

| 字段 | Basic description | 
| --- | --- | 
| generatedResponsePart | 在 textResponsePart 字段中，包括与引文相关的 text。span 字段为输出中带有引文的部分的开头和结尾提供索引。 | 
| retrievedReferences | 一个[RetrievedReference](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievedReference.html)对象数组，每个对象都包含与文档metadata关联content的源代码块，以及数据源中文档的 URI 或 URL location。 如果内容是图像，则按以下格式返回 base64 编码内容的数据 URI：data:image/jpeg;base64,\$1\$1base64-encoded string\$1。 | 

响应还返回一个 `sessionId` 值，您可以在其他请求中重复使用该值以维护相同的对话。

如果您在请求中包含了 `guardrailConfiguration`，则 `guardrailAction` 字段会通知您内容是否被阻止。

如果检索到的数据包含图像，则响应还会返回以下响应标头，其中包含响应中返回的来源分块的元数据：
+ `x-amz-bedrock-kb-byte-content-source` – 包含图像的 Amazon S3 URI。
+ `x-amz-bedrock-kb-description` – 包含图像的 base64 编码的字符串。

**注意**  
[配置元数据筛选条件](kb-test-config.md)时，您无法根据这些元数据响应标头进行筛选。

------

**注意**  
如果您在生成响应时收到提示超过字符限制的错误消息，则可以通过以下方式缩短提示：  
减少检索到的最大结果数（这会缩短 [知识库提示模板：编排和生成](kb-test-config.md#kb-test-config-prompt-template) 中为 \$1search\$1results\$1 占位符填写的内容）。
使用采用更小分块的分块策略重新创建数据来源（这会缩短 [知识库提示模板：编排和生成](kb-test-config.md#kb-test-config-prompt-template) 中为 \$1search\$1results\$1 占位符填写的内容）。
缩短提示模板。
缩短用户查询（这会缩短 [知识库提示模板：编排和生成](kb-test-config.md#kb-test-config-prompt-template) 中为 \$1query\$1 占位符填写的内容）。

# 生成对结构化数据的查询
<a name="knowledge-base-generate-query"></a>

在将结构化数据存储连接到知识库时，知识库会根据将查询的数据来源的结构，将用户提供的自然语言查询转换为 SQL 查询，从而对其进行查询。当您使用以下各项时：
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html)：响应返回 SQL 查询执行的结果。
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html)：生成的响应基于 SQL 查询执行的结果。
+ [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html)：Amazon Bedrock 知识库将查询的转换与检索过程分开。您可以使用此 API 操作将查询转换为 SQL 查询。

## 使用 `GenerateQuery` API
<a name="knowledge-base-generate-query-api"></a>

您可以将来自 `GenerateQuery` API 操作的响应与后续 `Retrieve` 或 `RetrieveAndGenerate` 操作结合使用，也可以将该响应插入其他工作流中。利用 `GenerateQuery`，您可以考虑知识库数据来源的结构，从而高效地将查询转换为 SQL 查询。

要将自然语言查询变成 SQL 查询，请使用[适用于 Amazon Bedrock 的代理运行时终端节点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)提交[GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html)请求。`GenerateQuery` 请求包含以下字段：
+ queryGenerationInput — 指定`TEXT`为`type`并在`text`字段中包含查询。
**注意**  
必须用英文撰写查询。
+ transformationConfiguration – 将 `TEXT_TO_SQL` 指定为 `mode`。在 `textToSqlConfiguration` 字段中，将 `KNOWLEDGE_BASE` 指定为 `type`。然后，指定知识库的 ARN。

响应返回一个包含`queries`字段中[GeneratedQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GeneratedQuery.html)对象的数组。该对象包含针对 `sql` 字段中查询的 SQL 查询。

## 重要注意事项
<a name="knowledge-base-generate-query-considerations"></a>

以下是使用结构化数据生成查询时的一些关键注意事项。
+ 

**跨区域推理和结构化数据检索**  
结构化数据检索使用跨区域推理来选择您所在地理区域AWS 区域内的最佳数据来处理您的推理请求。这不会产生任何额外费用，并且会最大限度地提高可用资源和模型的可用性，进而改善客户体验。

  交叉推理请求保存在数据最初所在的地理区域内。AWS 区域您的数据仍存储在源区域内，但输入提示和输出结果可能会移至该区域之外。所有数据都将通过 Amazon 的安全网络进行加密传输。

  有关更多信息，请参阅 [通过跨区域推理提高吞吐量](cross-region-inference.md)。
+ 

**生成的 SQL 查询的准确性**  
生成的 SQL 查询的准确性可能因上下文、表架构和用户查询意图而异。先评测生成的查询以确保它们适合您的使用案例，之后再在工作负载中使用这些查询。
+ 

**检索到的结果数**  
在生成响应时，以下限制将适用。
  + 如果使用的是 `InvokeAgent`、`RetrieveAndGenerate` 和 `RetrieveAndGenerateStream` API 操作，则在生成响应时，仅使用 10 个检索到的结果。
  + 在使用 `InvokeAgent` API 时，如果检索到的结果超过 10 行，则检索到的行总数不会传递给用于生成响应的代理。如果您改用 `RetrieveAndGenerate` API，则总行数包含在用于生成最终响应的提示中。
+ 

**`GenerateQuery` API 配额**  
该 `GenerateQuery` API 的配额为每秒 2 个请求。

## 向角色授予对生成的查询的访问权限
<a name="knowledge-base-structured-permissions"></a>

对于连接到结构化数据来源的知识库，如果您想对生成的查询执行一些其他操作，则必须授予执行 `GenerateQuery` API 操作的权限。要使 IAM 角色能够查询连接到结构化数据存储的知识库，请将以下策略附加到该角色：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetKB",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetKnowledgeBase"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/KnowledgeBaseId"
            ]
        },
        {
            "Sid": "GenerateQueryAccess",
            "Effect": "Allow",
            "Action": [
                "bedrock:GenerateQuery",
                "sqlworkbench:GetSqlRecommendations"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Retrieve",
            "Effect": "Allow",
            "Action": [
                "bedrock:Retrieve"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/KnowledgeBaseId"
            ]
        },
        {
            "Sid": "RetrieveAndGenerate",
            "Effect": "Allow",
            "Action": [
                "bedrock:RetrieveAndGenerate"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

您可以根据使用案例移除不需要的语句：
+ 调用`GetKB`和`GenerateQuery`语句[GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html)才能生成 SQL 查询，这些查询将用户查询和您连接的数据源考虑在内。
+ 需要使用 `Retrieve` 语句来调用 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 以从结构化数据存储中检索数据。
+ 需要使用 `RetrieveAndGenerate` 语句来调用 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 以从结构化数据存储中检索数据，并根据该数据生成响应。

# 查询连接到 Amazon Kendra GenAI 索引的知识库
<a name="kb-test-kendra"></a>

您可以查询使用 Amazon Kendra GenAI 索引的知识库，并且仅返回来自数据来源的相关文本。对于此查询，请使用 [Amazon Bedrock 代理运行时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)发送 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 请求，就像使用标准知识库一样。

连接了 Amazon Kendra GenAI 索引的知识库返回的响应结构，与标准的 [KnowledgeBaseRetrievalResult](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalResult.html) 相同。但是，响应中还包括来自 Amazon Kendra 的其他几个字段。

下表描述了您在返回的响应中可能看到的 Amazon Kendra 中的字段。Amazon Bedrock 从 Amazon Kendra 响应中获取这些字段。如果该响应不包含这些字段，Amazon Bedrock 返回的查询结果也不会包含这些字段。


| 字段 | 描述 | 
| --- | --- | 
|  x-amz-kendra-document-title  |  所返回文档的标题。  | 
|  x-amz-kendra-score-confidence  |  响应与查询的相关程度的相对排名。可能的值为“VERY\$1HIGH”、“HIGH”、“MEDIUM”、“LOW”和“NOT\$1AVAILABLE”。  | 
|  x-amz-kendra-passage-id  |  所返回段落的 ID。  | 
|  x-amz-kendra-document-id  |  所返回文档的 ID。  | 
|  DocumentAttributes  |  来自 Amazon Kendra 的文档属性或元数据字段。知识库返回的查询结果将它们作为元数据键值对存储。您可以使用 Amazon Bedrock 中的元数据筛选条件来筛选结果。有关更多信息，请参阅 [DocumentAttribute](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DocumentAttribute.html)。  | 

# 查询连接到 Amazon Neptune Analytics 分析数据库引擎图表的知识库
<a name="kb-test-neptune"></a>

您可以查询使用 Amazon Neptune Analytics 分析数据库引擎图表的知识库，并且仅返回来自数据来源的相关文本。对于此查询，请使用 [Amazon Bedrock 代理运行时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)发送 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 请求，就像使用标准知识库一样。有关查询知识库、检索数据并生成响应的信息，请参阅：
+  [查询知识库并检索数据](kb-test-retrieve.md) 
+  [根据检索到的数据查询知识库并生成响应](kb-test-retrieve-generate.md) 

连接了 Amazon Neptune Analytics 分析数据库引擎图表的知识库所返回响应的结构与标准 [KnowledgeBaseRetrievalResult](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalResult.html) 相同。但是，响应中还包括来自 Amazon Neptune 的其他几个字段。

下表描述了在返回的响应中，您可能看到的 Neptune Analytics 分析数据库引擎中的字段。Amazon Bedrock 从 Neptune Analytics 分析数据库引擎的响应中获得了这些字段。如果该响应不包含这些字段，Amazon Bedrock 返回的查询结果也不会包含这些字段。


| 字段 | 描述 | 
| --- | --- | 
|  x-amz-bedrock-kb-source-uri  |  所返回文档的 Amazon S3 URL。  | 
|  分数  |  距离度量，用于指示响应与提供的查询的匹配程度，其值越低表示匹配度越高。  | 
|  x-amz-bedrock-kb-data-source-id  |  知识库所用数据来源的 ID。  | 
|  x-amz-bedrock-kb-chunk-id  |  用于为查询检索信息并生成响应的分块的 ID。  | 
|  DocumentAttributes  |  来自 Amazon Kendra 的文档属性或元数据字段。知识库返回的查询结果将它们作为元数据键值对存储。您可以使用 Amazon Bedrock 中的元数据筛选条件来筛选结果。  | 

## 使用元数据和筛选
<a name="kb-test-neptune-metadata"></a>

在查询知识库并生成响应时，您可以筛选元数据，以查找更相关的文档。例如，您可以根据文档的发布日期进行筛选。为此，您可以使用 Amazon Bedrock 控制台或运行时 API [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html)，它们可以指定一些常规筛选条件。

以下是对 Neptune Analytics 分析数据库引擎图表使用 `RetrievalFilter` API 时的一些注意事项。
+ 不支持 `startsWith` 和 `listContains` 筛选条件。
+ 不支持 `stringContains` 筛选条件的列表变体。

下面是一个示例：

```
"vectorSearchConfiguration": {
        "numberOfResults": 5,
        "filter": {
            "orAll": [
                {
                    "andAll": [
                        {
                            "equals": {
                                "key": "genre",
                                "value": "entertainment"
                            }
                        },
                        {
                            "greaterThan": {
                                "key": "year",
                                "value": 2018
                            }
                        }
                    ]
                },
                {
                    "andAll": [                        
                        {
                            "startsWith": {
                                "key": "author",
                                "value": "C"
                            }
                        }
                    ]
                }
            ]
        }
    }
}
```

# 配置和自定义查询与响应生成
<a name="kb-test-config"></a>

您可以配置和自定义检索和响应生成，从而进一步提高响应的相关性。例如，您可以对文档元数据应用筛选器 fields/attributes ，以使用最近更新的文档或修改时间最近的文档。

**注意**  
除**编排和生成**外，以下所有配置仅适用于非结构化数据来源。

要详细了解控制台或 API 中的这些配置，请从以下主题中进行选择。

## 来源分块的数量
<a name="kb-test-config-number"></a>

当您查询知识库时，默认情况下，Amazon Bedrock 会在响应中返回最多五个结果。每个结果都对应一个来源块。

**注意**  
响应中的实际结果数可能小于指定的 `numberOfResults` 值，因为此参数设置了要返回的最大结果数。如果您为分块策略配置了分层分块，`numberOfResults` 参数会映射到知识库将检索的子分块的数量。由于共享同一父块的子块在最终响应中会被父块替换，因此返回的结果数可能少于请求的数量。

要修改返回的最大结果数，请选择与您的首选方法对应的选项卡，然后按照以下步骤操作：

------
#### [ Console ]

按照[查询知识库并检索数据](kb-test-retrieve.md)或[根据检索到的数据查询知识库并生成响应](kb-test-retrieve-generate.md)中的控制台步骤进行操作。在**配置**窗格中，展开**来源分块**部分，然后输入要返回的最大来源分块数。

------
#### [ API ]

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html)发出[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html)或请求时，请添加一个映射到[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html)对象的`retrievalConfiguration`字段。要查看此字段的位置，请参阅 API 参考中的 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 和 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 请求正文。

以下 JSON 对象显示了[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html)对象中设置要返回的最大结果数所需的最小字段：

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

指定要在`numberOfResults`字段中[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html)返回的最大检索结果数（有关可接受值的范围，请参阅中的`numberOfResults`字段）。

------

## 搜索类型
<a name="kb-test-config-search"></a>

搜索类型定义了知识库中的数据来源的查询方式。可能的搜索类型如下：

**注意**  
只有包含可筛选文本字段的 Amazon RDS、Amazon OpenSearch Serverless 和 MongoDB 矢量存储才支持混合搜索。如果您使用其他向量存储，或者您的向量存储不包含可筛选的文本字段，则查询将使用语义搜索。
+ **默认**：Amazon Bedrock 为您决定搜索策略。
+ **混合**：将搜索向量嵌入（语义搜索）与搜索原始文本相结合。
+ **语义**：仅搜索向量嵌入。

要了解如何定义搜索类型，请选择与您的首选方法对应的选项卡，然后按照以下步骤操作：

------
#### [ Console ]

按照[查询知识库并检索数据](kb-test-retrieve.md)或[根据检索到的数据查询知识库并生成响应](kb-test-retrieve-generate.md)中的控制台步骤进行操作。打开**配置**窗格后，展开**搜索类型**部分，打开**覆盖默认搜索**，然后选择一个选项。

------
#### [ API ]

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html)发出[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html)或请求时，请添加一个映射到[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html)对象的`retrievalConfiguration`字段。要查看此字段的位置，请参阅 API 参考中的 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 和 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 请求正文。

以下 JSON 对象显示了该[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html)对象中设置搜索类型配置所需的最少字段：

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

在 `overrideSearchType` 字段中指定搜索类型。您有以下选项：
+ 如果您没有指定值，Amazon Bedrock 会决定哪种搜索策略最适合您的向量存储配置。
+ **混合**：Amazon Bedrock 同时使用向量嵌入和原始文本来查询知识库。
+ **语义**：Amazon Bedrock 使用其向量嵌入来查询知识库。

------

## 流式传输
<a name="kb-test-config-stream"></a>

------
#### [ Console ]

按照 [根据检索到的数据查询知识库并生成响应](kb-test-retrieve-generate.md) 中的控制台步骤进行操作。打开**配置**窗格后，展开**流式传输首选项**部分，然后打开**流式处理响应**。

------
#### [ API ]

要流式处理响应，请使用 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html) API。有关填写字段的更多详细信息，请参阅[根据检索到的数据查询知识库并生成响应](kb-test-retrieve-generate.md)中的 **API** 选项卡。

------

## 手动元数据筛选
<a name="kb-test-config-filters"></a>

您可以对文档应用过滤器 fields/attributes ，以帮助您进一步提高回复的相关性。您的数据源可以包含 attributes/fields 要筛选的文档元数据，也可以指定要在嵌入中包含哪些字段。

例如，“epoch\$1modification\$1time”表示文档自 1970 年 1 月 1 日（UTC）最后一次更新之后经历的秒数。您可以通过将“epoch\$1modification\$1time”设置为*大于*某个数值，筛选出最新的数据。这些最新的文档可用于查询。

要在查询知识库时使用筛选条件，请检查您的知识库是否满足以下要求：
+ 配置数据来源连接器时，大多数连接器都会抓取文档的主元数据字段。如果使用 Amazon S3 存储桶作为数据来源，则针对与其关联的文件或文档，该存储桶必须至少包含一个 `fileName.extension.metadata.json`。有关配置元数据文件的更多信息，请参阅[连接配置](s3-data-source-connector.md#configuration-s3-connector)中的**文档元数据字段**。
+ 如果知识库的向量索引位于 Amazon OpenSearch Serverless 矢量存储中，请检查该`faiss`引擎是否配置了矢量索引。如果向量索引是使用 `nmslib` 引擎配置，则您必须执行以下操作之一：
  + 在控制台中@@ [创建新的知识库](knowledge-base-create.md)，让 Amazon Bedrock 在 Amazon OpenSearch Serverless 中自动为你创建矢量索引。
  + 在向量存储中[创建另一个向量索引](knowledge-base-setup.md)，然后选择 `faiss` 作为**引擎**。然后[创建新的知识库](knowledge-base-create.md)并指定新的向量索引。
+ 如果您的知识库使用 S3 向量存储桶中的向量索引，则无法使用 `startsWith` 和 `stringContains` 筛选条件。
+ 如果您要向 Amazon Aurora 数据库集群中的现有向量索引添加元数据，建议您提供自定义元数据列的字段名称，以便将所有元数据存储在一个列中。在[数据摄取](kb-data-source-sync-ingest.md)期间，此列将用来填入数据来源中的元数据文件包含的所有信息。如果您选择提供该字段，则必须在此列上创建索引。
  + 当您在控制台中[创建新的知识库](knowledge-base-create.md)，并让 Amazon Bedrock 配置您的 Amazon Aurora 数据库时，它将自动创建一个列，并用您的元数据文件中的信息填充该列。
  + 当您选择在向量存储中[创建另一个向量索引](knowledge-base-setup.md)时，必须提供自定义元数据字段名称，以存储元数据文件中的信息。如果未提供此字段名称，则必须为文件中的每个元数据属性创建一个列，并指定数据类型（文本、数字或布尔值）。例如，如果数据来源中存在属性 `genre`，您应添加名为 `genre` 的列，并指定 `text` 作为数据类型。在摄取期间，会在这些单独的列中填入相应的属性值。

*如果您的数据源中有 PDF 文档，并且使用 Amazon OpenSearch Serverless 作为矢量存储：Amazon Bedrock 知识库将生成文档页码并将其存储在 field/attribute 名为 x-amz-bedrock-kb-的元数据中。document-page-number*请注意，如果您为文档选择不分块，则不支持在元数据字段中存储的页码。

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


**筛选运算符**  

| 运算符 | 控制台 | API 筛选条件名称 | 支持的属性数据类型 | 筛选结果 | 
| --- | --- | --- | --- | --- | 
| Equals | = | [equals](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-equals) | 字符串、数字、布尔值 | 属性与您提供的值相匹配 | 
| Not equals | \$1= | [noteQuals](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-notEquals) | 字符串、数字、布尔值 | 属性与您提供的值不匹配 | 
| Greater than | > | [greaterThan](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-greaterThan) | 数字 | 属性大于您提供的值 | 
| Greater than or equals | >= | [greaterThanOr等于](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-greaterThanOrEquals) | 数字 | 属性大于或等于您提供的值 | 
| Less than | < | [lessThan](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-lessThan) | 数字 | 属性小于您提供的值 | 
| Less than or equals | <= | [lessThanOr等于](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-lessThanOrEquals) | 数字 | 属性小于或等于您提供的值 | 
| In | : | [in](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-in) | 字符串列表 | 属性在你提供的列表中（目前亚马逊 OpenSearch 无服务器和 Neptune Analytics GraphRag 矢量存储最受支持） | 
| Not in | \$1: | [notIn](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-notIn) | 字符串列表 | 属性不在你提供的列表中（目前亚马逊 OpenSearch 无服务器和 Neptune Analytics GraphRag 矢量存储最受支持） | 
| String contains | 不可用 | [stringContains](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-stringContains) | 字符串 | 属性必须是字符串。属性名称与密钥相匹配，其值是一个包含您作为子字符串提供的值的字符串，或者一个包含您作为子字符串提供的值的成员列表（目前最支持的是 Amazon OpenSearch Serverless 矢量存储）。 Neptune Analytics GraphRag 矢量存储支持字符串变体，但不支持此过滤器的列表变体）。 | 
| List contains | 不可用 | [listContains](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-listContains) | 字符串 | 属性必须采用字符串列表形式。属性名称与密钥匹配，其值是一个列表，其中包含您作为其成员之一提供的值（目前最支持的是 Amazon OpenSearch Serverless 矢量存储）。 | 

要组合筛选运算符，可以使用以下逻辑运算符：


**逻辑运算符**  

| 运算符 | 控制台 | API 筛选条件字段名称 | 筛选结果 | 
| --- | --- | --- | --- | 
| And | 和 | [andAll](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-andAll) | 结果满足组中的所有筛选表达式 | 
| Or | 或者 | [orAll](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-orAll) | 结果满足组中至少一个筛选表达式 | 

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

------
#### [ Console ]

按照[查询知识库并检索数据](kb-test-retrieve.md)或[根据检索到的数据查询知识库并生成响应](kb-test-retrieve-generate.md)中的控制台步骤进行操作。当你打开**配置**窗格时，你会看到**筛选条件**部分。以下过程介绍了不同的应用场景：
+ 要添加筛选条件，请在框中输入元数据属性、筛选运算符和值来创建筛选表达式。用空格分隔表达式的每个部分。按 **Enter** 来添加筛选条件。

  有关可接受的筛选运算符的列表，请参阅上面的**筛选运算符**表。在元数据属性后面添加空格时，您也可以看到筛选运算符列表。
**注意**  
您必须用引号将字符串括起来。

  例如，您可以通过添加以下筛选条件从来源文档中筛选出包含值为 `"entertainment"` 的 `genre` 元数据属性的结果：**genre = "entertainment"**。  
![\[添加一个筛选条件。\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/kb/filter-one.png)
+ 要添加其他筛选条件，请在框中输入另一个筛选表达式，然后按 **Enter**。您最多可以在组中添加 5 个筛选条件。  
![\[添加其他筛选条件。\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/kb/filter-more.png)
+ 默认情况下，查询将返回满足您提供的所有筛选表达式的结果。要返回至少满足其中一个筛选表达式的结果，请在任意两个筛选操作之间选择**和**下拉菜单，然后选择**或**。  
![\[更改筛选条件之间的逻辑操作。\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/kb/filter-logical.png)
+ 要组合不同的逻辑运算符，请选择 **\$1 添加组**以添加筛选条件组。在新组中输入筛选表达式。您可以添加最多 5 个组。  
![\[添加筛选条件组以组合不同的逻辑运算符。\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/kb/filter-group.png)
+ 要更改所有筛选组之间使用的逻辑运算符，请在任意两个筛选条件组之间选择 **AND** 下拉菜单，然后选择 **OR**。  
![\[更改筛选条件组之间的逻辑操作。\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/kb/filter-group-logical.png)
+ 要编辑筛选条件，请将其选中，修改筛选操作，然后选择**应用**。  
![\[编辑筛选条件。\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/kb/filter-edit.png)
+ 要移除筛选条件组，请选择相应组旁边的垃圾桶图标 (![\[Trapezoid-shaped diagram showing data flow from source to destination through AWS Transfer Family.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/trash.png))。要移除筛选条件，请选择相应筛选条件旁边的删除图标 (![\[Close or cancel icon represented by an "X" symbol.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/close.png))。  
![\[删除筛选条件或筛选条件组。\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/kb/filter-delete.png)

下图显示了一个筛选条件配置示例，除了类型为 **"cooking"** 或 **"sports"** 且作者名字以 **"C"** 开头的文档外，该配置还返回了所有 **2018** 之后编写的类型为 **"entertainment"** 的文档。

![\[示例筛选条件配置。\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/kb/filter-example.png)


------
#### [ API ]

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html)发出[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html)或请求时，请添加一个映射到[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html)对象的`retrievalConfiguration`字段。要查看此字段的位置，请参阅 API 参考中的 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 和 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 请求正文。

以下 JSON 对象显示了[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html)对象中为不同用例设置过滤器所需的最少字段：

1. 使用一个筛选运算符（请参阅上面的**筛选运算符**表）。

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

1. 使用逻辑运算符（请参阅上面的**逻辑运算符**表）最多可组合 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", ...]
                   },
                   ...
               ]
           }
       }
   }
   ```

1. 使用逻辑运算符将最多 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", ...]
                   }
               ]
           }
       }
   }
   ```

1. 将最多 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 | 数字 | 属性大于您提供的值 | 
| greaterThanOrEquals | 数字 | 属性大于或等于您提供的值 | 
| lessThan | 数字 | 属性小于您提供的值  | 
| lessThanOrEquals | 数字 | 属性小于或等于您提供的值 | 
| in | 字符串列表 | 属性在您提供的列表中 | 
| notIn | 字符串列表 | 属性不在您提供的列表中 | 
| startsWith | 字符串 | 属性以您提供的字符串开头（仅支持 Amazon OpenSearch Serverless 矢量存储） | 

要组合筛选条件类型，您可以使用以下逻辑运算符之一：


****  

| 字段 | 映射到 | 筛选结果 | 
| --- | --- | --- | 
| andAll | 最多 5 种筛选条件类型的列表 | 结果满足组中的所有筛选表达式 | 
| orAll | 最多 5 种筛选条件类型的列表 | 结果满足组中至少一个筛选表达式 | 

有关示例，请参阅[发送查询并包含筛选条件（检索）](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html#API_agent-runtime_Retrieve_Example_2)和[发送查询并包含筛选条件（RetrieveAndGenerate）](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html#API_agent-runtime_RetrieveAndGenerate_Example_2)。

------

## 隐式元数据筛选
<a name="kb-test-config-implicit"></a>

Amazon Bedrock 知识库根据用户查询和元数据架构生成并应用检索筛选器。

**注意**  
该功能目前仅适用于 Anthropic Claude 3.5 Sonnet。

`implicitFilterConfiguration` 在 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 请求正文的 `vectorSearchConfiguration` 中指定。包括以下字段：
+ `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"
    }
]
```

## 护栏
<a name="kb-test-config-guardrails"></a>

您可以基于自己的应用场景和负责任的人工智能政策为知识库实施防护机制。您可以创建针对不同应用场景量身定制的多个防护机制，并跨多个请求和响应条件应用它们，从而在整个知识库中提供一致的用户体验并标准化安全控制。您可以将拒绝的主题配置为禁止不受欢迎的主题，将内容筛选条件配置为屏蔽模型输入和响应中的有害内容。有关更多信息，请参阅[使用 Amazon Bedrock 护栏检测和筛选掉有害内容](guardrails.md)。

**注意**  
Claude 3 Sonnet 和 Haiku 目前不支持针对知识库应用具有上下文基础的防护机制。

有关提示工程的一般性准则，请参阅[提示工程概念](prompt-engineering-guidelines.md)。

选择与您的首选方法对应的选项卡，然后按照以下步骤操作：

------
#### [ Console ]

按照[查询知识库并检索数据](kb-test-retrieve.md)或[根据检索到的数据查询知识库并生成响应](kb-test-retrieve-generate.md)中的控制台步骤进行操作。在测试窗口中，打开**生成响应**。然后，在**配置**窗格中，展开**防护机制**部分。

1. 在**防护机制**部分，选择防护机制的**名称**和**版本**。如果您想查看所选防护机制和版本的详细信息，请选择**查看**。

   或者，您可以通过选择**防护机制**链接来创建一个新的机制。

1. 编辑完成后，选择**保存更改**。要退出而不保存更改，请选择**放弃更改**。

------
#### [ API ]

在提出 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 请求时，请在 `generationConfiguration` 中添加 `guardrailConfiguration` 字段，以将防护机制用于该请求。要查看此字段的位置，请参阅 API 参考中的 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 请求正文。

以下 JSON 对象显示了在中设置所需的最少字段`guardrailConfiguration`：[GenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerationConfiguration.html)

```
"generationConfiguration": {
    "guardrailConfiguration": {
        "guardrailId": "string",
        "guardrailVersion": "string"
    }
}
```

指定所选防护机制的 `guardrailVersion` 和 `guardrailId`。

------

## 重排
<a name="kb-test-config-rerank"></a>

您可以使用重排器模型对知识库查询的结果进行重排。按照[查询知识库并检索数据](kb-test-retrieve.md)或[根据检索到的数据查询知识库并生成响应](kb-test-retrieve-generate.md)中的控制台步骤进行操作。打开**配置**窗格后，展开**重排**部分。选择重排模型，必要时更新权限，并修改任何其他选项。完成重排后，输入提示，然后选择**运行**以测试结果。

## 查询分解
<a name="kb-test-query-modifications"></a>

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

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

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

1. *法国在 2022 年 FIFA 世界杯决赛中打进了多少球？*

------
#### [ Console ]

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

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

1. 启用查询分解。

------
#### [ 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
           }
         },
...}
}
```

------

## 推理参数
<a name="kb-test-model-params"></a>

在基于信息检索生成响应时，您可以使用[推理参数](inference-parameters.md)来更好地控制模型在推理期间的行为并影响模型的输出。

要了解如何修改推理参数，请选择与您的首选方法对应的选项卡，然后按照以下步骤操作：

------
#### [ Console ]

**要在查询知识库时修改推理参数**，请按照[查询知识库并检索数据](kb-test-retrieve.md)或[根据检索到的数据查询知识库并生成响应](kb-test-retrieve-generate.md)中的控制台步骤操作。在打开**配置**窗格时，您会看到**推理参数**部分。根据需要修改参数。

**要在与您的文档交互时修改推理参数**，请按照 [无需配置知识库即可使用您的文档聊天](knowledge-base-chatdoc.md) 中的步骤操作。在**配置**窗格中，展开**推理参数**部分，并根据需要修改参数。

------
#### [ API ]

您在调用 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API 时提供模型参数。您可以通过在 `inferenceConfig` 字段中或 `knowledgeBaseConfiguration` 中（如果您查询知识库）或 `externalSourcesConfiguration` 中（如果您[与文档交互](knowledge-base-chatdoc.md)）提供推理参数来自定义模型。

`inferenceConfig` 字段中有一个包含以下参数的 `textInferenceConfig` 字段，您可以执行以下操作：
+ temperature
+ topP
+ maxTokenCount
+ stopSequences

您可以通过在 `externalSourcesConfiguration` 和 `knowledgeBaseConfiguration` 的`inferenceConfig` 字段中使用以下参数来自定义模型：
+ temperature
+ topP
+ maxTokenCount
+ stopSequences

有关每个参数的功能的详细说明，请参阅 [利用推理参数影响响应生成](inference-parameters.md)。

此外，您可以通过 `additionalModelRequestFields` 映射提供 `textInferenceConfig` 不支持的自定义参数。您可以使用此参数提供特定模型所特有的参数，有关唯一参数的信息，请参阅 [基础模型的推理请求参数和响应字段](model-parameters.md)。

如果 `textInferenceConfig` 中省略了参数，则将使用默认值。`textInferneceConfig` 中未识别的所有参数都将被忽略，而 `AdditionalModelRequestFields` 中未识别的所有参数都将导致异常。

如果 `additionalModelRequestFields` 和 `TextInferenceConfig` 中有相同的参数，则会引发验证异常。

**在中使用模型参数 RetrieveAndGenerate**

 以下是 `RetrieveAndGenerate` 请求正文中 `generationConfiguration` 下的 `inferenceConfig` 和 `additionalModelRequestFields` 结构示例：

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

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

------

## 知识库提示模板：编排和生成
<a name="kb-test-config-prompt-template"></a>

当您查询知识库并请求生成响应时，Amazon Bedrock 使用将指令和上下文与用户查询相结合的提示模板，来构造发送到模型以生成响应的生成提示。您还可以自定义编排提示（用于将用户的提示转换为搜索查询）。您可以使用以下工具设计提示模板：
+ **提示占位符**：Amazon Bedrock 知识库中的预定义变量，这些变量在知识库查询期间在运行时动态填充。在系统提示中，您将看到这些占位符两边都有 `$` 符号。以下列表介绍了可以使用的占位符：
**注意**  
`$output_format_instructions$` 占位符是在响应中显示引文的必填字段。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/kb-test-config.html)
+ **XML 标签**：Anthropic 模型支持使用 XML 标签来构造和描述您的提示。请使用描述性标签名称以获得最佳结果。例如，在默认的系统提示中，您将看到用于描述先前询问过的相关数据库的 `<database>` 标签）。有关更多信息，请参阅[《Anthropic 用户指南》](https://docs.anthropic.com/en/docs/welcome)中的[使用 XML 标签](https://docs.anthropic.com/claude/docs/use-xml-tags)。

有关提示工程的一般性准则，请参阅[提示工程概念](prompt-engineering-guidelines.md)。

选择与您的首选方法对应的选项卡，然后按照以下步骤操作：

------
#### [ Console ]

按照[查询知识库并检索数据](kb-test-retrieve.md)或[根据检索到的数据查询知识库并生成响应](kb-test-retrieve-generate.md)中的控制台步骤进行操作。在测试窗口中，打开**生成响应**。然后，在**配置**窗格中，展开**知识库提示模板**部分。

1. 选择**编辑**。

1. 根据需要，在文本编辑器中编辑系统提示，包括提示占位符和 XML 标签。要恢复到默认提示模板，请选择**重置为默认值**。

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

------
#### [ API ]

当您提出[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html)请求时，请添加一个映射到[GenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerationConfiguration.html)对象的`generationConfiguration`字段。要查看此字段的位置，请参阅 API 参考中的 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 请求正文。

以下 JSON 对象显示了[GenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerationConfiguration.html)对象中设置要返回的最大检索结果数所需的最小字段：

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

在 `textPromptTemplate` 字段中输入您的自定义提示模板，根据需要添加提示占位符和 XML 标签。有关系统提示符中允许的最大字符数，请参阅中的`textPromptTemplate`字段[GenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerationConfiguration.html)。

------

# 使用知识库为推理模型配置响应生成
<a name="kb-test-configure-reasoning"></a>

某些基础模型能够执行模型推理，因而可以执行较大型的复杂任务，并将其分解为较小型、较简单的步骤。此过程通常被称为思维链（CoT）推理，可以让模型有机会在做出反应之前进行思考，从而提高模型的准确性。模型推理对于多步分析、数学问题和复杂推理任务等任务最为有用。有关更多信息，请参阅[使用模型推理增强模型响应](inference-reasoning.md)。

**注意**  
本页介绍如何使用专门针对 Amazon Bedrock 知识库的推理配置。有关使用 `InvokeModel` API 为直接模型调用配置推理的信息，请参阅[使用模型推理增强模型响应](inference-reasoning.md)。

启用模型推理后，它可以提高准确性并获得更好的引文结果，但可能导致延迟增加。以下是您在将推理模型用于 Amazon Bedrock 知识库以查询数据来源和生成响应时的一些注意事项。

**Topics**
+ [推理模型](#kb-test-reasoning-models)
+ [对 Claude 3.7 Sonnet 使用模型推理](#kb-test-reasoning-using)
+ [一般注意事项](#kb-test-reasoning-general-considerations)
+ [检索和生成 API 的注意事项](#kb-test-reasoning-api-considerations)

## 推理模型
<a name="kb-test-reasoning-models"></a>

模型推理适用于以下模型。


| 基础模型 | 模型 ID | 词元数量 | 推理配置 | 
| --- | --- | --- | --- | 
| Anthropic Claude Opus 4 | anthropic.claude-opus-4-20250514-v1:0 | 此模型将有 32768 个词元，包括输出词元和推理词元。 | 可使用可配置的词元预算，为此模型启用或禁用推理。默认情况下，禁用推理。 | 
| Anthropic Claude Sonnet 4 | anthropic.claude-sonnet-4-20250514-v1:0 | 此模型将有 65536 个词元，包括输出词元和推理词元。 | 可使用可配置的词元预算，为此模型启用或禁用推理。默认情况下，禁用推理。 | 
| Anthropic Claude 3.7 Sonnet | anthropic.claude-3-7-sonnet-20250219-v1:0 | 此模型将有 65536 个词元，包括输出词元和推理词元。 | 可使用可配置的词元预算，为此模型启用或禁用推理。默认情况下，禁用推理。 | 
| DeepSeek DeepSeek-R1 | deepseek.r1-v1:0 | 此模型将有 8192 个词元，包括输出词元和推理词元。无法配置思考词元的数量，并且输出词元的最大数量不得超过 8192。 | 此模型始终启用推理。此模型不支持开启和关闭推理功能的切换。 | 

## 对 Claude 3.7 Sonnet 使用模型推理
<a name="kb-test-reasoning-using"></a>

**注意**  
DeepSeek-R1 模型始终启用模型推理。此模型不支持开启和关闭推理功能的切换。

使用 Claude 3.7 Sonnet 模型时，可以使用 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API 的 `additionalModelRequestFields` 参数启用或禁用模型推理。此参数接受任何键值对。例如，您可以添加 `reasoningConfig` 字段，并使用 `type` 键来启用或禁用推理，如下所示。

```
{
   "input": { 
      "text": "string",
      "retrieveAndGenerateConfiguration": { 
      "knowledgeBaseConfiguration": { 
         "generationConfiguration": { 
            "additionalModelRequestFields": {
                "reasoningConfig" : {
                    "type": "enabled",
                    "budget_tokens": INT_VAL, #required when enabled
                }
            }
         },
         "knowledgeBaseId": "string",
      },
      "type": "string"
   },
   "sessionId": "string"
}
```

## 一般注意事项
<a name="kb-test-reasoning-general-considerations"></a>

以下是将推理模型用于知识库的一些一般注意事项。
+ 推理模型最多有五分钟的时间来响应查询。如果模型响应查询的时间超过五分钟，则会导致超时。
+ 为了避免超过超时时间（五分钟），请仅在配置查询和响应生成时，在生成步骤中启用模型推理。编排步骤不能包含模型推理。
+ 推理模型最多可以使用 8192 个词元来响应查询，其中包括输出和思考词元。在任何请求中，如果输出词元的最大数量超过此限制，都将导致错误。

## 检索和生成 API 的注意事项
<a name="kb-test-reasoning-api-considerations"></a>

以下是将 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API 用于推理模型时的一些注意事项。
+ 默认情况下，当包括 Claude 3.7 Sonnet 在内的所有模型都禁用推理时，temperature 将设置为 0。启用推理后，必须将 temperature 设置为 1。

  ```
  "inferenceConfig": {
      "textInferenceConfig": {
          "maxTokens": 8192,
          "temperature": 1
      }
  }
  ```
+ 为 Claude 3.7 Sonnet 模型启用推理功能时，必须禁用参数 Top P。Top P 是一个附加的模型请求字段，用于确定生成期间可供选择的可能词元的百分位数。默认情况下，其他 Anthropic Claude 模型的 Top P 值为 1。对于 Claude 3.7 Sonnet 模型，默认情况下将禁用此值。
+ 使用模型推理时，可能会导致延迟增加。在使用此 API 操作和 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html) API 操作时，您可能会注意到接收来自 API 的响应有延迟。