

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

# 根据检索到的数据查询知识库并生成响应
<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. （可选）选择配置图标（![](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/configurations.png)）以打开**配置**。有关配置的信息，请参阅[配置和自定义查询与响应生成](kb-test-config.md)。

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

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

1. 要查看有关返回的分块的详细信息，请选择**显示来源详细信息**。
   + 要查看您为查询设置的配置，请展开**查询配置**。
   + 要查看有关来源分块的详细信息，请选择其旁边的向右箭头 (![](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/caret-right-filled.png)) 将其展开。您可以查看以下信息：
     + 来自来源分块的原始文本。要复制此文本，请选择复制图标 (![](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/copy.png))。如果您使用 Amazon S3 存储数据，请选择外部链接图标（![](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)中的**元数据和筛选**部分。

**聊天选项**
+ 要使用不同的模型进行响应生成，请选择**更改模型**。如果更改模型，聊天窗口中的文本将被完全清除。
+ 通过清除**生成响应**直接切换到检索来源分块。如果更改设置，聊天窗口中的文本将被完全清除。
+ 要清除聊天窗口，请选择扫帚图标（![](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/broom.png)）。
+ 要复制聊天窗口中的所有输出，请选择复制图标（![](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,{{${base64-encoded string}}}。 | 

响应还返回一个 `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) 中为 $search\_results$ 占位符填写的内容）。
使用采用更小分块的分块策略重新创建数据来源（这会缩短 [知识库提示模板：编排和生成](kb-test-config.md#kb-test-config-prompt-template) 中为 $search\_results$ 占位符填写的内容）。
缩短提示模板。
缩短用户查询（这会缩短 [知识库提示模板：编排和生成](kb-test-config.md#kb-test-config-prompt-template) 中为 $query$ 占位符填写的内容）。