

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

# 利用 Amazon Bedrock 知识库检索数据并生成人工智能响应
<a name="knowledge-base"></a>

在基础模型具备通识的情况下，您可以使用检索增强生成（RAG）进一步改善其响应。RAG 是一种技术，使用来自数据来源的信息来提高所生成响应的相关性和准确性。利用 Amazon Bedrock 知识库，您可以将专有信息集成到生成式人工智能应用程序中。进行查询时，知识库会搜索您的数据，查找相关信息来回答查询。然后，检索到的信息可用于改进生成的响应。您可以使用 Amazon Bedrock 知识库的功能，构建自己的基于 RAG 的应用程序。

借助 Amazon Bedrock 知识库，您可以：
+ 通过返回来自数据来源的相关信息，来回答用户查询。
+ 使用从数据来源检索到的信息，帮助为用户查询生成准确且相关的响应。
+ 通过将返回的相关信息馈送到提示中，来增强您自己的提示。
+ 在生成的响应中加入引文，使得原始数据来源可以被引用并检查准确性。
+ 包括具有大量视觉资源的文档，可以从中提取和检索图像用来响应查询。如果您根据检索到的数据生成响应，则模型可以根据这些图像提供更多见解。
+ 使用图像作为查询进行搜索以查找视觉上相似的内容，或者使用多模态嵌入模型在查询中组合文本和图像以获得更精确的结果。
+ 将自然语言转换为针对结构化数据库定制的查询（例如 SQL 查询）。这些查询用于从结构化数据存储中检索数据。
+ 更新您的数据来源并将更改直接摄取到知识库中，以便立即访问。
+ 使用重排模型来影响从您的数据来源中检索到的结果。
+ 将知识库包含在 [Amazon Bedrock 代理](agents.md)工作流中。

要设置知识库，您必须完成以下常规步骤：

1. （可选）如果您将知识库连接到非结构化数据来源，请设置自己的[受支持向量存储](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-setup.html)，以便为数据的向量嵌入表示编制索引。如果您计划使用 Amazon Bedrock 控制台为您创建亚马逊 OpenSearch 无服务器矢量存储，则可以跳过此步骤。

1. 将您的知识库连接到非结构化或结构化数据来源。

1. 将您的数据来源与知识库同步。

1. 设置您的应用程序或代理执行以下操作：
   + 查询知识库并返回相关来源。
   + 查询知识库，根据检索到的结果生成自然语言响应。
   + （如果您查询连接到结构化数据存储的知识库）将查询转换为特定于结构化数据语言的查询（例如 SQL 查询）。

**Topics**
+ [知识库的运作方式](kb-how-it-works.md)
+ [支持的模型和区域](knowledge-base-supported.md)
+ [无需进行任何设置即可使用您的文档聊天](knowledge-base-chatdoc.md)
+ [设置创建和管理知识库所需的权限](knowledge-base-prereq-permissions-general.md)
+ [通过连接到数据来源来构建知识库](knowledge-base-build.md)
+ [为多模式内容建立知识库](kb-multimodal.md)
+ [通过连接到结构化数据存储来构建知识库](knowledge-base-build-structured.md)
+ [使用 Amazon Kendra GenAI 索引构建知识库](knowledge-base-build-kendra-genai-index.md)
+ [使用 Amazon Neptune Analytics 分析数据库引擎图表构建知识库](knowledge-base-build-graphs.md)
+ [利用查询和响应测试知识库](knowledge-base-test.md)
+ [为应用程序部署知识库](knowledge-base-deploy.md)
+ [查看知识库的相关信息](kb-info.md)
+ [修改知识库](kb-update.md)
+ [删除知识库](kb-delete.md)

# Amazon Bedrock 知识库的运作方式
<a name="kb-how-it-works"></a>

Amazon Bedrock 知识库可以帮助您利用检索增强生成（RAG），后者是一种常用技术，可从数据存储中提取信息来增强大型语言模型（LLM）生成的响应。如果使用数据来源建立知识库，应用程序就可以查询该知识库以返回信息，通过直接引用数据来源或使用根据查询结果生成的自然响应来回答查询。

借助 Amazon Bedrock 知识库，您可以使用在查询知识库时接收到的上下文来丰富自己构建的应用程序。通过摆脱繁重的管道构建工作并为您提供开箱即用的 RAG 解决方案来缩短应用程序的构建时间，从而加快上市速度。添加知识库还可以提高成本效益，因为无需持续训练模型即可利用您的私有数据。

下面的示意图说明了 RAG 的执行方法。知识库可以通过自动执行 RAG 的设置和实施中的几个步骤来简化这个过程。

**预处理非结构化数据**

为了能够有效检索非结构化私有数据（即结构化数据存储中不存在的数据），通常的做法是先将数据转换为文本并将其拆分为可管理的部分。然后将这些部分或分块转换为嵌入内容并写入向量索引，同时保持与原文档的映射。这些嵌入内容用于确定查询和数据来源文本之间的语义相似性。下图说明了如何预处理向量数据库的数据。

![\[预处理数据以实现检索增强生成\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/kb/rag-preprocess.png)


向量嵌入是一系列数字，用于代表每个文本块。模型将每个文本块转换为一系列数字（称为向量），以便能够以数学方式对文本进行比较。这些向量可以是浮点数（float32），也可以是二进制数。默认情况下，Amazon Bedrock 支持的大多数嵌入模型都使用浮点向量。但是，有些模型支持二进制向量。如果选择二进制嵌入模型，还必须选择支持二进制向量的模型和向量存储。

每个维度仅使用 1 位的二进制向量没有浮点（float32）向量那么昂贵的存储成本，后者每个维度使用 32 位。但是，二进制向量在表示文本时的精度不如浮点向量。

以下示例用三种表示形式显示了一段文本：


****  

| 表示 | 值 | 
| --- | --- | 
| 文本 | “Amazon Bedrock 采用来自领先的 AI 公司和 Amazon 的高性能基础模型。” | 
| 浮点向量 | [0.041..., 0.056..., -0.018..., -0.012..., -0.020..., ...] | 
| 二进制向量 | [1,1,0,0,0, ...] | 

**运行时执行**

在运行时，使用嵌入模型将用户的查询转换为向量。然后，通过将文档向量与用户查询向量进行比较来查询向量索引，查找与用户查询在语义上相似的数据块。最后，使用从向量索引中检索到的数据块中的附加上下文来增强用户提示。接下来，将提示和附加上下文一起发送给模型，以便为用户生成响应。下图说明了 RAG 如何在运行时运行以增强对用户查询的响应。

![\[运行时检索增强生成\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/kb/rag-runtime.png)


要详细了解如何将数据转换为知识库、如何在设置知识库后查询知识库，以及在摄取期间可以应用于数据来源的自定义设置，请参阅以下主题：

**Topics**
+ [将数据转换为知识库](kb-how-data.md)
+ [使用 Amazon Bedrock 知识库从数据来源检索信息](kb-how-retrieval.md)
+ [自定义知识库](kb-how-customization.md)

# 将数据转换为知识库
<a name="kb-how-data"></a>

要创建知识库，请连接到您希望知识库能够访问的受支持数据来源。知识库将能够响应用户查询或者根据检索到的数据生成响应。

 Amazon Bedrock 知识库支持各种文档，包括文本、图像，或包含表格、图表、示意图和其他图像的多模态文档。*多模态*数据是指文本和视觉数据的组合。包含非结构化数据的文件类型的示例包括文本、markdown、HTML 和。 PDFs

以下各部分介绍了 Amazon Bedrock 知识库支持的数据类型以及您可以针对每种数据将知识库与之关联的服务：

## 非结构化数据
<a name="kb-how-unstructured"></a>

非结构化数据是指未强制进入预定义结构的数据。Amazon Bedrock 知识库支持连接到以下服务，以将非结构化数据添加到知识库中：
+ Amazon S3
+ Confluence（预览版）
+ Microsoft SharePoint（预览版）
+ Salesforce（预览版）
+ Web Crawler（预览版）
+ 自定义数据来源（支持将数据直接摄取到知识库中，无需同步）

数据来源包含文档的原始形式。为了优化查询流程，知识库会将原始数据转换为*向量嵌入*（数据的数字表示形式），以量化与同样转换为向量嵌入的查询的相似性。Amazon Bedrock 知识库在转换数据来源的过程中会使用以下资源：
+ 嵌入模型 – 用于将数据转换为向量嵌入的基础模型。对于同时包含文本和图像的多模态数据，您可以使用多模嵌入模型，例如 Amazon Titan 多模态嵌入 G1 或 Cohere Embed v3。
+ 向量存储 – 用于存储数据的向量表示形式的服务。支持以下向量存储：
  + Amazon OpenSearch 无服务器
  + Amazon Neptune
  + Amazon Aurora（RDS）
  + Pinecone
  + Redis Enterprise Cloud
  + MongoDB Atlas

将数据转换为向量嵌入的过程称为*摄取*。将数据转化为知识库的摄取过程包括以下步骤：

**摄取**

1. 数据由您选择的解析器进行解析。有关解析的更多信息，请参阅[数据来源的解析选项](kb-advanced-parsing.md)。

1. 数据来源中的每个文档都被分成*分块*，这些细分数据可以由词元数量和其他参数定义。有关分块的更多信息，请参阅[知识库的内容分块是如何运作的](kb-chunking.md)。

1. 选择的嵌入模型会将数据转换为向量嵌入。对于多模态内容，图像作为视觉向量嵌入，而文本则作为文本矢量嵌入，从而允许在两种模式下进行搜索。

1. 向量嵌入将写入所选向量存储中的向量索引。

摄取过程完成后，即可查询您的知识库。有关如何从知识库中查询和检索信息的信息，请参阅[使用 Amazon Bedrock 知识库从数据来源检索信息](kb-how-retrieval.md)。

如果您对数据来源进行更改，则必须同步更改，才能将添加、修改和删除内容摄取到知识库。某些数据来源支持将文件直接摄取到知识库中或从中删除，因此无需将数据来源的修改和摄取看作单独的步骤，也无需始终执行完全同步。要了解如何将文档直接摄取到知识库以及支持知识库的数据来源，请参阅[将更改直接摄取到知识库中](kb-direct-ingestion.md)。

Amazon Bedrock 知识库提供了可用于自定义数据摄取方式的多种选项。有关自定义此过程的更多信息，请参阅[自定义知识库](kb-how-customization.md)。

## 结构化数据
<a name="kb-how-structured"></a>

结构化数据是指格式由其所在的数据存储预定义的表格数据。Amazon Bedrock 知识库通过 Amazon Redshift 查询引擎连接到支持的结构化数据存储。Amazon Bedrock 知识库提供了一种完全托管的机制，这种机制可以分析查询模式、查询历史记录和架构元数据，从而将自然语言查询转换为 SQL 查询。然后，使用这些转换后的查询从支持的数据来源中检索相关信息。

Amazon Bedrock 知识库支持连接到以下服务，以将结构化数据存储添加到知识库中：
+ Amazon Redshift
+ AWS Glue Data Catalog(AWS Lake Formation)

如果将知识库连接到结构化数据存储，则无需将数据转换为向量嵌入。相反，Amazon Bedrock 知识库可以直接查询结构化数据存储。在查询期间，Amazon Bedrock 知识库可以将用户查询转换为 SQL 查询，以检索与用户查询相关的数据并生成更准确的响应。您还可以在不检索数据的情况下生成 SQL 查询，并在其他工作流程中使用这些查询。

例如，数据库存储库包含下表，其中包含有关客户及其购买金额的信息：


****  

| 客户 ID | 2020 年购买的金额 | 2021 年购买的金额 | 2022 年购买的金额 | 截至目前的总购买金额 | 
| --- | --- | --- | --- | --- | 
| 1 | 200 | 300 | 500 | 1000 | 
| 2 | 150 | 100 | 120 | 370 | 
| 3 | 300 | 300 | 300 | 900 | 
| 4 | 720 | 180 | 100 | 900 | 
| 5 | 500 | 400 | 100 | 1000 | 
| 6 | 900 | 800 | 1000 | 2700 | 
| 7 | 470 | 420 | 400 | 1290 | 
| 8 | 250 | 280 | 250 | 780 | 
| 9 | 620 | 830 | 740 | 2190 | 
| 10 | 300 | 200 | 300 | 800 | 

如果用户查询显示“为我提供前五名消费客户的摘要”，知识库可以执行以下操作：
+ 将查询转换为 SQL 查询。
+ 返回包含以下内容的表中的摘录：
  + 相关表列“客户 ID”和“截至目前的总购买金额”
  + 包含消费最高的 10 位客户的总购买金额的表行
+ 生成响应，说明哪些客户是消费排名前五的客户，以及他们的购买量。

知识库可以为其生成表格摘录的其他查询示例包括：
+ “2020 年按消费金额排名前五的客户”
+ “2020 年按购买金额排名最高的客户”
+ “2020-2022 年按购买金额排名前五的客户”
+ “2020-2022 年消费最高的前五位客户”
+ “总购买金额低于 10 美元的客户”
+ “消费最低的前五位客户”

查询越具体或越详细，知识库就越能缩小要返回的确切信息范围。例如，不要查询“2020 年按消费金额排名前 10 的客户”，而是提供更具体的查询“查找 2020 年截至目前总购买金额最高的 10 位客户”。具体查询指的是客户支出数据库表中的列名“截至目前的总购买金额”，还表示数据应按“最高”排序。

# 使用 Amazon Bedrock 知识库从数据来源检索信息
<a name="kb-how-retrieval"></a>

设置完知识库后，您可以设置应用程序以查询其中的数据来源。要查询知识库，您可以采用以下 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) – 将 `Retrieve` 与 Amazon Bedrock 中的 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) 操作相结合，从您的数据中检索与查询最相关的源分块，并生成自然语言响应。包括对数据中特定源分块的引用。如果数据来源包含视觉元素，模型在生成文本响应时会利用这些图像的见解，并为图像提供来源归因。
+ [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html) – 将自然语言用户查询转换为适合结构化数据存储格式的查询。

`RetrieveAndGenerate` 操作是一个组合操作，它主要使用 `GenerateQuery`（如果您的知识库已连接到结构化数据存储）、`Retrieve` 和 `InvokeModel` 执行整个 RAG 流程。由于 Amazon Bedrock 知识库还为您提供访问 `Retrieve` 操作的权限，因此您可以灵活地将 RAG 中的步骤分开，并根据您的特定使用案例对其进行自定义。

使用 `Retrieve` 或 `RetrieveAndGenerate` 重排查询期间检索到的文档的相关性时，也可以使用[重排模型](rerank.md)。

要了解如何在查询知识库时使用这些 API 操作，请参阅[利用查询和响应测试知识库](knowledge-base-test.md)。

# 自定义知识库
<a name="kb-how-customization"></a>

Amazon Bedrock 知识库提供了用于自定义如何将数据来源处理到知识库中的选项，使您可以灵活地处理数据的存储、解析以及返回给最终用户的方式。选择以下主题之一，可详细了解在设置知识库时可以考虑的自定义选项：

**Topics**
+ [知识库的内容分块是如何运作的](kb-chunking.md)
+ [数据来源的解析选项](kb-advanced-parsing.md)
+ [使用自定义转换 Lambda 函数定义数据的摄取方式](kb-custom-transformation.md)
+ [在数据来源中包含元数据以改进知识库查询](kb-metadata.md)

# 知识库的内容分块是如何运作的
<a name="kb-chunking"></a>

在摄取数据时，Amazon Bedrock 首先将您的文档或内容拆分为可管理的分块，以实现高效的数据检索。然后将这些分块转换为嵌入内容并写入向量索引（数据的向量表示），同时保持与原文档的映射。向量嵌入支持对文本进行定量比较。

**Topics**
+ [标准分块](#kb-standard-chunking)
+ [分层分块](#kb-hiearchical-chunking)
+ [语义分块](#kb-semantic-chunking)
+ [多模态内容分块](#kb-multimodal-chunking)

## 标准分块
<a name="kb-standard-chunking"></a>

Amazon Bedrock 支持以下分块的标准方法：

**注意**  
文本分块策略仅适用于文本文档。对于多模态内容（音频、视频、图像），分块发生在嵌入模型级别，而不是通过这些基于文本的策略。
+ 固定大小分块：您可以通过指定每个分块的词元数量和重叠百分比来配置所需的分块大小，从而灵活地满足您的特定要求。您可以设置分块中词元数量不得超过的最大值以及连续分块之间的重叠百分比。
**注意**  
对于已解析的内容（例如使用高级解析器或从 HTML 转换的内容），Amazon Bedrock 知识库可能会对内容进行分块以优化以获得最佳结果。分块器尊重逻辑文档边界（例如页面或部分），并且不会跨越这些边界合并内容，即使增加最大令牌大小会允许更大的块。
+ 默认分块：将内容拆分为包含大约 300 个词元的文本块。分块过程遵循句子边界，确保在每个分块中保留完整的句子。

您还可以选择不为文档分块。每个文档都被视为为单个文本块。在选择不分块作为分块方法/策略之前，您需要先预处理文档，将它拆分为单独的文件。如果您为文档选择不分块，则无法在引文中查看页码，也无法按 *x-amz-bedrock-kb-document-page-number* 元数据字段/属性进行筛选。

## 分层分块
<a name="kb-hiearchical-chunking"></a>

分层分块涉及将信息整理成子块和父块的嵌套结构。创建数据来源时，您可以定义父块大小、子块大小以及每个分块之间重叠的词元数量。在检索过程中，系统最初会检索子块，但会用更广泛的父块替换它们，以便为模型提供更全面的上下文。

小文本嵌入更精确，但检索的目的是获得全面的上下文。分层分块系统通过适时将检索到的子块替换为父块来平衡这些需求。

**注意**  
由于在检索过程中子块会被父块替换，因此返回的结果数可能少于请求的数量。
使用 S3 矢量存储桶作为矢量存储时，不建议使用分层分块。使用大量令牌进行分块（总共超过 8000 个令牌）时，可能会遇到元数据大小限制。

对于分层分块，Amazon Bedrock 知识库支持为分块指定两个级别或以下深度：
+ 父级：您可以设置父块词元的最大大小。
+ 子级：您可以设置子块词元的最大大小。

您还可以设置分块之间的重叠词元数量。这是连续父块和连续子块之间重叠词元的绝对数量。

## 语义分块
<a name="kb-semantic-chunking"></a>

语义分块是一种自然语言处理技术，它将文本分成有意义的块，以增强理解和信息检索。它旨在通过关注语义内容而不仅仅是句法结构来提高检索的准确性。这样做有助于更精确地提取和处理相关信息。

配置语义分块时，您可以选择指定以下超级参数。
+ 最大词元数量：在遵守句子边界的情况下，单个分块中应包含的最大词元数。
+ 缓冲区大小：对于给定的句子，缓冲区大小定义了创建嵌入时要添加的周围句子的数量。例如，缓冲区大小为 1 会产生 3 个句子（当前句、上一句和下一句）的组合和嵌入。此参数能够影响一起检查多少文本以确定每个分块的边界，从而影响生成的分块的粒度和连贯性。较大的缓冲区大小可能会捕获更多的上下文，但也会带来噪音，而较小的缓冲区大小可能会错过重要的上下文，但可以确保更精确的分块。
+ 断点百分位数阈值：在句子之间画断点的句 distance/dissimilarity 子的百分位数阈值。较高的阈值要求句子更容易区分，以便分成不同的块。阈值越高，分块越少，平均分块大小通常越大。
**注意**  
由于语义分块使用基础模型，因此使用语义分块会产生额外的成本。费用取决于您拥有的数据量。有关基础模型成本的更多信息，请参阅 [Amazon Bedrock 定价](https://aws.amazon.com/bedrock/pricing/)。

## 多模态内容分块
<a name="kb-multimodal-chunking"></a>

对于多模式内容（音频、视频、图像），分块行为与文本文档不同：
+ **Nova 多模态嵌入：**分块发生在嵌入模型级别。您可以将音频和视频区块的持续时间配置为 1-30 秒（默认值：5 秒）。对于视频文件，即使视频包含音频，也只适用视频区块时长。音频区块持续时间仅适用于独立音频文件。
+ **基岩数据自动化 (BDA) 解析器：**首先将内容转换为文本（脚本和场景摘要），然后将标准文本分块策略应用于转换后的文本。

**注意**  
使用 Nova 多模态嵌入时，知识库中配置的文本分块策略仅影响数据源中的文本文档，而不影响音频、视频或图像文件。

# 数据来源的解析选项
<a name="kb-advanced-parsing"></a>

解析是指理解并提取原始数据的内容。Amazon Bedrock 知识库提供了以下选项，用于在摄取期间解析您的数据来源：
+ **Amazon Bedrock 默认解析器** – 仅解析文本文件中的文本，包括 .txt、.md、.html、.doc/.docx、.xls/.xlsx 和 .pdf 文件。此解析器不会产生任何使用费。
**注意**  
由于默认解析器仅输出文本，因此，如果您的文档包含数字、图表、表格或图像，我们建议使用 Amazon Bedrock 数据自动化或基础模型作为解析器，而不是默认解析器。Amazon Bedrock 数据自动化和基础模型可以从您的文档中提取这些元素，并将其作为输出返回。
+ Amazon Bedrock 知识库提供了以下解析器来解析多模态数据，包括 .pdf 文件中的数字、图表和表格，以及 .jpeg 和 .png 图像文件。这些解析器还可以提取这些数字、图表、表格和图像，并将它们作为文件存储在知识库创建期间指定的 S3 目标中。在知识库检索期间，这些文件可以在响应或来源归因中返回。
  + **Amazon Bedrock 数据自动化** – 一项完全托管的服务，可有效处理多模态数据，而无需提供任何额外的提示。此解析器的成本取决于文档中的页数或要处理的图像数量。有关此服务的更多信息，请参阅 [Amazon Bedrock 数据自动化](bda.md)。
  + **基础模型** – 使用基础模型处理多模态数据。此解析器为您提供了选项，以自定义用于数据提取的默认提示。此解析器的成本取决于基础模型处理的输入和输出词元的数量。有关支持解析 Amazon Bedrock 知识库数据的模型列表，请参阅[用于解析的支持的区域和模型](knowledge-base-supported.md#knowledge-base-supported-parsing)。

**重要**  
如果您选择 Amazon Bedrock 数据自动化或基础模型作为解析器，那么即使 .pdf 文件仅包含文本，也将使用您选择的方法来解析数据来源中的所有 .pdf 文件。不会使用默认解析器来解析这些 .pdf 文件。您的账户会因使用 Amazon Bedrock 数据自动化或基础模型解析这些文件而产生费用。

在选择如何解析数据时，请考虑以下事项：
+ 无论数据是纯文本，还是包含多模态数据，如图像、图形和图表，您是否希望知识库能够查询这些数据。
+ 您是否希望可选择自定义提示，以指示模型如何解析数据。
+ 解析器的成本。Amazon Bedrock 数据自动化采用按页定价，而基础模型解析器则根据输入和输出词元收费。有关更多信息，请参阅 [Amazon Bedrock 定价](https://aws.amazon.com/bedrock/pricing/)。
+ 文件总大小限制。使用基础模型作为解析器时，所有文件的总文件大小不得超过 100 GB。

要了解如何配置知识库的解析方式，请参阅[将数据来源连接到知识库](data-source-connectors.md)中的数据来源的连接配置。

# 使用自定义转换 Lambda 函数定义数据的摄取方式
<a name="kb-custom-transformation"></a>

您可以定义自定义转换 Lambda 函数，将自己的逻辑注入知识库摄取过程。

您可能有特定的分块逻辑，Amazon Bedrock 知识库本身不支持这些逻辑。使用无分块策略选项，同时指定包含分块逻辑的 Lambda 函数。此外，您需要为知识库指定一个 Amazon S3 存储桶，以写入要由 Lambda 函数分块的文件。

分块后，您的 Lambda 函数会将分块文件写回同一个存储桶中，并返回知识库的引用以供进一步处理。您可以选择提供自己的 AWS KMS 密钥来加密存储在 S3 存储桶中的文件。

**注意**  
如果使用 Web 连接器，则会向 Lambda 传递 markdown 文本，而不是 HTML。

或者，您可能需要指定块级元数据，同时让知识库应用一种原生支持的分块策略。在这种情况下，选择一种预定义的分块策略（例如，默认或固定大小分块），同时提供对您的 Lambda 函数和 S3 存储桶的引用。在这种情况下，知识库会将已解析和预分块的文件存储在预定义的 S3 存储桶中，然后再调用 Lambda 函数进一步添加块级元数据。

添加块级元数据后，您的 Lambda 函数会将分块文件写回同一个存储桶中，并返回知识库的引用以供进一步处理。请注意，如果发生任何冲突，块级元数据优先，并会覆盖文件级元数据。

有关使用 Python Lambda 函数进行自定义分块的示例，请参阅 [Custom chunking using Lambda function](https://github.com/aws-samples/amazon-bedrock-samples/blob/main/rag/knowledge-bases/features-examples/03-optimizing-accuracy-retrieved-results/advanced_chunking_options.ipynb)。

有关 API 和文件合约，请参阅以下结构：

**使用 Lambda 函数添加自定义转换时的 API 合约**

```
{
...
    "vectorIngestionConfiguration": {
        "customTransformationConfiguration": { // Custom transformation 
            "intermediateStorage": {
                "s3Location": { // the location where input/output of the Lambda is expected 
                    "uri": "string"
                }
            },
            "transformations": [{
                "transformationFunction": {
                    "transformationLambdaConfiguration": {
                        "lambdaArn": "string"
                    }
                },
                "stepToApply": "string" // enum of POST_CHUNKING
            }]
        },
        "chunkingConfiguration": {
            "chunkingStrategy": "string",
            "fixedSizeChunkingConfiguration": {
                "maxTokens": "number",
                "overlapPercentage": "number"
            }
            ...
        }
    }
}
```

**自定义 Lambda 转换输入格式**

```
{
    "version": "1.0",
    "knowledgeBaseId": "string",
    "dataSourceId": "string",
    "ingestionJobId": "string",
    "bucketName": "string",
    "priorTask": "string",
    "inputFiles": [{
        "originalFileLocation": {
            "type": "S3",
            "s3_location": {
                "uri": "string"
            }
        },
        "fileMetadata": {
            "key1": "value1",
            "key2": "value2"
        },
        "contentBatches": [{
            "key":"string"
        }]
    }]
}
```

**自定义 Lambda 转换输出格式**

```
{
    "outputFiles": [{
        "originalFileLocation": {
            "type": "S3",
            "s3_location": {
                "uri": "string"
            }
        },
        "fileMetadata": {
            "key1": "value1",
            "key2": "value2"
        },
        "contentBatches": [{
            "key": "string"
        }]
    }]
}
```

** 中引用的对象的文件格式`fileContents`**

```
{
    "fileContents": [{
        "contentBody": "...",
        "contentType": "string", // enum of TEXT, PDF, ...
        "contentMetadata": {
            "key1": "value1",
            "key2": "value2"
        }
    }
    ...
    ]
}
```

# 在数据来源中包含元数据以改进知识库查询
<a name="kb-metadata"></a>

在提取 CSV（逗号分隔值）文件时，您可以让知识库将某些列视为内容字段而不是元数据字段。现在，您可以拥有一个 CSV 文件和一个相应的 metadata.json 文件，从而为知识库提供有关如何处理 CSV 中每列的提示，而不必拥有成百上千个内容/元数据文件对。

每个分块的文档元数据字段/属性有限制。请参阅 [Quotas for knowledge bases](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)

在提取 CSV 文件之前，请确保：
+ 您的 CSV 格式为 RFC4180，并采用 UTF-8 编码。
+ CSV 的第一行包含标题信息。
+ 您的 metadata.json 中提供的元数据字段以列的形式出现在 CSV 中。
+ 您提供一个采用以下格式的 fileName.csv.metadata.json 文件：

  ```
  {
      "metadataAttributes": {
          "${attribute1}": "${value1}",
          "${attribute2}": "${value2}",
          ...
      },
      "documentStructureConfiguration": {
          "type": "RECORD_BASED_STRUCTURE_METADATA",
          "recordBasedStructureMetadata": {
              "contentFields": [
                  {
                      "fieldName": "string"
                  }
              ],
              "metadataFieldsSpecification": {
                  "fieldsToInclude": [
                      {
                          "fieldName": "string"
                      }
                  ],
                  "fieldsToExclude": [
                      {
                          "fieldName": "string"
                      }
                  ]
              }
          }
      }
  }
  ```

CSV 文件每次解析一行，并将分块策略和向量嵌入应用于内容字段。Amazon Bedrock 知识库目前支持一个内容字段。内容字段被拆分为多个分块，与每个分块关联的元数据字段（列）被视为字符串值。

例如，假设有一个 CSV 中有一列“描述”和一列“创建日期”。描述字段是内容字段，创建日期是关联的元数据字段。描述文本被分成多个块，并转换为 CSV 中每行的向量嵌入。创建日期值被视为日期的字符串表示形式，并与描述的每个分块相关联。

如果未提供包含/排除字段，则除内容列外，所有列都将被视为元数据列。如果仅提供包含字段，则仅将提供的列视为元数据。如果仅提供排除字段，则除排除列之外的所有列都将被视为元数据。如果您在 `fieldsToInclude` 和 `fieldsToExclude` 中都提供了相同的 `fieldName`，Amazon Bedrock 将引发验证异常。如果包容和排除之间存在冲突，则将导致失败。

在 CSV 中找到的空行将被忽略或跳过。

# Amazon Bedrock 知识库支持的模型和区域
<a name="knowledge-base-supported"></a>

Amazon Bedrock 知识库支持使用以下基础模型进行查询：


| Provider | 模型 | 模型 ID | 支持单区域模型 | 跨区域推理配置文件支持 | 
| --- | --- | --- | --- | --- | 
| AI21 实验室 | Jamba 1.5 Large | ai21.jamba-1-5-large-v1:0 |  us-east-1  |  | 
| AI21 实验室 | Jamba 1.5 Mini | ai21.jamba-1-5-mini-v1:0 |  us-east-1  |  | 
| Amazon | Nova Lite | 亚马逊。 nova-lite-v1:0 |  ap-northeast-1 ap-southeast-2 eu-north-1 eu-west-2 us-east-1 us-gov-west-1  |  ap-northeast-1 ap-northeast-2 ap-south-1 ap-southeast-1 ap-southeast-2 ca-central-1 eu-central-1 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-3 us-east-1 us-east-2 us-west-2  | 
| Amazon | Nova Micro | 亚马逊。 nova-micro-v1:0 |  ap-southeast-2 eu-west-2 us-east-1 us-gov-west-1  |  ap-northeast-1 ap-northeast-2 ap-south-1 ap-southeast-1 ap-southeast-2 eu-central-1 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-3 us-east-1 us-east-2 us-west-2  | 
| Amazon | Nova Pro | 亚马逊。 nova-pro-v1:0 |  ap-southeast-2 eu-west-2 us-east-1 us-gov-west-1  |  ap-northeast-1 ap-northeast-2 ap-south-1 ap-southeast-1 ap-southeast-2 eu-central-1 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-3 us-east-1 us-east-2 us-west-2  | 
| Anthropic | Claude 3 Haiku | anthropic.claude-3-haiku-20240307-v1:0 |  ap-northeast-1 ap-northeast-2 ap-south-1 ap-southeast-1 ap-southeast-2 ca-central-1 eu-central-1 eu-central-2 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-gov-west-1 us-west-2  |  eu-central-1 us-east-2 us-gov-east-1  | 
| Anthropic | Claude 3 Sonnet | anthropic.claude-3-sonnet-20240229-v1:0 |  ap-south-1 ap-southeast-2 ca-central-1 eu-central-1 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-west-2  |  ap-northeast-1 ap-northeast-2 ap-southeast-1 eu-central-1  | 
| Anthropic | Claude 3.5 Haiku | anthropic.claude-3-5-haiku-20241022-v1:0 |  us-west-2  |  us-east-1 us-east-2  | 
| Anthropic | Claude 3.5 Sonnet | anthropic.claude-3-5-sonnet-20240620-v1:0 |  ap-northeast-1 ap-northeast-2 ap-southeast-1 eu-central-1 eu-central-2 us-east-1 us-gov-west-1 us-west-2  |  ap-south-1 ap-southeast-2 eu-central-1 eu-west-1 eu-west-3 us-east-1 us-east-2 us-gov-east-1 us-west-2  | 
| Anthropic | Claude 3.5 Sonnet v2 | anthropic.claude-3-5-sonnet-20241022-v2:0 |  ap-southeast-2 us-west-2  |  ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ap-southeast-2 us-east-1 us-east-2  | 
| Anthropic | Claude 3.7 Sonnet | anthropic.claude-3-7-sonnet-20250219-v1:0 |  eu-west-2 us-gov-west-1  |  ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ap-southeast-2 eu-central-1 eu-north-1 eu-west-1 eu-west-3 us-east-1 us-east-2 us-gov-east-1 us-west-2  | 
| Anthropic | Claude Opus 4 | anthropic.claude-opus-4-20250514-v1:0 |  |  us-east-1 us-east-2 us-west-2  | 
| Anthropic | Claude Sonnet 4 | anthropic.claude-sonnet-4-20250514-v1:0 |  |  ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ap-southeast-2 eu-central-1 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-3 us-east-1 us-east-2 us-west-2  | 
| Anthropic | 克劳德·十四行诗 4.5 | anthropic.claude-sonnet-4-5-20250929-v1:0 | 不适用 |  ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ap-southeast-2 ca-central-1 eu-central-1 eu-central-2 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-east-2 us-gov-east-1 us-gov-west-1 us-west-2  | 
| Cohere | Command R | 一致。 command-r-v1:0 |  us-east-1 us-west-2  |  | 
| Cohere | Command R\$1 | 一致。 command-r-plus-v1:0 |  us-east-1 us-west-2  |  | 
| DeepSeek | DeepSeek-R1 | deepseek.r1-v1:0 |  |  us-east-1 us-east-2 us-west-2  | 
| Meta | Llama 3 70B Instruct | meta.llama3-70 1:0 b-instruct-v |  ap-south-1 ca-central-1 eu-west-2 us-east-1 us-gov-west-1 us-west-2  |  | 
| Meta | Llama 3 8B Instruct | meta.llama3-8 1:0 b-instruct-v |  ap-south-1 ca-central-1 eu-west-2 us-east-1 us-gov-west-1 us-west-2  |  | 
| Meta | Llama 3.1 405B Instruct | meta.llama3-1-405 1:0 b-instruct-v |  us-west-2  |  us-east-2  | 
| Meta | Llama 3.1 70B Instruct | meta.llama3-1-70 1:0 b-instruct-v |  us-west-2  |  us-east-1 us-east-2 us-west-2  | 
| Meta | Llama 3.1 8B Instruct | meta.llama3-1-8 1:0 b-instruct-v |  us-west-2  |  us-east-1 us-east-2 us-west-2  | 
| Meta | Llama 3.2 11B Instruct | meta.llama3-2-11 1:0 b-instruct-v |  |  us-east-1 us-east-2 us-west-2  | 
| Meta | Llama 3.2 90B Instruct | meta.llama3-2-90 1:0 b-instruct-v |  |  us-east-1 us-east-2 us-west-2  | 
| Meta | Llama 3.3 70B Instruct | meta.llama3-3-70 1:0 b-instruct-v |  us-east-2  |  us-east-1 us-east-2 us-west-2  | 
| Mistral AI | Mistral Large（24.02） | mistral.mistral-large-2402-v1:0 |  ap-south-1 ap-southeast-2 ca-central-1 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-west-2  |  | 
| Mistral AI | Mistral Large（24.07） | mistral.mistral-large-2407-v1:0 |  us-west-2  |  | 
| Mistral AI | Mistral Small（24.02） | mistral.mistral-small-2402-v1:0 |  us-east-1  |  | 

Amazon Bedrock 知识库还支持在解析数据或生成响应时使用推理配置文件。借助推理配置文件，您可以跟踪成本与指标，还能执行跨区域推理以将模型推理请求分发到一系列区域，从而允许更高的吞吐量。您可以在[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)或[CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html)请求中指定推理配置文件。有关更多信息，请参阅 [使用推理配置文件设置模型调用资源](inference-profiles.md)。

**重要**  
如果您使用跨区域推理，则您的数据可进行跨区域共享。

您也可以使用 SageMaker AI 模型或根据自己的数据训练的[自定义模型](custom-models.md)。

**注意**  
如果您使用 A SageMaker I 或自定义模型，则必须指定编排和生成提示（有关更多信息，请参阅中的**知识库提示模板**[配置和自定义查询与响应生成](kb-test-config.md)）。您的提示必须包含信息变量，以获取用户的输入和上下文。

Amazon Bedrock 知识库中部分功能提供的区域支持与模型支持存在差异。选择一个主题以查看某项功能提供的支持：

**Topics**
+ [向量嵌入支持的模型](#knowledge-base-supported-embeddings)
+ [用于解析的支持的区域和模型](#knowledge-base-supported-parsing)
+ [支持在查询期间对结果进行重排的模型和区域](#knowledge-base-supported-rerank)
+ [带结构化数据存储的知识库支持的区域](#knowledge-base-supported-structured)

## 向量嵌入支持的模型
<a name="knowledge-base-supported-embeddings"></a>

Amazon Bedrock 知识库使用嵌入模型将数据转换为向量嵌入，并将嵌入存储在向量数据库中。有关更多信息，请参阅 [将数据转换为知识库](kb-how-data.md)。

Amazon Bedrock 知识库支持使用以下基础模型进行矢量嵌入：


| Provider | 模型 | 模型 ID | 支持单区域模型 | 
| --- | --- | --- | --- | 
| Amazon | Titan Embeddings G1 - Text | 亚马逊。 titan-embed-text-v1 |  ap-northeast-1 eu-central-1 us-east-1 us-west-2  | 
| Amazon | Titan Text Embeddings V2 | 亚马逊。 titan-embed-text-v2:0 |  ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-2 ca-central-1 eu-central-1 eu-central-2 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-east-2 us-gov-east-1 us-gov-west-1 us-west-2  | 
| Cohere | Embed English | 一致。 embed-english-v3 |  ap-northeast-1 ap-south-1 ap-southeast-1 ap-southeast-2 ca-central-1 eu-central-1 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-west-2  | 
| Cohere | Embed Multilingual | 一致。 embed-multilingual-v3 |  ap-northeast-1 ap-south-1 ap-southeast-1 ap-southeast-2 ca-central-1 eu-central-1 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-west-2  | 

嵌入模型支持以下向量类型。


****  

| 模型名称 | 支持的向量类型 | 支持的维度数 | 
| --- | --- | --- | 
| Amazon Titan Embeddings G1 - Text | 浮点 | 1536 | 
| Amazon Titan 文本嵌入 V2 | 浮点、二进制 | 256、512、1024 | 
| Cohere Embed（英文版） | 浮点、二进制 | 1024 | 
| Cohere Embed（多语版） | 浮点、二进制 | 1024 | 
| Amazon Titan Multimodal Embeddings G1 | 浮点 | 1024 | 
| Cohere嵌入 v3（多模态） | 浮点、二进制 | 1024 | 

## 用于解析的支持的区域和模型
<a name="knowledge-base-supported-parsing"></a>

将数据转换为向量嵌入时，您在解析 Amazon Bedrock 知识库中的数据方面有多种不同选择。有关更多信息，请参阅 [数据来源的解析选项](kb-advanced-parsing.md)。

下文列出了对解析选项的支持：
+ Amazon Bedrock 数据自动化功能解析器已在美国西部（俄勒冈州）推出，目前为预览版，并且可能会发生变化。
+ 以下基础模型系列可用作解析器：
  + Claude 视觉模型
  + Nova 视觉模型
  + LLama 4 种视觉模型

  基础模型解析可在直接使用这些模型的情况下使用（而不是通过跨区域推断）。AWS 区域有关各区域的当前模型可用性，请参阅[Amazon Bedrock 中支持的根基模型](models-supported.md)。

## 支持在查询期间对结果进行重排的模型和区域
<a name="knowledge-base-supported-rerank"></a>

检索知识库查询结果时，您可以使用重排模型对知识库查询的结果进行重排。有关更多信息，请参阅[查询知识库并检索数据](kb-test-retrieve.md)和[根据检索到的数据查询知识库并生成响应](kb-test-retrieve-generate.md)。

有关支持重排的模型和区域的列表，请参阅[Amazon Bedrock 中支持重排的区域和模型](rerank-supported.md)。

## 带结构化数据存储的知识库支持的区域
<a name="knowledge-base-supported-structured"></a>

带结构化数据存储的知识库可让您将知识库连接到结构化数据存储，并将自然语言查询转换为 SQL 查询。有关更多信息，请参阅 [通过连接到结构化数据存储来构建知识库](knowledge-base-build-structured.md)。

包含结构化数据存储的知识库可在以下位置找到AWS 区域：
+ 欧洲地区（法兰克福）
+ 欧洲（苏黎世）
+ 欧洲地区（爱尔兰）
+ 欧洲地区（伦敦）
+ 欧洲地区（巴黎）
+ 亚太地区（东京）
+ 亚太地区（首尔）
+ 亚太地区（孟买）
+ 亚太地区（新加坡）
+ 亚太地区（悉尼）
+ 加拿大（中部）
+ 南美洲（圣保罗）
+ 美国东部（弗吉尼亚州北部）
+ 美国东部（俄亥俄州）
+ 美国西部（俄勒冈州）
+ AWSGovCloud （美国西部）

# 无需配置知识库即可使用您的文档聊天
<a name="knowledge-base-chatdoc"></a>

利用 Amazon Bedrock 控制台中的**使用您的文档聊天**功能，您无需配置知识库便可轻松测试知识库。您可以在控制台聊天窗口中加载或拖放文档，然后开始提问。**使用您的文档聊天**使用您的文档来回答问题、进行分析、创建摘要、在已编号的列表中逐项列出字段或重写内容。**使用您的文档聊天**在使用文档或其数据后不会对其进行存储。

**注意**  
目前，Anthropic Sonnet 模型可以很好地支持**使用您的文档聊天**功能。有关如何访问和使用知识库模型的更多信息，请参阅 [Supported models for knowledge bases](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-supported.html)。  
使用文档进行聊天时，您不能使用重排器模型。

您还可以轻松创建聊天或工作流应用程序的原型，而无需配置知识库。利用 [Amazon Bedrock Studio](https://docs.aws.amazon.com/bedrock/latest/userguide/br-studio.html)，您可以从计算机上传文档，为应用程序提供数据或“数据来源”。Amazon Bedrock Studio（已更名为 Amazon Bedrock IDE）现已在 Amazon SageMaker 融通式合作开发工作室中推出。有关更多信息，请参阅 [Amazon Bedrock IDE](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/bedrock.html)。

要将**使用您的文档聊天**功能用作知识库的一部分，请选择下面的选项卡并按照步骤操作。

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

**在 Amazon Bedrock 中使用您的文档聊天：**

1. 通过以下网址打开 Amazon Bedrock 控制台：[https://console.aws.amazon.com/bedrock/](https://console.aws.amazon.com/bedrock/)。

1. 从左侧导航窗格中选择**知识库**，然后选择**使用您的文档聊天**。

1. 在**使用您的文档聊天**选项卡中，选择**模型**下的**选择一个模型**。

1. 选择要用于文档分析的模型，然后选择**应用**。

1. 在**使用您的文档聊天**选项卡上输入系统提示。

1. 在**数据**下选择**您的计算机**或 **S3**。

1. 选择**选择文档**以上传文档。您也可以在聊天控制台的**编写查询**框中拖放文档。
**注意**  
文件类型：PDF、MD、TXT、DOC、DOCX、HTML、CSV、XLS、XLSX。使用小于 10 MB 的文件时，有一个预设的固定词元限制。小于 10 MB 的文字密集型文件可能会超出词元限制。

1. 在**编写查询**框中输入自定义提示。您可以输入自定义提示或使用默认提示。加载的文档和提示会出现在聊天窗口底部。

1. 选择**运行**。响应会生成搜索结果，该结果包含选项**显示来源分块**，其中显示了答案的来源材料信息。

1. 要加载新文件，请选择 X 以删除当前加载到聊天窗口中的文件，然后拖放新文件。输入新提示并选择**运行**。
**注意**  
选择新文件将清除以前的查询和响应，并开始一个新的会话。

------

# 为用户或角色设置创建和管理知识库所需的权限
<a name="knowledge-base-prereq-permissions-general"></a>

要使用户或角色能够执行与 Amazon Bedrock 知识库相关的操作，您必须为其附加策略以授予执行这些操作所需的权限。它描述了用户从这些知识库中检索信息并从中生成响应所需的权限。

展开以下各个部分，了解如何针对特定使用案例设置权限：

## 使角色能够创建并管理知识库
<a name="w2aac28c10c21b7b1"></a>

要使 IAM 角色能够创建知识库、将知识库连接到结构化数据存储、管理知识库以及启动和管理从数据来源到知识库的摄取作业，您必须为 `KnowledgeBase`、`DataSource` 和 `IngestionJob` 操作提供权限。要提供知识库标记权限，请包含对 `bedrock:TagResource` 和 `bedrock:UntagResource` 的权限。

**注意**  
如果用户或角色附加了[AmazonBedrockFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockFullAccess) AWS 托管策略，则可以跳过此先决条件。

要使角色能够执行这些操作，请将以下策略附加到该角色：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CreateKB",
            "Effect": "Allow",
            "Action": [
                "bedrock:CreateKnowledgeBase"
            ],
            "Resource": "*"
        },
        {
            "Sid": "KBDataSourceManagement",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetKnowledgeBase",
                "bedrock:ListKnowledgeBases",
                "bedrock:UpdateKnowledgeBase",
                "bedrock:DeleteKnowledgeBase",
                "bedrock:StartIngestionJob",
                "bedrock:GetIngestionJob",
                "bedrock:ListIngestionJobs",
                "bedrock:StopIngestionJob",
                "bedrock:TagResource",
                "bedrock:UntagResource"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/*"
            ]
        }
    ]
}
```

------

创建知识库后，我们建议您将通配符 (*\$1*) 替换`KBDataSourceManagement`为您创建的知识库的 ID，从而缩小语句中的权限范围。

## 使角色能够执行知识库 API 操作
<a name="w2aac28c10c21b7b3"></a>

此部分介绍为知识库执行 `Retrieve` 和 `RetrieveAndGenerate` API 操作时所需的权限。

将以下策略附加到角色：

------
#### [ 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": "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` 语句用于获取知识库信息。
+ 需要使用 `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) 以从数据存储中检索数据，并根据该数据生成响应。

## 申请访问以下基础模型 RetrieveAndGenerate
<a name="knowledge-base-prereq-structured-model-access"></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) 基于从数据来源中检索到的数据生成响应，请按照[访问 Amazon Bedrock 基础模型](model-access.md)中的步骤操作，请求对用于生成的基础模型的访问权限。

要进一步限制权限，您可以忽略操作，或者指定用于筛选权限的资源和条件键。有关操作、资源和条件键的更多信息，请参阅《服务授权参考》**中的以下主题：
+ [Amazon Bedrock 定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-actions-as-permissions) – 了解操作、您可以在 `Resource` 字段中限定范围的资源类型，以及 `Condition` 字段中可用于筛选权限的条件键。
+ [Amazon Bedrock 定义的资源类型](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-resources-for-iam-policies) – 了解 Amazon Bedrock 中的资源类型。
+ [Amazon Bedrock 的条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys) – 了解 Amazon Bedrock 中的条件键。

# 通过连接到数据来源来构建知识库
<a name="knowledge-base-build"></a>

Amazon Bedrock 知识库支持存储在数据来源中的各种文件类型。为了解释来自数据来源的数据，Amazon Bedrock 知识库要求将数据转换为向量嵌入，即数据的数字表示形式。这些嵌入可以与查询的向量表示进行比较，以评测相似性并确定在数据检索期间要返回哪些源。

将知识库连接到数据来源涉及以下常规步骤：

1. 将知识库连接到支持的数据来源。

1. 如果您的数据源包含多模态数据，包括图像、音频和视频文件，则必须选择支持多模态内容的适当处理方法和嵌入模型。
**注意**  
只有 Amazon S3 和自定义数据来源支持多模态数据。有关使用多式联运内容的全面指导，请参阅[为多模式内容建立知识库](kb-multimodal.md)。

1. 选择嵌入模型，将数据来源中的数据转换为向量嵌入。

1. 选择向量存储，用于存储数据的向量表示。

1. 同步您的数据，使其转换为向量嵌入。

1. 如果您修改数据来源中的数据，则必须重新同步更改。

**Topics**
+ [使用非结构化数据源创建 Amazon Bedrock 知识库的先决条件](knowledge-base-prereq.md)
+ [在 Amazon Bedrock 知识库中使用 OpenSearch 托管集群所需的先决条件和权限](kb-osm-permissions-prereq.md)
+ [在 Amazon Bedrock 知识库中通过连接到数据来源创建知识库](knowledge-base-create.md)
+ [将您的数据与 Amazon Bedrock 知识库同步](kb-data-source-sync-ingest.md)
+ [将更改直接摄取到知识库中](kb-direct-ingestion.md)
+ [查看 Amazon Bedrock 知识库的数据来源信息](kb-ds-info.md)
+ [修改您的 Amazon Bedrock 知识库的数据来源](kb-ds-update.md)
+ [从 Amazon Bedrock 知识库中删除数据来源](kb-ds-delete.md)

# 使用非结构化数据源创建 Amazon Bedrock 知识库的先决条件
<a name="knowledge-base-prereq"></a>

Amazon Bedrock 知识库需要数据和模型来检索和生成响应，需要矢量存储来存储数据的矢量表示形式，以及访问数据和执行操作的 AWS Identity and Access Management 权限。

您必须先满足以下先决条件，之后才能创建知识库。有关一般权限要求，请参阅[为用户或角色设置创建和管理知识库所需的权限](knowledge-base-prereq-permissions-general.md)

1. 确保您的数据位于[支持的数据来源连接器](data-source-connectors.md)中。

1. （可选）[设置自己的受支持向量存储](knowledge-base-setup.md)。如果您计划使用自动创建矢量存储库 AWS 管理控制台 ，则可以跳过此步骤。

1. （可选）按照中的说明创建具有适当权限的自定义 AWS Identity and Access Management (IAM) [服务角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-role)[为 Amazon Bedrock 知识库创建服务角色](kb-permissions.md)。您可以使用 AWS 管理控制台 为自己自动创建服务角色。
**注意**  
如果您使用亚马逊 OpenSearch 服务（包括 Amazon OpenSearch Serverless）创建知识库，则该服务角色需要除 AWS BedrockFullAccess 托管策略所涵盖的权限之外的其他权限。这些权限包括 `aoss:CreateAccessPolicy`、`iam:CreateServiceLinkedRole` 和 `iam:CreateRole` 权限。

1. （可选）按照[知识库资源的加密](encryption-kb.md)中的步骤设置额外的安全配置。

1. （可选）如果您计划使用 [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 操作根据从知识库中检索到的信息生成响应，请按照[访问 Amazon Bedrock 基础模型](model-access.md)中的步骤请求访问您在所用区域中要使用的模型。

**Topics**
+ [Amazon Bedrock 知识库数据的先决条件](knowledge-base-ds.md)
+ [将您创建的向量存储用于知识库的先决条件](knowledge-base-setup.md)

# Amazon Bedrock 知识库数据的先决条件
<a name="knowledge-base-ds"></a>

数据来源包含文件或内容，其中的信息可在查询知识库时进行检索。您必须至少在一个[支持的数据来源](https://docs.aws.amazon.com/bedrock/latest/userguide/data-source-connectors.html)中存储文档或内容。

## 支持的文档格式以及知识库数据的限制
<a name="kb-ds-supported-doc-formats-limits"></a>

连接到[支持的数据来源](https://docs.aws.amazon.com/bedrock/latest/userguide/data-source-connectors.html)后，内容将被摄取到知识库中。

如果您使用 Amazon S3 来存储文件，或者您的数据来源包含附加文件，则必须首先检查每个源文档文件是否符合以下规定：
+ 源文件采用以下支持的格式：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/knowledge-base-ds.html)
+ 每个文件的大小不超出 50 MB 的配额。

如果您使用 Amazon S3 或自定义数据来源，则可以使用多模态数据，包括 JPEG（.jpeg）或 PNG（.png）图像，或包含表格、图表、示意图或其他图像的文件。

**注意**  
.JPEG 和 .PNG 文件的最大大小为 3.75 MB。

# 将您创建的向量存储用于知识库的先决条件
<a name="knowledge-base-setup"></a>

要存储文档转换为的向量嵌入，请使用向量存储。Amazon Bedrock 知识库支持某些向量存储的快速创建流程，因此，如果您希望 Amazon Bedrock 在其中一个向量存储中自动为您创建向量索引，请跳过此先决条件步骤，直接前往[在 Amazon Bedrock 知识库中通过连接到数据来源创建知识库](knowledge-base-create.md)这一步骤。

如果要存储二进制向量嵌入而不是标准浮点型（float32）向量嵌入，则必须使用支持二进制向量的向量存储。

**注意**  
Amazon OpenSearch Serverless 和亚马逊 OpenSearch 托管集群是唯一支持存储二进制向量的矢量存储。

您可以设置自己的受支持向量存储，以便为数据的向量嵌入表示编制索引。您需要为以下数据创建字段：
+ 您选择的嵌入模型根据数据来源中的文本生成的向量的字段。
+ 从数据来源中的文件提取的文本块的字段。
+ Amazon Bedrock 管理的源文件元数据的字段。
+ （如果您使用的是 Amazon Aurora 数据库，并希望设置[元数据筛选](kb-test-config.md)）与源文件关联的元数据的字段。如果您计划在其他向量存储中设置筛选，则无需为这些字段设置筛选。

您可以使用 KMS 密钥来加密第三方向量存储。有关更多信息，请参阅 [Encryption of knowledge base resources](https://docs.aws.amazon.com/bedrock/latest/userguide/encryption-kb.html)。

选择与将用于创建向量索引的向量存储服务对应的选项卡。

**注意**  
您对嵌入模型和向量维度的选择可能会影响对可用向量存储的选择。如果您无法使用首选向量存储，请选择兼容选项，即嵌入模型和向量维度。

------
#### [ Amazon OpenSearch Serverless ]

1. 要在 Amazon OpenSearch Serverless 中配置权限并创建矢量搜索集合 AWS 管理控制台，请按照《亚马逊 OpenSearch 服务开发者指南》中[使用矢量搜索集合](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vector-search.html)中的步骤 1 和步骤 2 进行操作。设置集合时，请注意以下事项：

   1. 为集合指定您选择的名称和描述。

   1. 要将您的集合设置为私有，请在**安全性**部分选择**标准创建**。然后，在**网络访问设置**部分，选择 **VPC** 作为**访问类型**，然后选择一个 VPC 端点。有关为亚马逊 OpenSearch 无服务器集合设置 VPC 终端节点的更多信息，请参阅《[亚马逊 OpenSearch 服务开发者指南》中的使用接口终端节点 (AWS PrivateLink) 访问亚马逊 OpenSearch 无服务器](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vpc.html)。

1. 集合创建完后，记下创建知识库时的**集合 ARN**。

1. 在左侧导航窗格中，选择**无服务器**下的**集合**。然后选择向量搜索集合。

1. 选择**索引**选项卡。然后选择**创建向量索引**。

1. 在**向量索引详细信息**部分的**向量索引名称**字段中，输入索引名称。

1. 在**向量字段**部分，选择**添加向量字段**。Amazon Bedrock 会将您的数据来源的向量嵌入数据存储在此字段中。提供以下配置：
   + **向量字段名称** - 提供字段的名称（例如 **embeddings**）。
   + **引擎** - 用于搜索的向量引擎。选择 **faiss**。
   + **维度** – 向量中的维度数。请参阅下表确定向量应包含的维度数：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/knowledge-base-setup.html)
   + **距离指标** – 用于衡量向量之间相似性的指标。我们建议将**欧几里得**用于浮点型向量嵌入。

1. 展开**元数据管理**部分并添加两个用于配置向量索引的字段，以存储知识库可通过向量检索的其他元数据。下表介绍了需要为每个字段指定的字段和值：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/knowledge-base-setup.html)

1. 记下创建知识库时为向量索引名称、向量字段名称和元数据管理映射字段名称选择的名称。然后选择**创建**。

创建向量索引后，您可以继续执行[创建知识库](knowledge-base-create.md)。下表汇总了您将输入您记下的每条信息的位置。


| 字段 | 知识库设置中的相应字段（控制台） | 知识库设置中的相应字段 (API) | 说明 | 
| --- | --- | --- | --- | 
| 集合 ARN | 集合 ARN | collectionARN | 向量搜索集合的 Amazon 资源名称（ARN）。 | 
| 向量索引名称 | 向量索引名称 | vectorIndexName | 向量索引的名称。 | 
| 向量字段名称 | 向量字段 | vectorField | 用于为数据来源存储向量嵌入数据的字段的名称。 | 
| 元数据管理（第一个映射字段） | 文本字段 | textField | 用于存储来自数据来源的原始文本的字段的名称。 | 
| 元数据管理（第二个映射字段） | Bedrock 托管的元数据字段 | metadataField | 用于存储 Amazon Bedrock 管理的元数据的字段的名称。 | 

有关在 Amazon OpenSearch Serverless 中设置矢量库的更多详细文档，请参阅《亚马逊 OpenSearch 服务开发者指南》中的[使用矢量搜索集合](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vector-search.html)。

------
#### [ Amazon OpenSearch Service Managed Clusters ]

**重要**  
在 OpenSearch 托管集群中使用任何域资源之前，您需要配置某些 IAM 访问权限和策略。有关更多信息，请参阅 [在 Amazon Bedrock 知识库中使用 OpenSearch 托管集群所需的先决条件和权限权限配置概述](kb-osm-permissions-prereq.md)。
如果您遇到数据提取失败，则可能表示 OpenSearch 域容量不足。要解决此问题，请通过预调配更高的 IOPS 和提高吞吐量设置来增加域的容量。有关更多信息，请参阅 [Amazon OpenSearch 服务最佳运营实践](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/bp.html)。

1. 要在中的 OpenSearch 集群中创建域和向量索引 AWS 管理控制台，请按照《*Amazon Service 开发者指南》中创建和管理 OpenSearch OpenSearch 服务*[域](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html)中描述的步骤进行操作。

   设置域时，请注意以下事项：

   1. 为域提供所选名称。

   1. 建议您使用**快捷创建**选项来快速开始创建您的域。
**注意**  
此选项会为您提供一个吞吐量较低的域。如果您有需要更高吞吐量的更大规模工作负载，请选择**标准创建**选项。稍后可根据需要调整容量。利用此选项，您可以从最低容量开始，之后可根据需要对容量进行修改。

   1. 对于 “网络”，必须选择 “**公共访问**”。 OpenSearch 您的知识库不支持位于 VPC 之后的域。

   1. 对于**版本**，如果您使用的是二进制向量嵌入，则 Amazon Bedrock 知识库需要引擎版本 2.16 或更高版本。此外，需要版本 2.13 或更高版本才能创建 k-nn 索引。有关更多信息，请参阅《*亚马逊 OpenSearch 服务开发者*指南》中的 [K-NN 搜索](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/knn.html)。

   1. 建议您使用**双栈模式**。

   1. 我们建议您启用**精细访问控制**以保护您域中的数据，并进一步控制授予知识库服务角色访问该 OpenSearch 域和发出请求的权限。

   1. 将所有其他设置保留为默认值，然后选择**创建**以创建您的域。

1. 创建域后，单击该域以记下创建知识库时需使用的**域 ARN** 和**域端点**。

1. 创建域后，您可以通过在 OpenSearch 仪表板上运行以下命令或使用 curl 命令来创建向量索引。有关详情，请参阅 [OpenSearch 文档](https://opensearch.org/docs/latest/search-plugins/knn/knn-index/)。

   运行命令时：
   + 提供向量字段的名称（例如 **embeddings**）。
   + 确保用于搜索的向量为 **faiss**。**nmslib** 不受支持。
   + 有关向量中的维度数，请参阅下表以确定向量应包含的维度数：
**注意**  
Titan V2 嵌入 - 文本模型支持多个维度。它也可以是 256 或 512。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/knowledge-base-setup.html)
   + 您可以添加两个用于配置向量索引的字段，以存储知识库可通过向量检索的其他元数据。下表描述了这两个字段以及要为每个字段指定的值。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/knowledge-base-setup.html)

   ```
   PUT /<index-name>
   {
       "settings": {
           "index": {
               "knn": true
           }
       },
       "mappings": {
           "properties": {
               "<vector-name>": {
                   "type": "knn_vector",
                   "dimension": <embedding-dimension>,
                   "data_type": "binary",          # Only needed for binary embeddings
                   "space_type": "l2" | "hamming", # Use l2 for float embeddings and hamming for binary embeddings
                   "method": {
                       "name": "hnsw",
                       "engine": "faiss",
                       "parameters": {
                           "ef_construction": 128,
                           "m": 24
                       }
                   }
               },
   
               "AMAZON_BEDROCK_METADATA": {
                   "type": "text",
                   "index": "false"
               },
               "AMAZON_BEDROCK_TEXT_CHUNK": {
                   "type": "text",
                   "index": "true"            
               }
           }
       }
   }
   ```

1. 记下域 ARN 和端点，以及您为向量索引名称、向量字段名称和元数据管理映射字段名称选择的名称，以便在创建知识库时使用。

创建向量索引后，您可以继续执行[创建知识库](knowledge-base-create.md)。下表汇总了您将输入您记下的每条信息的位置。


| 字段 | 知识库设置中的相应字段（控制台） | 知识库设置中的相应字段 (API) | 说明 | 
| --- | --- | --- | --- | 
| 域 ARN | 域 ARN | domainARN | 域名的亚马逊资源名称 (ARN)。 OpenSearch | 
| 域端点 | 域端点 | domainEndpoint | 要连接到 OpenSearch 域的终端节点。 | 
| 向量索引名称 | 向量索引名称 | vectorIndexName | 向量索引的名称。 | 
| 向量字段名称 | 向量字段 | vectorField | 用于为数据来源存储向量嵌入数据的字段的名称。 | 
| 元数据管理（第一个映射字段） | 文本字段 | textField | 用于存储来自数据来源的原始文本的字段的名称。 | 
| 元数据管理（第二个映射字段） | Bedrock 托管的元数据字段 | metadataField | 用于存储 Amazon Bedrock 管理的元数据的字段的名称。 | 

------
#### [ Amazon S3 Vectors ]

Amazon S3 Vectors 在 Amazon S3 中提供了经济实用的向量存储，可用于存储和查询向量数据。它可为大型向量数据集提供持久且弹性的存储，并具备亚秒级的查询性能。Amazon S3 Vectors 最适合查询频率较低的工作负载，在检索增强生成（RAG）和语义搜索应用程序中使用时，有助于降低成本。

Amazon S3 向量引入了 S3 向量存储桶，其中包含您可以根据语义和相似性查询的向量索引。它可用于实现亚秒级的查询响应时间并降低成本，同时能大规模存储、访问和查询向量数据，且无需预调配任何基础设施。在向量存储桶中，可以在向量索引中组织向量数据。您的矢量存储桶可以有多个向量索引。有关更多信息，请参阅《Amazon S3 用户指南》**中的 [Amazon S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors.html)。

**注意**  
你可以为所有 AWS 区域同时提供 Amazon Bedrock 和 Amazon S3 矢量的 Amazon S3 矢量创建知识库。有关 Amazon S3 Vectors 的区域可用性的信息，请参阅《Amazon S3 用户指南》**中的 [Amazon S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors.html)。
在 Amazon Bedrock 知识库中使用非常高的令牌计数和分层分块时，由于父子区块关系和分层上下文作为不可筛选的元数据存储在 Amazon S3 Vectors 中，您可能会超过元数据大小的最大限制。有关每个向量的元数据大小限制的更多信息，请参阅 *Amazon S3 用户指南*中的[限制和限制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-limitations.html)。有关分块策略的信息，请参阅[知识库的内容分块是如何运作的](kb-chunking.md)。
<a name="metadata-support"></a>
**元数据支持**  
您可以将元数据作为键值对附加到每个向量。默认情况下，元数据是可筛选的，可用于相似度搜索查询，以按日期、类别或用户首选项等条件进行筛选。

您还可以在创建矢量索引时将元数据配置为不可筛选。Amazon S3 向量索引支持字符串、布尔值和数字类型。

将 Amazon S3 矢量与 Amazon Bedrock 知识库配合使用时，每个向量最多可以附加 1 KB 的自定义元数据（包括可筛选和不可筛选的元数据）和 35 个元数据密钥。有关每个向量的元数据大小限制的更多信息，请参阅 *Amazon S3 用户指南*中的[限制和限制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-limitations.html)。

如果元数据超过这些限制，则在填充向量索引时，摄取任务将引发异常。有关更多信息，请参阅《Amazon S3 用户指南》**中的 [Amazon S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors.html)。

**所需的权限**  
确保您的 IAM 策略允许 Amazon Bedrock 访问 S3 向量存储桶中的向量索引。有关所需权限的更多信息，请参阅 [为 Amazon Bedrock 知识库创建服务角色](kb-permissions.md)。

**创建 S3 向量存储桶和索引**  
要将 Amazon S3 Vectors 用于知识库，您需要创建 S3 向量存储桶和向量索引。您可以使用 Amazon S3 控制台或 S AWS DK 创建矢量存储桶和索引。 AWS CLI有关详细说明，请参阅《Amazon S3 用户指南》**中的[创建向量索引](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-index-create.html)。

在 [Amazon S3 控制台](https://console.aws.amazon.com/s3/vector-buckets#)中创建向量存储桶和索引时，请注意以下事项。

1. 在创建 S3 向量存储桶时，请注意以下事项。
   + 提供唯一的**向量存储桶名称**。
   + （可选）Amazon S3 将自动通过**使用 Amazon S3 托管密钥的服务器端加密（SSE-S3）**对数据进行加密。您可以选择是使用此默认加密，还是使用密钥**管理服务密 AWS 钥进行服务器端加密 (SSE-KMS**)。
**注意**  
创建向量存储桶后，无法更改加密类型。

     有关 step-by-step说明，请参阅[使用 AWS KMS 密钥进行加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-bucket-encryption.html)。

1. 创建 S3 向量存储桶后，记下向量存储桶的 **Amazon 资源名称（ARN）**以便在创建知识库时使用。

1. 选择您创建的向量存储桶，然后创建向量索引。在创建向量索引时，请注意以下事项。
   + **向量索引名称** - 提供字段的名称（例如 **embeddings**）。
   + **维度** – 向量中的维度数。维度必须是介于 1 和 4096 之间的值。请参阅下表以根据所选嵌入模型确定向量应包含的维度数：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/knowledge-base-setup.html)
   + 
**注意**  
Amazon S3 Vectors 仅支持浮点型嵌入。不支持二进制嵌入。

     **距离指标** – 用于衡量向量之间相似性的指标。您可以使用**余弦**或**欧几里得**。

1. 展开**其他设置**，在**不可筛选的元数据**字段中提供任意不可筛选的元数据。

   可以配置最多 10 个不可筛选的元数据键。选择**添加键**，然后将 `AMAZON_BEDROCK_TEXT` 和 `AMAZON_BEDROCK_METADATA` 作为键添加。

1. 在**加密**下，选择**指定加密类型**。您可以选择**使用用于加密的存储桶设置**或覆盖向量索引的加密设置。如果您覆盖存储桶级别的设置，则可以选择将矢量索引的加密类型指定为**使用 AWS 密钥管理服务密钥的服务器端加密 (SSE-KMS) 或使用 **Amazon S3 托管密钥的默认服务器端加密** (SSE-S3)**。有关为矢量索引设置加密配置的更多信息，请参阅 [Amazon S3 矢量中的数据保护和加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-data-encryption.html)。

1. 在 “**标签（可选）**” 下，您可以将标签添加为键值对，以帮助使用 B AWS illing and Billing and Cost Management 跟踪和组织向量索引成本。输入 **Key (键)** 和 **Value (值)**。要添加另一个标签，请选择 **Add Tag (添加标签)**。您可以为一个向量索引输入最多 50 个标签。有关更多信息，请参阅[在 Amazon S3 向量索引中使用标签](https://docs.aws.amazon.com/console/s3/vector-index-create-with-tag)。

1. 创建向量索引并记下向量索引的 **Amazon 资源名称（ARN）**以便在创建知识库时使用。

**为 S3 向量存储桶创建知识库**  
收集这些信息后，可以继续[创建知识库](knowledge-base-create.md)。在使用 S3 向量存储桶创建知识库时，您需要提供向量存储桶的 ARN 和向量索引。向量索引将存储从数据来源生成的嵌入。下表汇总了您将输入您每条信息的位置：


| 字段 | 知识库设置中的相应字段（控制台） | 知识库设置中的相应字段 (API) | 说明 | 
| --- | --- | --- | --- | 
| 向量存储桶 ARN | S3 向量存储桶 ARN | vectorBucketArn | S3 向量存储桶的 Amazon 资源名称（ARN）。 | 
| 向量索引 ARN | S3 向量索引 ARN | vectorIndexARN | S3 向量存储桶的向量索引的 Amazon 资源名称（ARN）。 | 

------
#### [ Amazon Aurora (RDS) ]

1. 按照[使用 Aurora PostgreSQL 作为知识库](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.VectorDB.html)中的步骤创建 Amazon Aurora 数据库（DB）集群、架构和表。创建表时，请使用以下列和数据类型对表进行配置。您可以使用自己喜欢的列名来代替下表中列出的列名。记下您选择的列名，以便在知识库设置期间提供这些名称。

   您必须先提供这些字段，然后再创建知识库。这些字段在创建知识库后无法更新。
**重要**  
Aurora 集群必须与 AWS 账户 为 Amazon Bedrock 创建知识库的集群所在的集群相同。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/knowledge-base-setup.html)

1. 您必须在向量列和文本列上为文本和嵌入字段创建索引。如果您使用的是自定义元数据字段，则还必须在此列上创建 GIN 索引。GIN 索引可用于高效地搜索 jsonb 文档中的键值对以进行元数据筛选。有关更多信息，请参阅 *PostgreSQL 文档*中的 [jsonb 索引](https://www.postgresql.org/docs/current/datatype-json.html#JSON-INDEXING)。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/knowledge-base-setup.html)
**注意**  
为了提高混合搜索的准确性和英语内容的延迟，可以考虑使用 “英语” 词典而不是 “简单” 词典：  

   ```
   CREATE INDEX ON bedrock_integration.bedrock_kb USING gin (to_tsvector('english', chunks));
   ```

1. （可选）如果您[向文件添加了要筛选的元数据](kb-test-config.md)，我们建议您在自定义元数据字段中提供列名，以便将所有元数据存储在一个列中。在[数据摄取](kb-data-source-sync-ingest.md)期间，此列中将填入数据来源中的元数据文件包含的所有信息。如果您选择提供该字段，则必须在此列上创建 GIN 索引。
**注意**  
如果您经常对数值型元数据使用范围筛选条件，要优化性能，请为特定键创建索引。例如，如果您使用 `"lessThan": { "key": "year", "value": 1989 }` 等筛选条件，则在 `year` 键上创建表达式索引。有关更多信息，请参阅 *PostgreSQL 文档*中的[表达式索引](https://www.postgresql.org/docs/current/indexes-expressional.html)。  

   ```
   CREATE INDEX ON your_table ((custom_metadata->>'year')::double precision
   ```

   或者，如果您未提供此字段名称，则可以为文件中的每个元数据属性创建一个列，并指定数据类型（文本、数字或布尔值）。例如，如果数据来源中存在属性 `genre`，您应添加名为 `genre` 的列，并指定 `text` 作为数据类型。在[数据摄取](kb-data-source-sync-ingest.md)期间，会在这些单独的列中填入相应的属性值。

1. 按照使用 A [mazon Aurora 进行 AWS Secrets Manager 密码管理中的步骤为您的 Aurora 数据库集群配置密钥和 AWS Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html)。

1. 创建数据库集群并设置密钥后，记下以下信息。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/knowledge-base-setup.html)

------
#### [ Neptune Analytics graphs (GraphRAG) ]

1. 要通过 AWS 管理控制台在 Neptune Analytics 中创建图表和向量存储，请按照《Neptune Analytics 用户指南》**中的 [Neptune Analytics 中的向量索引](https://docs.aws.amazon.com/neptune-analytics/latest/userguide/vector-index.html)中描述的步骤操作。
**注意**  
要使用 Neptune GraphRAG，请创建一个带向量搜索索引的空 Neptune Analytics 图表。向量搜索索引只能在创建图表时创建。[在控制台中创建 Neptune Analytics 图表](https://docs.aws.amazon.com/neptune-analytics/latest/userguide/create-graph-using-console.html)时，您可以在此过程即将结束时，在**向量搜索设置**下指定索引维度。

   创建图表时，请注意以下事项：

   1. 为图表提供所选名称。

   1. 在 “**数据源**” 下，选择 “**创建空图**”，然后指定NCUs 要分配的 m-的数量。每个 m-NCU 拥有约 1 GiB 的内存容量，以及相应的计算和联网能力。
**注意**  
图表的容量稍后可进行修改。我们建议您从最小实例开始，之后再根据需要选择其他实例。

   1. 您可以保留默认的网络连接设置。Amazon Bedrock 将创建与知识库所关联的 Neptune Analytics 图表的网络连接。您无需为图表配置公有连接或私有端点。

   1. 在**向量搜索设置**下，选择**使用向量维度**，并指定每个向量中的维度数。
**注意**  
每个向量中的维度数必须与嵌入模型中的向量维度相匹配。请参阅下表确定向量应包含的维度数：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/knowledge-base-setup.html)

   1. 将所有其他设置保留为默认值并创建图表。

1. 创建图表后，单击它以记下**资源 ARN** 和**向量维度**以便在创建知识库时使用。在 Amazon Bedrock 中选择嵌入模型时，请确保所选模型的维度与您在 Neptune Analytics 图表上配置的**向量维度**相同。

创建向量索引后，您可以继续执行[创建知识库](knowledge-base-create.md)。下表汇总了您将输入您记下的每条信息的位置。


| 字段 | 知识库设置中的相应字段（控制台） | 知识库设置中的相应字段 (API) | 说明 | 
| --- | --- | --- | --- | 
| 图表 ARN | Neptune Analytics 图表 ARN | graphARN | Neptune Analytics 图表的 Amazon 资源名称（ARN）。 | 
| 元数据管理（第一个映射字段） | 文本字段名称 | textField | 用于存储来自数据来源的原始文本的字段的名称。您可以为此字段提供任何值，例如文本。 | 
| 元数据管理（第二个映射字段） | Bedrock 托管的元数据字段 | metadataField | 用于存储 Amazon Bedrock 管理的元数据的字段的名称。您可以为此字段提供任何值，例如元数据。 | 

------
#### [ Pinecone ]

**注意**  
如果您使用Pinecone，则表示您 AWS 同意授权代表您访问指定的第三方来源，以便向您提供矢量存储服务。您有责任遵守适用于使用和传输第三方服务数据的任何第三方条款。

有关在 Pinecone 中设置向量存储的详细文档，请参阅 [Pinecone as a knowledge base for Amazon Bedrock](https://docs.pinecone.io/docs/amazon-bedrock)。

请在设置向量存储时记下以下信息，创建知识库时需要填写这些信息：
+ **端点 URL** – 您的索引管理页面的端点 URL。
+ **凭证密钥 ARN** — 您在中创建的密钥的 Amazon 资源名称 (ARN) AWS Secrets Manager ，其中包含数据库用户的用户名和密码。
+ **（可选）凭证密钥 ARN 的客户自主管理型 KMS 密钥** - 如果您对凭证密钥 ARN 进行了加密，请提供 KMS 密钥，以便 Amazon Bedrock 对其进行解密。
+ **命名空间** –（可选）用于向数据库写入新数据的命名空间。有关更多信息，请参阅[使用命名空间](https://docs.pinecone.io/docs/namespaces)。

创建 Pinecone 索引时，还必须提供其他配置：
+ **文本字段名称** – Amazon Bedrock 应将原始块文本存储到的字段的名称。
+ **元数据字段名称** – Amazon Bedrock 应将源属性元数据存储到的字段的名称。

要访问您的 Pinecone 索引，您必须通过 AWS Secrets Manager向 Amazon Bedrock 提供您的 Pinecone API 密钥。

**为 Pinecone 配置设置密钥**

1. 按照[创建密钥中的步骤操作，将 AWS Secrets Manager 密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)钥设置为`apiKey`，将值设置为 API 密钥以访问您的Pinecone索引。

1. 要查找您的 API 密钥，请打开 [Pinecone 控制台](https://app.pinecone.io/)并选择 **API 密钥**。

1. 创建密钥后，请记下 KMS 密钥的 ARN。

1. 按照 [解密包含知识库的矢量存储的 AWS Secrets Manager 密钥的权限](encryption-kb.md#encryption-kb-3p) 中的步骤，向您的服务角色授予解密 KMS 密钥 ARN 的权限。

1. 稍后，当您创建知识库时，需要在**凭证密钥 ARN** 字段中输入该 ARN。

------
#### [ Redis 企业云 ]

**注意**  
如果您使用Redis Enterprise Cloud，则表示您 AWS 同意授权代表您访问指定的第三方来源，以便向您提供矢量存储服务。您有责任遵守适用于使用和传输第三方服务数据的任何第三方条款。

有关在 Redis Enterprise Cloud 中设置向量存储的详细文档，请参阅 [Integrating Redis Enterprise Cloud with Amazon Bedrock](https://docs.redis.com/latest/rc/cloud-integrations/aws-marketplace/aws-bedrock/)。

请在设置向量存储时记下以下信息，创建知识库时需要填写这些信息：
+ **端点 URL** – 数据库的公有端点 URL。
+ **向量索引名称** – 数据库的向量索引的名称。
+ **向量字段** – 用于存储向量嵌入数据的字段的名称。请参阅下表确定向量应包含的维度数：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/knowledge-base-setup.html)
+ **文本字段** – Amazon Bedrock 用来存储原始文本块的字段的名称。
+ **Bedrock 托管的元数据字段** – Amazon Bedrock 用来存储知识库相关元数据的字段的名称。

要访问您的 Redis Enterprise Cloud 集群，您必须通过 AWS Secrets Manager向 Amazon Bedrock 提供您的 Redis Enterprise Cloud 安全配置。

**为 Redis Enterprise Cloud 配置设置密钥**

1. 按照 [Transport Layer Security (TLS) (传输层安全性协议（TLS）)](https://docs.redis.com/latest/rc/security/database-security/tls-ssl/)中的步骤启用 TLS 以将您的数据库与 Amazon Bedrock 搭配使用。

1. 按照[创建 AWS Secrets Manager 密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)中的步骤操作。使用密钥中 Redis Enterprise Cloud 配置中的相应值设置以下密钥：
   + `username` – 用于访问 Redis Enterprise Cloud 数据库的用户名。要查找您的用户名，请在 [Redis 控制台](http://app.redislabs.com/)中查看数据库的**安全**部分。
   + `password` – 用于访问 Redis Enterprise Cloud 数据库的密码。要查找您的密码，请在 [Redis 控制台](http://app.redislabs.com/)中查看数据库的**安全**部分。
   + `serverCertificate` – 来自 Redis Cloud 证书颁发机构的证书的内容。按照[下载证书](https://docs.redis.com/latest/rc/security/database-security/tls-ssl/#download-certificates)中的步骤从 Redis 管理控制台下载服务器证书。
   + `clientPrivateKey` – 来自 Redis Cloud 证书颁发机构的证书的私钥。按照[下载证书](https://docs.redis.com/latest/rc/security/database-security/tls-ssl/#download-certificates)中的步骤从 Redis 管理控制台下载服务器证书。
   + `clientCertificate` – 来自 Redis Cloud 证书颁发机构的证书的公钥。按照[下载证书](https://docs.redis.com/latest/rc/security/database-security/tls-ssl/#download-certificates)中的步骤从 Redis 管理控制台下载服务器证书。

1. 创建密钥后，请记下它的 ARN。稍后，当您创建知识库时，需要在**凭证密钥 ARN** 字段中输入该 ARN。

------
#### [ MongoDB Atlas ]

**注意**  
如果您使用 MongoDB Atlas，则表示您同意 AWS 授权代表您访问指定的第三方来源，以便向您提供矢量存储服务。您有责任遵守适用于使用和传输第三方服务数据的任何第三方条款。

有关在 MongoDB Atlas 中设置向量存储的详细文档，请参阅[使用 MongoDB Atlas 和 Amazon Bedrock 启动完全托管式 RAG 工作流](https://www.mongodb.com/developer/products/atlas/rag-workflow-with-atlas-amazon-bedrock/)。

设置向量存储时，请记下以下信息，您在创建知识库时需要添加它们：
+ **端点 URL** – MongoDB Atlas 集群的端点 URL。
+ **数据库名称** – MongoDB Atlas 集群中数据库的名称。
+ **集合名称** – 数据库中数据集的名称。
+ **凭证密钥 ARN** — 您在中 AWS Secrets Manager 创建的密钥的亚马逊资源名称 (ARN)，其中包含您的 MongoDB Atlas 集群中数据库用户的用户名和密码。密钥必须包含名为 `username` 和 `password` 的键。
+ **（可选）凭证密钥 ARN 的客户自主管理型 KMS 密钥** - 如果您对凭证密钥 ARN 进行了加密，请提供 KMS 密钥，以便 Amazon Bedrock 对其进行解密。

创建 MongoDB Atlas 索引时，还必须为**字段映射**提供其他配置：
+ **向量索引名称** – 集合中 MongoDB Atlas 向量搜索索引的名称。
+ **向量字段名称** – Amazon Bedrock 应将向量嵌入数据存储到的字段的名称。
+ **文本字段名称** – Amazon Bedrock 应将原始块文本存储到的字段的名称。
+ **元数据字段名称** – Amazon Bedrock 应将源属性元数据存储到的字段的名称。
+ **（可选）文本搜索索引名称** – 有关集合的 MongoDB Atlas 搜索索引的名称。

**重要**  
如果您计划在 MongoDB Atlas 知识库中使用元数据筛选，则必须在向量索引中手动配置筛选条件。默认情况下，元数据筛选不起作用，需要在 MongoDB Atlas 向量索引配置中进行额外设置。

（可选）要让 Amazon Bedrock 连接到你的 MongoDB Atlas 集群 AWS PrivateLink，请参阅使用 Amazon Bedrock 使用 MongoDB Atlas 的 [RAG 工作流程](https://www.mongodb.com/developer/products/atlas/rag-workflow-with-atlas-amazon-bedrock/)。

------

# 在 Amazon Bedrock 知识库中使用 OpenSearch 托管集群所需的先决条件和权限
<a name="kb-osm-permissions-prereq"></a>

本节向您展示在使用 Amazon S OpenSearch ervice 托管集群创建自己的矢量数据库时如何配置权限。此配置必须在创建知识库之前执行。这些步骤假设您已经在 Amazon S OpenSearch ervice 中创建了域和向量索引。有关更多信息，请参阅《*亚马逊 OpenSearch 服务开发者指南》中的创建和管理 OpenSearch 服务*[域](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html)。

## 重要注意事项
<a name="kb-osm-permissions-prereq-considerations"></a>

以下是在亚马逊 OpenSearch 服务托管集群中使用 Amazon Bedrock 知识库时的一些关键注意事项。
+ 在 OpenSearch 托管集群中使用任何域资源之前，您需要配置某些 IAM 访问权限和策略。要将知识库与托管集群集成，在执行本节中的步骤之前，如果您的域有限制性访问策略，则必须授予所需的 IAM 访问权限，并配置基于资源的策略。我们还建议您配置精细的访问控制以缩小权限范围。
+ 在为知识库摄取数据时，如果遇到故障，则可能表示 OpenSearch 域容量不足，无法处理摄取速度。要解决此问题，请通过预调配更高的 IOPS（每秒进行输入/输出操作的次数）和提高吞吐量设置来增加域的容量。等待几分钟以预调配新容量，然后重试摄取过程。要验证问题是否已解决，可以在重试过程中监控性能。如果限制仍然存在，可能需要进一步调整容量以提高效率。有关更多信息，请参阅 [Amazon OpenSearch 服务最佳运营实践](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/bp.html)。

## 权限配置概述
<a name="kb-osm-permissions-prereq-overview"></a>

要将知识库与托管集群集成，您需要配置以下 IAM 访问权限和基于资源的策略。我们建议您启用精细访问策略，以进一步控制用户访问权限以及必须将其范围缩小到属性级别的粒度。

以下步骤简要概述了如何配置权限。

1. 

**创建和使用知识库服务角色**

   对于要配置的权限，尽管您仍然可以提供自己的自定义角色，但我们建议您为 Amazon Bedrock 知识库指定选项，以便为您创建知识库服务角色。

1. 

**配置基于资源的策略**

   该 OpenSearch 域支持基于资源的策略，这些策略决定了哪些委托人可以访问该域并对其执行操作。要与知识库一起使用，请确保为您的域正确配置基于资源的策略。

1. 

***（强烈推荐）*提供角色映射，以实施精细访问控制**

   虽然精细访问控制是可选的，但我们建议您将其启用，以控制在属性级别必须缩小权限范围的粒度。

## 配置 IAM 策略
<a name="kb-osm-permissions-iam"></a>

您的网域的访问策略必须授予您账户中的角色执行必需的 OpenSearch API 操作的权限。

如果您的域名有限制性访问策略，则可能需要按以下方式对其进行更新：
+ 它应授予对 Amazon Bedrock 服务的访问权限，并包括所需的 HTTP 操作：`GET`、`POST`、`PUT`、和 `DELETE`。
+ 它还必须为 Amazon Bedrock 授予对您的索引资源执行 `es:DescribeDomain` 操作的权限。这允许 Amazon Bedrock 知识库在配置知识库时执行所需的验证。

## （可选）精细访问控制
<a name="kb-osm-permissions-console-fgap"></a>

精细访问控制可以控制在属性级别必须缩小权限范围的粒度。您可以配置精细的访问策略，以授予由知识库创建的服务角色所需的读写权限。

要配置精细访问控制并提供角色映射，请执行以下操作：

1. 确保您创建的 OpenSearch 域已启用精细访问控制。

1. 创建 OpenSearch 用户界面（仪表板）（如果尚未创建）。这将用于配置角色映射。

1. 在 OpenSearch 控制面板中，创建 OpenSearch 角色并指定向量索引名称以及集群和索引权限。要添加权限，必须创建权限组，然后添加所需的权限，以授予对角色执行一系列操作（包括 `delete`、`search`、`get` 和 `index`）的访问权限。

1. 添加所需权限后，必须为后 OpenSearch 端角色输入知识库服务角色的 ARN。执行此步骤将完成您的知识库服务角色与角色之间的映射，然后授予 Amazon Bedrock 知识库访问 OpenSearch 域中的矢量索引并执行所需操作的权限。 OpenSearch 

**Topics**
+ [重要注意事项](#kb-osm-permissions-prereq-considerations)
+ [权限配置概述](#kb-osm-permissions-prereq-overview)
+ [配置 IAM 策略](#kb-osm-permissions-iam)
+ [（可选）精细访问控制](#kb-osm-permissions-console-fgap)
+ [为 OpenSearch 托管集群配置基于资源的策略](kb-osm-permissions-slr-rbp.md)
+ [使用精细的 OpenSearch 访问控制配置权限](kb-osm-permissions-console-fgap.md)

# 为 OpenSearch 托管集群配置基于资源的策略
<a name="kb-osm-permissions-slr-rbp"></a>

创建知识库时，您可以创建自己的自定义角色，也可以让 Amazon Bedrock 为您创建一个角色。如何配置权限取决于您是要创建新角色还是使用现有角色。如果您已有现有 IAM 角色，则必须确保您的域的访问策略不会阻止您账户中的角色执行必要的 OpenSearch API 操作。

如果您选择让 Amazon Bedrock 知识库为您创建 IAM 角色，则必须确保您的域的访问策略授予您账户中的角色执行所需的 OpenSearch API 操作的权限。如果您的域有限制性访问策略，则可能会阻止您的角色执行这些操作。下面显示了基于资源的限制性策略示例。

在这种情况下，您可以：
+ 使用现有的 IAM 角色创建知识库，您的 OpenSearch 域可以向该角色授予该角色的访问权限，以执行必要的操作。
+ 也可以让 Amazon Bedrock 为您创建一个新角色。在这种情况下，您必须确保域的访问策略必须授予您账户中的角色执行必要的 OpenSearch API 操作的权限。

以下各节显示了一个授予必要权限的 IAM 策略示例，以及如何更新域的访问策略，使其授予执行必要 OpenSearch API 操作的权限。

**Topics**
+ [IAM 基于身份和基于资源的策略示例](#kb-osm-permissions-iam)
+ [创建 Amazon Bedrock 知识库服务角色](#kb-osm-permissions-slr)
+ [更新基于资源的策略](#kb-osm-permissions-console-rbp)

## IAM 基于身份和基于资源的策略示例
<a name="kb-osm-permissions-iam"></a>

本节提供身份策略示例和基于资源的策略，在与 Amazon Bedrock 知识库集成时，您可以为 OpenSearch 域配置这些策略。您必须授予 Amazon Bedrock 权限，才能对您为知识库提供的索引执行这些操作。


****  

| Action | 资源 | 说明 | 
| --- | --- | --- | 
| es:ESHttpPost | arn:<partition>:es:<region>:<accountId>:domain/<domainName>/<indexName> | 用于在索引中插入信息 | 
| es:ESHttpGet |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/kb-osm-permissions-slr-rbp.html)  | 用于从索引中搜索信息。此操作已在 domain/index 级别和 domain/index/\$1 级别上进行了配置。在 domain/index 级别，它可以获取有关索引的高级详细信息，例如引擎类型。要检索存储在索引中的详细信息，需要 domain/index/\$1 级别的权限。 | 
| es:ESHttpHead |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/kb-osm-permissions-slr-rbp.html)  | 用于从索引中获取信息。此操作已在 domain/index 级别和 domain/index/\$1 级别上进行了配置，以防需要从更高级别获取信息，例如是否存在特定的索引。 | 
| es:ESHttpDelete | arn:<partition>:es:<region>:<accountId>:domain/<domainName>/<indexName> | 用于删除索引中的信息 | 
| es:DescribeDomain | arn:<partition>:es:<region>:<accountId>:domain/<domainName> | 用于对域执行验证，例如使用的引擎版本。 | 

### 基于身份的策略示例
<a name="kb-osm-permissions-idpolicy"></a>

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "OpenSearchIndexAccess",
            "Effect": "Allow",
            "Action": [
                "es:ESHttpGet",
                "es:ESHttpPost",
                "es:ESHttpPut",
                "es:ESHttpDelete"
            ],
            "Resource": [
                "arn:aws:es:us-east-1:123456789012:domain/domainName/indexName/*"
            ]
        },
        {
            "Sid": "OpenSearchIndexGetAccess",
            "Effect": "Allow",
            "Action": [
                "es:ESHttpGet",
                "es:ESHttpHead"
            ],
            "Resource": [
            "arn:aws:es:us-east-1:123456789012:domain/domainName/indexName"
            ]
        },
        {
            "Sid": "OpenSearchDomainValidation",
            "Effect": "Allow",
            "Action": [
                "es:DescribeDomain"
            ],
            "Resource": [
            "arn:aws:es:us-east-1:123456789012:domain/domainName"
            ]
        }
    ]
}
```

------

### 基于资源的策略示例
<a name="kb-osm-permissions-rbp"></a>

**注意**  
确保已创建服务角色，以便在基于资源的策略中使用。

## 创建 Amazon Bedrock 知识库服务角色
<a name="kb-osm-permissions-slr"></a>

创建知识库时，可以选择创建和使用新服务角色。本部分介绍如何创建 Amazon Bedrock 知识库服务角色。通过将基于资源的策略和精细的访问策略映射到该角色，它将授予 Amazon Bedrock 向该域发出请求的权限。 OpenSearch 

**指定 Amazon Bedrock 知识库服务角色：**

1. 在 Amazon Bedrock 控制台中，请转至[知识库](https://console.aws.amazon.com/bedrock/home#/knowledge-bases)。

1. 选择**创建**，然后选择**带有向量存储的知识库**。

1. 请选择**创建和使用新的服务角色**。您可以使用默认角色名称，也可以提供自定义角色名称，Amazon Bedrock 将自动为您创建知识库服务角色。

1. 继续通过控制台配置数据来源以及解析和分块策略。

1. 选择 Embeddings 模型，然后在 **“选择现有矢量存储”** 下选择 **Amazon OpenSearch 托管集群**。

**重要**  
在继续创建知识库之前，请完成以下步骤以配置基于资源的策略和精细访问策略。有关创建知识库的详细步骤，请参阅[在 Amazon Bedrock 知识库中通过连接到数据来源创建知识库](knowledge-base-create.md)。

## 更新基于资源的策略
<a name="kb-osm-permissions-console-rbp"></a>

如果您的 OpenSearch 域名有限制性访问策略，则可以按照本页上的说明更新基于资源的策略。这些权限允许知识库使用您提供的索引，并检索 OpenSearch 域定义以对域执行所需的验证。

**要从中配置基于资源的策略 AWS 管理控制台**

1. 前往[亚马逊 OpenSearch 服务控制台](https://console.aws.amazon.com/aos/home?region=us-east-1#opensearch/dashboard)。

1. 转到您创建的域，然后转到配置基于资源的策略的**安全配置**。

1. 在 **JSON** 选项卡中编辑策略，然后更新与[基于资源的策略示例](#kb-osm-permissions-rbp)类似的策略。

1. 现在，您可以返回 Amazon Bedrock 控制台，按照[托管集群知识库设置中所述提供 OpenSearch 域和索引的](knowledge-base-setup.md#knowledge-base-setup-osm)详细信息。

# 使用精细的 OpenSearch 访问控制配置权限
<a name="kb-osm-permissions-console-fgap"></a>

虽然是可选的，但我们强烈建议您为域名启用精细的访问控制。 OpenSearch 使用精细的访问控制，您可以使用基于角色的访问控制，这样您就可以创建具有特定权限的 OpenSearch 角色并将其映射到知识库服务角色。映射会向您的知识库授予访问 OpenSearch 域和索引并对其执行操作所需的最低权限。

要配置和使用精细访问控制，请执行以下操作：

1. 确保您使用的 OpenSearch 域名已启用细粒度访问控制。

1. 对于使用精细访问控制的网域，请以角色的形式使用范围缩小策略配置权限。 OpenSearch

1. 对于要为其创建角色的域，可添加映射到知识库服务角色的角色。

以下步骤说明如何配置您的 OpenSearch 角色并确保角色和知识库服务 OpenSearch 角色之间的映射正确。

**创建 OpenSearch 角色并配置权限**  
启用精细访问控制并将 Amazon Bedrock 配置为连接到 OpenSearch 服务后，您可以使用控制 OpenSearch 面板链接为每个域配置权限。 OpenSearch 

**要为域配置权限以允许访问 Amazon Bedrock，请执行以下操作：**

1. 打开您要使用的 OpenSearch 域名的 OpenSearch 控制面板。要找到指向仪表板的链接，请转到您在 OpenSearch 服务控制台中创建的域。对于正在运行的域名 OpenSearch，URL 的格式为`domain-endpoint/_dashboards/`。有关更多信息，请参阅 *Amazon OpenSearch 服务开发者指南*中的[控制面板](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/dashboards.html)。

1. 在 “ OpenSearch 控制面板” 中，选择 “**安全**”，然后选择 “**角色**”。

1. 选择**创建角色**。

1. 为角色提供任何名称，例如 **kb\$1opensearch\$1role**。

1. 在**集群权限**下，添加以下权限。
   + `indices:data/read/msearch`
   + `indices:data/write/bulk*`
   + `indices:data/read/mget*`

1. 在**索引权限**下，提供向量索引的名称。选择**创建新权限组**，然后选择**创建新操作组**。将以下权限添加到操作组，例如 `KnowledgeBasesActionGroup`。将以下权限添加到操作组。
   + `indices:admin/get`
   + `indices:data/read/msearch`
   + `indices:data/read/search`
   + `indices:data/write/index`
   + `indices:data/write/update`
   + `indices:data/write/delete`
   + `indices:data/write/delete/byquery`
   + `indices:data/write/bulk*`
   + `indices:admin/mapping/put`
   + `indices:data/read/mget*`  
![\[要在 OpenSearch 仪表板中创建的用于添加群集和索引权限的操作组。\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/kb/kb-test-os-action-groups.png)

1. 选择 “**创建**” 以创建 OpenSearch 角色。

下面显示了一个添加了权限的示例 OpenSearch 角色。

![\[OpenSearch 仪表板中添加了权限的示例 OpenSearch 角色。\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/kb/kb-test-os-dashboards-permissions.png)


**创建映射到知识库服务角色的角色**

1. 确定需要映射的 IAM 角色。
   + 如果您创建了自己的自定义 IAM 角色，则可以从 IAM 控制台复制该角色的 ARN。
   + 如果允许知识库为您创建角色，则可以在创建知识库时记下角色 ARN，然后复制此角色 ARN。

1. 打开您要使用的 OpenSearch 域名的 OpenSearch 控制面板。该 URL 的格式为 `domain-endpoint/_dashboards/`。

1. 在导航窗格中，选择**安全性**。

1. 从列表中搜索刚创建的角色，例如 **kb\$1opensearch\$1role**，然后将其打开。

1. 在**映射的用户**选项卡上，选择**管理映射**。

1. 在**后端角色**部分，输入知识库的 AWS 托管 IAM 角色的 ARN。根据您是创建自己的自定义角色还是让知识库为您创建角色，从 IAM 控制台或 Amazon Bedrock 控制台复制角色 ARN 信息，然后在控制台中为**后端角色**输入该信息。 OpenSearch 以下为示例。

   ```
   arn:aws:iam::<accountId>:role/service-role/<knowledge-base-service-role>
   ```

1. 选择**映射**。

   知识库服务角色现在可以连接到该 OpenSearch 角色并对域和索引执行所需的操作。

# 在 Amazon Bedrock 知识库中通过连接到数据来源创建知识库
<a name="knowledge-base-create"></a>

通过连接到数据来源来创建知识库时，您需要设置或指定以下内容：
+ 定义和标识知识库的一般信息
+ 具有知识库权限的服务角色。
+ 知识库的配置，包括在转换来自数据来源的数据时使用的嵌入模型、在其中存储嵌入的服务的存储配置，以及存储多模态数据的 S3 位置（可选）。

**注意**  
您无法以根用户身份创建知识库。在开始这些步骤之前，请使用 IAM 用户登录。

展开与您的使用案例相对应的部分：

## 使用控制台
<a name="knowledge-base-create-console"></a>

**设置知识库**

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

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

1. 在**知识库**部分中，选择“创建”按钮，然后选择使用向量存储创建知识库。

1. （可选）更改默认名称并为知识库提供描述。

1. 选择一个向 Amazon Bedrock 提供访问其他所需AWS服务的权限的 AWS Identity and Access Management (IAM) 角色。您可以让 Amazon Bedrock 创建服务角色，也可以选择您[已为 Neptune Analytics 创建的自定义角色](kb-permissions.md#kb-permissions-neptune)。

1. 选择要将知识库连接到的数据来源。

1. （可选）向知识库添加标签。有关更多信息，请参阅 [标记 Amazon Bedrock 资源](tagging.md)。

1. （可选）配置要将知识库的活动日志传输到的服务。

1. 转到下一部分，然后按照[将数据来源连接到知识库](data-source-connectors.md)中的步骤配置数据来源。

1. 在**嵌入模型**部分中，执行以下操作：

   1. 选择嵌入模型以便将您的数据转换为向量嵌入。对于多模态数据（图像、音频和视频），请选择多模态嵌入模型，例如 Amazon Titan 多模态嵌入 G1 或 Cohere Embed v3。
**注意**  
使用 Amazon Titan 多模式嵌入式 G1 时，必须提供 S3 内容存储桶，并且只能使用默认解析器。该模型针对图像搜索用例进行了优化。有关在多式联运方式之间进行选择的全面指导，请参阅[为多模式内容建立知识库](kb-multimodal.md)。

   1. （可选）展开**其它配置**部分以查看以下配置选项（并非所有模型都支持所有配置）：
      + **嵌入类型**：是将数据转换为浮点（float32）向量嵌入（精度较高，但成本较高），还是转换为二进制向量嵌入（精度较低，但成本较低）。要了解哪些嵌入模型支持二进制向量，请参阅[支持的嵌入模型](knowledge-base-supported.md)。
      + **向量维度** – 更高的值会提高准确率，但会增加成本和延迟。

1. 在**向量数据库**部分，执行以下操作：

   1. 选择向量存储来存储将用于查询的向量嵌入。您有以下选项：
      + **快速创建新的向量存储** – 选择一个可用的向量存储，供 Amazon Bedrock 创建向量。您也可以选择为矢量存储配置AWS KMS密钥加密。
**注意**  
使用此选项时，Amazon Bedrock 会自动处理每个向量存储的元数据放置。
        + **Amazon OpenSearch Serverless** — Amazon Bedrock 知识库创建了亚马逊 OpenSearch 无服务器矢量搜索集合和索引，并为您配置必填字段。
        + **Amazon Aurora PostgreSQL 无服务器** – Amazon Bedrock 设置了 Amazon Aurora PostgreSQL 无服务器向量存储。此过程从 Amazon S3 存储桶中获取非结构化文本数据，将其转换为文本块和向量，然后将转换后的对象存储在 PostgreSQL 数据库中。有关更多信息，请参阅[为 Amazon Bedrock 快速创建 Aurora PostgreSQL 知识库](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.quickcreatekb.html)。
        + **Amazon Neptune Analytics 分析数据库引擎** – Amazon Bedrock 使用检索增强生成（RAG）技术并与图表相结合，来增强生成式人工智能应用程序，使得最终用户能够获得更准确、更全面的响应。
        + **Amazon S3 Vectors** – Amazon Bedrock 知识库创建 S3 向量存储桶和向量索引，用于存储从您的数据来源生成的嵌入内容。

          你可以为所有AWS 区域同时提供 Amazon Bedrock 和 Amazon S3 矢量的 Amazon S3 矢量创建知识库。有关更多信息，请参阅《Amazon S3 用户指南》**中的 [Amazon S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors.html)。
**注意**  
将 Amazon S3 矢量与 Amazon Bedrock 知识库配合使用时，每个向量最多可以附加 1 KB 的自定义元数据（包括可筛选和不可筛选的元数据）和 35 个元数据密钥。有关元数据限制的详细信息，请参阅[元数据支持](knowledge-base-setup.md#metadata-support)中的[将您创建的向量存储用于知识库的先决条件](knowledge-base-setup.md)。
      + **选择已创建的向量存储** – 选择支持的向量存储，然后在向量索引中标识向量字段名称和元数据字段名称。有关更多信息，请参阅 [将您创建的向量存储用于知识库的先决条件](knowledge-base-setup.md)。
**注意**  
如果您的数据源是 Confluence SharePoint、Microsoft 或 Salesforce 实例，则唯一支持的矢量存储服务是 Amazon Serverless。 OpenSearch 

   1. （可选）展开**其他配置**部分并修改所有相关配置。

1. 如果您的数据来源包含图像，请指定一个 Amazon S3 URI，用于存储解析器将从**多模态存储目标**中的数据内提取的图像。图像可以在查询期间返回。您也可以选择客户托管密钥而不是默认密钥AWS 托管式密钥来加密您的数据。
**注意**  
只有 Amazon S3 和自定义数据来源支持多模态数据。
**注意**  
使用多模态嵌入模型时：  
Amazon Titan 多模态嵌入 G1 需要 S3 内容存储桶，并且使用默认解析器最适合处理仅限图像的数据集
Cohere Embed v3 支持混合文本和图像数据集，可与任何解析器配置一起使用
对于图像搜索用例，由于令牌限制，请避免在 Titan G1 中使用 Bedrock 数据自动化 (BDA) 或基础模型解析器
多模式存储目标会创建文件副本以供检索，这可能会产生额外的存储费用

1. 选择**下一步**并查看知识库的详细信息。在继续创建知识库之前，您可以编辑任何部分。
**注意**  
创建知识库所用的时间取决于您的特定配置。知识库创建完成后，知识库的状态将更改为“已就绪”或“可用”。  
知识库准备就绪并可供使用后，您可以首次同步数据来源，并在想要更新数据来源时进行同步。在控制台中选择知识库，然后在数据来源概述部分中选择**同步**。

## 使用 API
<a name="knowledge-base-create-api"></a>

要创建知识库，请使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) 请求。

**注意**  
如果您希望让 Amazon Bedrock 为您创建和管理向量存储，请使用控制台。有关更多信息，请展开本主题中的**使用控制台**部分。

以下字段是必填字段：


****  

| 字段 | Basic description | 
| --- | --- | 
| name | 知识库的名称。 | 
| roleArn | [Amazon Bedrock 知识库服务角色](kb-permissions.md)的 ARN。 | 
| knowledgeBaseConfiguration | 包含知识库的配置。请参阅以下详细信息。 | 
| storageConfiguration | （仅在连接到非结构化数据来源时才需要）。包含您选择的数据来源服务的配置。 | 

以下字段是可选字段：


****  

| 字段 | 使用案例 | 
| --- | --- | 
| 描述 | 知识库的描述。 | 
| clientToken | 用于确保 API 请求仅完成一次。有关更多信息，请参阅[确保幂等性](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html)。 | 
| 标签 | 将标签与流相关联。有关更多信息，请参阅 [标记 Amazon Bedrock 资源](tagging.md)。 | 

在映射到[KnowledgeBaseConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_KnowledgeBaseConfiguration.html)对象的`knowledgeBaseConfiguration`字段中，在`type`字段`VECTOR`中指定并包含一个[VectorKnowledgeBaseConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorKnowledgeBaseConfiguration.html)对象。在对象中包含以下字段：
+ `embeddingModelArn` – 要使用的嵌入模型的 ARN。
+ `embeddingModelConfiguration` – 嵌入模型的配置。要查看您可以为每种支持的模型指定的可能值，请参阅 [Amazon Bedrock 知识库支持的模型和区域](knowledge-base-supported.md)。
+ （如果您计划在知识库中包含多模式数据，包括图像、数字、图表或表格）`supplementalDataStorageConfiguration`— 映射到[SupplementalDataStorageLocation](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_SupplementalDataStorageLocation.html)对象，您可以在其中指定存储提取数据的 S3 位置。有关更多信息，请参阅 [数据来源的解析选项](kb-advanced-parsing.md)。

在映射到[StorageConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StorageConfiguration.html)对象的`storageConfiguration`字段中，指定您计划在`type`字段中连接的矢量存储，并包括与该矢量存储对应的字段。有关您需要提供的信息的详细信息，请参阅中的每种矢量存储配置类型。[StorageConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StorageConfiguration.html)

以下是创建连接到 Amazon OpenSearch Serverless 集合的知识库的示例请求。来自互联数据源的数据将通过 Amazon 转换为二进制向量嵌入Titan Text Embeddings V2，解析器提取的多模数据设置为存储在名为的存储桶中。*MyBucket*

```
PUT /knowledgebases/ HTTP/1.1
Content-type: application/json

{
   "name": "MyKB",
   "description": "My knowledge base",
   "roleArn": "arn:aws:iam::111122223333:role/service-role/AmazonBedrockExecutionRoleForKnowledgeBase_123",
   "knowledgeBaseConfiguration": {
      "type": "VECTOR",
      "vectorKnowledgeBaseConfiguration": { 
         "embeddingModelArn": "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-embed-text-v2:0",
         "embeddingModelConfiguration": { 
            "bedrockEmbeddingModelConfiguration": { 
               "dimensions": 1024,
               "embeddingDataType": "BINARY"
            }
         },
         "supplementalDataStorageConfiguration": { 
            "storageLocations": [ 
               { 
                  "s3Location": { 
                     "uri": "arn:aws:s3:::MyBucket"
                  },
                  "type": "S3"
               }
            ]
         }
      }
   },
   "storageConfiguration": { 
      "opensearchServerlessConfiguration": { 
         "collectionArn": "arn:aws:aoss:us-east-1:111122223333:collection/abcdefghij1234567890",
         "fieldMapping": { 
            "metadataField": "metadata",
            "textField": "text",
            "vectorField": "vector"
         },
         "vectorIndexName": "MyVectorIndex"
      }
   }
}
```

**Topics**
+ [将数据来源连接到知识库](data-source-connectors.md)
+ [自定义数据来源的摄取](kb-data-source-customize-ingestion.md)
+ [为知识库设置安全配置](kb-create-security.md)

# 将数据来源连接到知识库
<a name="data-source-connectors"></a>

完成知识库的配置后，您需要将支持的数据来源连接到知识库。

Amazon Bedrock 知识库支持通过查询引擎连接到非结构化数据来源或结构化数据存储。选择一个主题以了解如何连接到相应类型的数据来源：

**多模式内容支持**  
只有 Amazon S3 和自定义数据源支持多模式内容（图像、音频和视频文件）。其他数据源类型将在摄取期间跳过多模态文件。有关使用多式联运内容的全面指导，请参阅[为多模式内容建立知识库](kb-multimodal.md)。

要了解如何使用 Amazon Bedrock 控制台连接到数据来源，请在本页面底部选择与您的数据来源类型对应的主题：

要使用 Amazon Bedrock API 连接到数据源，请使用亚马逊 B [edrock 运行时终端节点代理](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)发送[CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html)请求。

以下字段是必填字段：


****  

| 字段 | Basic description | 
| --- | --- | 
| knowledgeBaseId | 知识库的 ID。 | 
| name | 知识库的名称。 | 
| dataSourceConfiguration | 在 type 字段中指定数据来源服务或类型，并添加相应的字段。有关特定于服务的配置的更多详细信息，请从本页面底部的主题中选择该服务的主题。 | 

以下字段是可选字段：


****  

| 字段 | 使用案例 | 
| --- | --- | 
| 描述 | 提供数据来源的描述。 | 
| vectorIngestionConfiguration | 包含用于自定义摄取过程的配置。有关更多信息，请参阅 [自定义数据来源的摄取](kb-data-source-customize-ingestion.md)。 | 
| dataDeletionPolicy | 指定对向量存储中的向量嵌入执行 RETAIN 还是 DELETE 操作。 | 
| serverSideEncryption配置 | 要使用客户自主管理型密钥在数据同步期间加密临时数据，请在 kmsKeyArn 字段中指定其 ARN。 | 
| clientToken | 用于确保 API 请求仅完成一次。有关更多信息，请参阅[确保幂等性](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html)。 | 

选择一个主题以详细了解服务及其配置方式。

**Topics**
+ [将知识库连接到 Amazon S3](s3-data-source-connector.md)
+ [连接 Confluence 以获取您的知识库](confluence-data-source-connector.md)
+ [连接 Micros SharePoint oft 获取知识库](sharepoint-data-source-connector.md)
+ [连接到 Salesforce 来为知识库摄取内容](salesforce-data-source-connector.md)
+ [为知识库爬取网页](webcrawl-data-source-connector.md)
+ [将知识库连接到自定义数据来源](custom-data-source-connector.md)

# 将知识库连接到 Amazon S3
<a name="s3-data-source-connector"></a>

Amazon S3 是一种对象存储服务，可将数据以对象形式存储在存储桶中。您可以使用适用于亚马逊 Bedrock 的[AWS管理控制台或 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html)API（参见[支持 SDKs ](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html)的 Amazon Bedrock 和），连接到您的 Amazon S3 存储桶，以](https://console.aws.amazon.com/bedrock/home)获取您的亚马逊 Bedrock 知识库。AWS CLI

**多模式内容支持**  
Amazon S3 数据源支持多模式内容，包括图像、音频和视频文件。有关使用多式联运内容的全面指导，请参阅[为多模式内容建立知识库](kb-multimodal.md)。

您可以使用 Amazon S3 控制台或 API，将小批量文件上传到 Amazon S3 存储桶。或者，您可以使用将多个文件连续上传[AWS DataSync](https://docs.aws.amazon.com/datasync/latest/userguide/create-s3-location.html)到 S3，并按计划从本地、边缘、其他云或AWS存储中传输文件。

目前，仅支持通用型 S3 存储桶。

对可爬取的文件数和文件的 MB 数是有限制的。请参阅 [Quotas for knowledge bases](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)。

**Topics**
+ [支持的功能](#supported-features-s3-connector)
+ [先决条件](#prerequisites-s3-connector)
+ [连接配置](#configuration-s3-connector)

## 支持的功能
<a name="supported-features-s3-connector"></a>
+ 文档元数据字段
+ 包含前缀
+ 对已添加、更新、删除的内容进行增量内容同步

## 先决条件
<a name="prerequisites-s3-connector"></a>

**在 Amazon S3 中，请确保：**
+ 请记下 Amazon S3 存储桶 URI、Amazon 资源名称 (ARN) 以及该存储桶拥有者的 AWS 账户 ID。您可以在 Amazon S3 控制台的属性部分中找到 URI 和 ARN。您的存储桶必须与 Amazon Bedrock 知识库位于同一区域。您必须拥有访问存储桶的权限。

**在您的AWS账户中，请确保**：
+ 在知识库的 AWS Identity and Access Management (IAM) role/permissions 策略中包括连接数据源的必要权限。有关将此数据源添加到知识库IAM角色所需的权限的信息，请参阅[访问数据源的权限](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html#kb-permissions-access-ds)。

**注意**  
如果您使用控制台，则可以在创建知识库的步骤中为您创建具有所有所需权限的IAM角色。配置数据来源和其他配置后，具有所有必需权限的 IAM 角色将应用于特定知识库。

## 连接配置
<a name="configuration-s3-connector"></a>

要连接到 Amazon S3 存储桶，您必须提供必要的配置信息，以便 Amazon Bedrock 可以访问和爬取您的数据。您还必须遵循[先决条件](#prerequisites-s3-connector)。

本部分包含此数据来源的配置示例。

有关包含筛选条件、文档元数据字段、增量同步以及它们的工作方式的更多信息，请选择以下相应内容：

### 文档元数据字段
<a name="ds-s3-metadata-fields"></a>

您可以包含一个单独的文件，用于指定 Amazon S3 数据源中每个文件的文档元 fields/attributes 数据，以及在将数据源索引到矢量存储时是否将其包含在嵌入中。例如，您可以创建以下格式的文件，将其命名*fileName.extension.metadata.json*并上传到您的 S3 存储桶。

```
{
  "metadataAttributes": {
    "company": {
      "value": {
        "type": "STRING",
        "stringValue": "BioPharm Innovations"
      },
      "includeForEmbedding": true
    },
    "created_date": {
      "value": {
        "type": "NUMBER",
        "numberValue": 20221205
      },
      "includeForEmbedding": true
    },
    "author": {
      "value": {
        "type": "STRING",
        "stringValue": "Lisa Thompson"
      },
      "includeForEmbedding": true
    },
    "origin": {
      "value": {
        "type": "STRING",
        "stringValue": "Overview"
      },
      "includeForEmbedding": true
    }
  }
}
```

元数据文件必须使用与其关联的来源文档文件相同的名称，并在文件名的末尾附加 `.metadata.json`。元数据文件必须与 Amazon S3 存储桶中的来源文件存储在同一文件夹或同一位置。该文件不得超过 10 KB 的限制。有关支持 attribute/field 的数据类型和可以应用于元数据字段的筛选运算符的信息，请参阅[元数据和筛选](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html)。

### 包含前缀
<a name="ds-s3-inclusion-exclusion"></a>

您可以指定一个包含前缀（即 Amazon S3 路径前缀），在其中使用 S3 文件或文件夹（而非整个存储桶）来创建 S3 数据来源连接器。

### 增量同步
<a name="ds-s3-incremental-sync"></a>

每次您的数据源与知识库同步时，数据源连接器都会抓取新内容、修改内容和已删除内容。 Amazon Bedrock可以使用数据源的机制来跟踪内容更改并抓取自上次同步以来更改的内容。首次将数据来源与知识库同步时，默认爬取所有内容。

要将您的数据源与知识库同步，请使用 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html)API 或在控制台中选择您的知识库，然后在数据源概述部分中选择**同步**。

**重要**  
您从数据来源同步的所有数据都可供有检索数据的 `bedrock:Retrieve` 权限的任何人使用。这也可以包括任何具有受控数据来源权限的数据。有关更多信息，请参阅[知识库权限](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html)。

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

**将 Amazon S3 存储桶连接到知识库**

1. 按照[在 Amazon Bedrock 知识库中通过连接到数据来源创建知识库](knowledge-base-create.md)中的步骤操作，然后选择 **Amazon S3** 作为数据来源。

1. 提供数据来源的名称。

1. 指定 Amazon S3 存储桶是在您的当前AWS账户中还是其他AWS账户中。您的存储桶必须与知识库位于同一区域。

1. （可选）如果 Amazon S3 存储桶是使用 KMS 密钥加密的，请添加该密钥。有关更多信息，请参阅 [解密您在 Amazon S3 中的数据源的 AWS KMS 密钥的权限](encryption-kb.md#encryption-kb-ds)。

1. （可选）在**内容解析和分块**部分，您可以自定义如何对数据进行解析和分块。要了解有关这些定制设置的更多信息，请参阅以下资源：
   + 有关解析选项的更多信息，请参阅[数据来源的解析选项](kb-advanced-parsing.md)。
   + 有关分块策略的更多信息，请参阅[知识库的内容分块是如何运作的](kb-chunking.md)。
**警告**  
连接到数据来源后，就无法更改分块策略。
   + 有关如何自定义数据分块和使用 Lambda 函数处理元数据的详细信息，请参阅[使用自定义转换 Lambda 函数定义数据的摄取方式](kb-custom-transformation.md)。

1. 在**高级设置**部分，您可以选择进行以下配置：
   + **用于临时数据存储的 KMS 密钥。**— 您可以加密临时数据，同时使用默认密钥AWS 托管式密钥或您自己的 KMS 密钥将数据转换为嵌入内容。有关更多信息，请参阅 [加密数据提取期间的临时数据存储](encryption-kb.md#encryption-kb-ingestion)。
   + **数据删除策略**：您可以删除数据来源的向量嵌入（这些向量嵌入默认存储在向量存储中），也可以选择保留向量存储数据。

1. 继续选择嵌入模型和向量存储。要查看剩余步骤，请在连接数据来源后返回[在 Amazon Bedrock 知识库中通过连接到数据来源创建知识库](knowledge-base-create.md)，然后继续执行该步骤。

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

以下是 Amazon Bedrock 知识库连接到 Amazon S3 的配置示例。您可以使用带有AWS CLI或支持的软件开发工具包（例如 Python）的 API 来配置数据源。调用后 [CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html)，您可以调[CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html)用创建数据源，其中包含您的连接信息`dataSourceConfiguration`。

要了解可以通过添加可选的 `vectorIngestionConfiguration` 字段来应用于摄取的定制设置，请参阅[自定义数据来源的摄取](kb-data-source-customize-ingestion.md)。

**AWS Command Line Interface**

```
aws bedrock-agent create-data-source \
 --name "S3-connector" \
 --description "S3 data source connector for Amazon Bedrock to use content in S3" \
 --knowledge-base-id "your-knowledge-base-id" \
 --data-source-configuration file://s3-bedrock-connector-configuration.json \
 --data-deletion-policy "DELETE" \
 --vector-ingestion-configuration '{"chunkingConfiguration":{"chunkingStrategy":"FIXED_SIZE","fixedSizeChunkingConfiguration":{"maxTokens":100,"overlapPercentage":10}}}'
                    
s3-bedrock-connector-configuration.json
{
    "s3Configuration": {
	    "bucketArn": "arn:aws:s3:::bucket-name",
	    "bucketOwnerAccountId": "000000000000",
	    "inclusionPrefixes": [
	        "documents/"
	    ]
    },
    "type": "S3"	
}
```

------

# 连接 Confluence 以获取您的知识库
<a name="confluence-data-source-connector"></a>

Atlassian Confluence 是一款协作式工作管理工具，专为共享、存储和处理项目规划、软件开发和产品管理而设计。您可以使用[适用于 Amazon Bedrock 的 AWS 管理控制台](https://console.aws.amazon.com/bedrock/home)或 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) API 连接 Confluence 实例，来获取 Amazon Bedrock 知识库（请参阅 Amazon Bedrock [支持的 SDK 和 AWS CLI](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html)）。

**注意**  
Confluence 数据来源连接器目前为预览版，可能随时发生变化。  
Confluence 数据来源不支持多模态数据，例如表、曲线图、图表或其他图像。

Amazon Bedrock 支持连接 Confluence Cloud 实例。目前，只有 Amazon OpenSearch 无服务器向量存储可用于此数据来源。

对可爬取的文件数和文件的 MB 数是有限制的。请参阅 [Quotas for knowledge bases](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)。

**Topics**
+ [支持的特征](#supported-features-confluence-connector)
+ [先决条件](#prerequisites-confluence-connector)
+ [连接配置](#configuration-confluence-connector)

## 支持的特征
<a name="supported-features-confluence-connector"></a>
+ 自动检测主要文档字段
+ 包含/排除内容筛选条件
+ 对已添加、更新、删除的内容进行增量内容同步
+ OAuth 2.0 身份验证，使用 Confluence API 令牌进行身份验证

## 先决条件
<a name="prerequisites-confluence-connector"></a>

**在 Confluence 中，请确保**：
+ 记下 Confluence 实例 URL。例如，Confluence Cloud 的 URL 为 *https://example.atlassian.net*。Confluence Cloud 的 URL 必须是以 *.atlassian.net* 结尾的基本 URL。
+ 配置包含用户名（管理员账户的电子邮件地址）和密码（Confluence API 令牌）的基本身份验证凭证，以便将 Amazon Bedrock 连接到 Confluence Cloud 实例。有关如何创建 Confluence API 令牌的信息，请参阅 Atlassian 网站上的 [Manage API tokens for your Atlassian account](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/#Create-an-API-token)。
+ （可选）使用应用程序键、应用程序密钥、访问令牌和刷新令牌等凭证配置 OAuth 2.0 应用程序。有关更多信息，请参阅 Atlassian 网站上的 [OAuth 2.0 apps](https://developer.atlassian.com/cloud/confluence/oauth-2-3lo-apps/)。
+ 必须启用某些读取权限或范围，才能将 OAuth 2.0 应用程序连接到 Confluence。

  Confluence API：
  + offline\$1access
  + read:content:confluence – 查看详细内容 
  + read:content-details:confluence – 查看内容详细信息 
  + read:space-details:confluence – 查看空间详细信息
  + read:audit-log:confluence – 查看审计记录 
  + read:page:confluence – 查看页面 
  + read:attachment:confluence – 查看和下载内容附件 
  + read:blogpost:confluence – 查看博客文章 
  + read:custom-content:confluence – 查看自定义内容 
  + read:comment:confluence – 查看评论 
  + read:template:confluence – 查看内容模板 
  + read:label:confluence – 查看标签 
  + read:watcher:confluence – 查看内容观察者 
  + read:relation:confluence – 查看实体关系 
  + read:user:confluence – 查看用户详细信息 
  + read:configuration:confluence – 查看 Confluence 设置 
  + read:space:confluence – 查看空间详细信息 
  + read:space.property:confluence – 查看空间属性 
  + read:user.property:confluence – 查看用户属性 
  + read:space.setting:confluence – 查看空间设置 
  + read:analytics.content:confluence – 查看内容的分析
  + read:content.property:confluence – 查看内容属性
  + read:content.metadata:confluence – 查看内容摘要 
  + read:inlinetask:confluence – 查看任务 
  + read:task:confluence – 查看任务 
  + read:whiteboard:confluence – 查看白板 
  + read:app-data:confluence – 读取应用程序数据 
  + read:folder:confluence - 查看文件夹
  + read:embed:confluence - 查看 Smart Link 数据

**在 AWS 账户中，请确保**：
+ 将身份验证凭证存储在 [AWS Secrets Manager 密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)中，并记下该密钥的 Amazon 资源名称（ARN）。按照此页面上的**连接配置**说明添加密钥中必须包含的键值对。
+ 在知识库的 AWS Identity and Access Management (IAM) 角色/权限策略中包含连接到数据来源的必要权限。有关将此数据来源添加到知识库 IAM 角色所需的权限的信息，请参阅[访问数据来源的权限](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html#kb-permissions-access-ds)。

**注意**  
如果使用的是控制台，则可以前往 AWS Secrets Manager 添加密钥或在配置数据来源时使用现有密钥。您可以在控制台中创建知识库时创建具有所有必需权限的 IAM 角色。配置数据来源和其他配置后，具有所有必需权限的 IAM 角色将应用于特定知识库。  
我们建议您定期刷新或轮换您的凭证和密码。为了安全起见，请仅提供必要的访问权限级别。建议不要跨数据来源重复使用凭证和密钥。

## 连接配置
<a name="configuration-confluence-connector"></a>

要连接 Confluence 实例，您必须提供必要的配置信息，以便 Amazon Bedrock 可以访问和爬取您的数据。您还必须遵循[先决条件](#prerequisites-confluence-connector)。

本部分包含此数据来源的配置示例。

有关自动检测文档字段、包含/排除筛选条件、增量同步、密钥身份验证凭证及其工作原理的更多信息，请选择以下相应的项：

### 自动检测主要文档字段
<a name="ds-confluence-document-fields"></a>

数据来源连接器会自动检测并爬取文档或内容的所有主要元数据字段。例如，数据来源连接器可以爬取与您的文档等效的文档正文、文档标题、文档创建或修改日期或其他可能适用于您文档的核心字段。

**重要**  
如果您的内容包含敏感信息，则 Amazon Bedrock 可能使用敏感信息进行响应。

您可以对元数据字段应用筛选运算符，以帮助您进一步提高响应的相关性。例如，文档“epoch\$1modification\$1time”或文档在 1970 年 1 月 1 日最后一次更新之后经历的秒数。您可以通过将“epoch\$1modification\$1time”设置为*大于*某个数值，筛选出最新的数据。有关可以应用于元数据字段的筛选运算符的更多信息，请参阅[元数据和筛选](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html)。

### 包含/排除筛选条件
<a name="ds-confluence-inclusion-exclusion"></a>

您可以包含或排除对某些内容的爬取。例如，您可以指定一个前缀/正则表达式排除模式，以跳过对文件名中包含“private”的任何文件的爬取。您也可以指定一个前缀/正则表达式包含模式以包含某些内容实体或内容类型。如果您指定了包含和排除筛选条件，且两者都与文档匹配，则优先执行排除筛选条件，不爬取该文档。

排除或筛选掉文件名中包含“private”的 PDF 文件的正则表达式模式示例：*".\$1private.\$1\$1\$1.pdf"*

您可以对以下内容类型应用包含/排除筛选条件：
+ `Space`：唯一的空格键
+ `Page`：主页标题
+ `Blog`：主博客标题
+ `Comment`：属于某个页面或博客的评论。指定 *Re: Page/Blog Title*
+ `Attachment`：附件文件名及其扩展名

### 增量同步
<a name="ds-confluence-incremental-sync"></a>

数据来源每次与知识库同步时，数据来源连接器都会爬取新增、修改和删除的内容。Amazon Bedrock 可以使用数据来源的机制来跟踪内容更改并爬取自上次同步以来更改的内容。首次将数据来源与知识库同步时，默认爬取所有内容。

要将数据来源与知识库同步，请使用 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) API 或在控制台中选择知识库，然后在数据来源概述部分中选择**同步**。

**重要**  
您从数据来源同步的所有数据都可供有检索数据的 `bedrock:Retrieve` 权限的任何人使用。这也可以包括任何具有受控数据来源权限的数据。有关更多信息，请参阅[知识库权限](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html)。

### 密钥身份验证凭证
<a name="ds-confluence-secret-auth-credentials"></a>

（如果使用的是基本身份验证）您在 AWS Secrets Manager 中的密钥身份验证凭证应包含以下键值对：
+ `username`: *admin user email address of Atlassian account*
+ `password`: *Confluence API token*

（如果使用的是 OAuth 2.0 身份验证）您在 AWS Secrets Manager 中的密钥身份验证凭证应包含以下键值对：
+ `confluenceAppKey`: *app key*
+ `confluenceAppSecret`: *app secret*
+ `confluenceAccessToken`: *app access token*
+ `confluenceRefreshToken`: *app refresh token*

**注意**  
Confluence OAuth2.0 **访问**令牌的默认到期时间为 60 分钟。如果此令牌在您的数据来源同步（同步作业）时过期，Amazon Bedrock 将使用提供的**刷新**令牌来重新生成此令牌。此重新生成操作会刷新访问令牌和刷新令牌。为了将令牌从当前同步作业更新到下一个同步作业，Amazon Bedrock 需要您的知识库 IAM 角色拥有密钥凭证的写入/放置权限。

**注意**  
您在 AWS Secrets Manager 中的密钥必须使用与知识库相同的区域。

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

**将 Confluence 实例连接到知识库**

1. 按照[在 Amazon Bedrock 知识库中通过连接到数据来源创建知识库](knowledge-base-create.md)中的步骤操作，然后选择 **Confluence** 作为数据来源。

1. 提供数据来源的名称和（可选的）描述。

1. 提供 Confluence 实例 URL。例如，Confluence Cloud 的 URL 为 *https://example.atlassian.net*。Confluence Cloud 的 URL 必须是以 *.atlassian.net* 结尾的基本 URL。

1. 在**高级设置**部分，您可以选择进行以下配置：
   + **用于临时数据存储的 KMS 密钥。**– 在将数据转换为嵌入时，您可以使用默认 AWS 托管式密钥或您自己的 KMS 密钥加密临时数据。有关更多信息，请参阅 [加密数据提取期间的临时数据存储](encryption-kb.md#encryption-kb-ingestion)。
   + **数据删除策略** – 您可以删除数据来源的向量嵌入（这些向量嵌入默认存储在向量存储中），也可以选择保留向量存储数据。

1. 提供身份验证信息以连接 Confluence 实例：
   + 要使用基本身份验证，请前往 AWS Secrets Manager 添加密钥身份验证凭证或使用您创建的密钥的现有 Amazon 资源名称（ARN）。密钥必须包含 Atlassian 账户的管理员用户电子邮件地址作为用户名，并包含 Confluence API 令牌来代替密码。有关如何创建 Confluence API 令牌的信息，请参阅 Atlassian 网站上的 [Manage API tokens for your Atlassian account](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/#Create-an-API-token)。
   + 要使用 OAuth 2.0 身份验证，请前往 AWS Secrets Manager 添加密钥身份验证凭证或使用您创建的密钥的现有 Amazon 资源名称（ARN）。密钥必须包含 Confluence 应用程序键、应用程序密钥、访问令牌、刷新令牌。有关更多信息，请参阅 Atlassian 网站上的 [OAuth 2.0 apps](https://developer.atlassian.com/cloud/confluence/oauth-2-3lo-apps/)。

1. （可选）在**内容解析和分块**部分，您可以自定义如何对数据进行解析和分块。要了解有关这些定制设置的更多信息，请参阅以下资源：
   + 有关解析选项的更多信息，请参阅[数据来源的解析选项](kb-advanced-parsing.md)。
   + 有关分块策略的更多信息，请参阅[知识库的内容分块是如何运作的](kb-chunking.md)。
**警告**  
连接到数据来源后，就无法更改分块策略。
   + 有关如何自定义数据分块和使用 Lambda 函数处理元数据的详细信息，请参阅[使用自定义转换 Lambda 函数定义数据的摄取方式](kb-custom-transformation.md)。

1. 选择使用筛选条件/正则表达式模式来包含或排除某些内容。否则，会爬取所有标准内容。

1. 继续选择嵌入模型和向量存储。要查看剩余步骤，请在连接数据来源后返回[在 Amazon Bedrock 知识库中通过连接到数据来源创建知识库](knowledge-base-create.md)，然后继续执行该步骤。

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

以下是 Amazon Bedrock 知识库连接到 Confluence Cloud 的配置示例。您可以使用 AWS CLI 或支持的 SDK（例如 Python）通过 API 来配置数据来源。调用 [CreateKnowledgebase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) 后，您可以调用 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 来使用 `dataSourceConfiguration` 中的连接信息创建数据来源。

要了解可以通过添加可选的 `vectorIngestionConfiguration` 字段来应用于摄取的定制设置，请参阅[自定义数据来源的摄取](kb-data-source-customize-ingestion.md)。

**AWS Command Line Interface**

```
aws bedrock create-data-source \
 --name "Confluence Cloud/SaaS connector" \
 --description "Confluence Cloud/SaaS data source connector for Amazon Bedrock to use content in Confluence" \
 --knowledge-base-id "your-knowledge-base-id" \
 --data-source-configuration file://confluence-bedrock-connector-configuration.json \
 --data-deletion-policy "DELETE" \
 --vector-ingestion-configuration '{"chunkingConfiguration":[{"chunkingStrategy":"FIXED_SIZE","fixedSizeChunkingConfiguration":[{"maxTokens":"100","overlapPercentage":"10"}]}]}'

confluence-bedrock-connector-configuration.json
{
    "confluenceConfiguration": {
        "sourceConfiguration": {
            "hostUrl": "https://example.atlassian.net",
            "hostType": "SAAS",
            "authType": "OAUTH2_CLIENT_CREDENTIALS",
            "credentialsSecretArn": "arn:aws::secretsmanager:your-region:secret:AmazonBedrock-Confluence"
        },
        "crawlerConfiguration": {
            "filterConfiguration": {
                "type": "PATTERN",
                "patternObjectFilter": {
                    "filters": [
                        {
                            "objectType": "Attachment",
                            "inclusionFilters": [
                                ".*\\.pdf"
                            ],
                            "exclusionFilters": [
                                ".*private.*\\.pdf"
                            ]
                        }
                    ]
                }
            }
        }
    },
    "type": "CONFLUENCE"
}
```

------

# 连接 Micros SharePoint oft 获取知识库
<a name="sharepoint-data-source-connector"></a>

Microsoft SharePoint 是一项基于 Web 的协作服务，用于处理文档、网页、网站、列表等。您可以使用适用于亚马逊 Bedrock 的[AWS 管理控制台或 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html)API（参见[支持 SDKs ](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html)的 Amazon Bedrock 和），连接到您的 SharePoint 实例，以获取](https://console.aws.amazon.com/bedrock/home)您的 Amazon Bedrock 知识库。 AWS CLI

**注意**  
SharePoint 数据源连接器处于预览版，可能会发生变化。  
Microsoft SharePoint 数据源不支持多模式数据，例如表格、图表、图表或其他图像。

Amazon Bedrock 支持连接到 SharePoint 在线实例。目前不支持搜寻 OneNote 文档。目前，只有 Amazon OpenSearch Serverless 矢量存储可用于此数据源。

对可爬取的文件数和文件的 MB 数是有限制的。请参阅 [Quotas for knowledge bases](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)。

**Topics**
+ [支持的特征](#supported-features-sharepoint-connector)
+ [先决条件](#prerequisites-sharepoint-connector)
+ [连接配置](#configuration-sharepoint-connector)

## 支持的特征
<a name="supported-features-sharepoint-connector"></a>
+ 自动检测主要文档字段
+ 包含/排除内容筛选条件
+ 对已添加、更新、删除的内容进行增量内容同步
+ SharePoint 仅限应用程序的身份验证

## 先决条件
<a name="prerequisites-sharepoint-connector"></a>

### SharePoint （在线）
<a name="prerequisites-sharepoint-connector-online"></a>

**在 SharePoint （在线）中，完成以下步骤以使用 SharePoint 仅限应用程序的身份验证：**
+ 记下您的 SharePoint 在线网站网址/ URLs。例如 *https://yourdomain.sharepoint.com/sites/mysite*。您的 URL 必须以 *https* 开头并包含 *sharepoint.com*。您的网站网址必须是实际 SharePoint 网站，而不是*sharepoint.com/*或 *sites/mysite/home.aspx*
+ 记下您的 SharePoint 在线实例 URLURLs/的域名。
+ 复制您的 Microsoft 365 租户 ID。您可以在 Microsoft Entra 管理门户的“属性”中找到租户 ID。有关详细信息，请参阅[查找您的 Microsoft 365 租户 ID](https://learn.microsoft.com/en-us/sharepoint/find-your-office-365-tenant-id)。
**注意**  
有关示例应用程序，请参阅 Microsoft Learn 网站上的[在 Microsoft Entra ID 中注册客户端应用程序](https://learn.microsoft.com/en-us/azure/healthcare-apis/register-application)（Microsoft Entra ID 以前称为 Azure Active Directory）。
+ 配置 SharePoint 仅限应用程序的凭据。
+ 向 SharePoint App-Only 授予权限时，复制客户端 ID 和客户端密钥值。有关更多信息，请参阅[使用 “仅限 SharePoint 应用程序” 授予访问权限。](https://learn.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azureacs)
**注意**  
您无需为 “仅限 SharePoint应用程序” 设置任何 API 权限。但是，您必须在 SharePoint 侧面配置 APP 权限。有关所需应用程序权限的更多信息，请参阅 Microsoft 关于[使用仅限 SharePoint 应用程序授予访问](https://learn.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azureacs)权限的文档。

### AWS 账户
<a name="prerequisites-sharepoint-connector-account"></a>

**在您的 AWS 账户中，请确保**：
+ 将身份验证凭证存储在 [AWS Secrets Manager 密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)中，并记下该密钥的 Amazon 资源名称（ARN）。按照此页面上的**连接配置**说明添加密钥中必须包含的键值对。
+ 在知识库的 AWS Identity and Access Management (IAM) role/permissions 策略中包括连接数据源的必要权限。有关将此数据源添加到知识库 IAM 角色所需的权限的信息，请参阅[访问数据源的权限](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html#kb-permissions-access-ds)。

**注意**  
如果您使用控制台，则可以 AWS Secrets Manager 前往添加您的密钥或使用现有密钥作为数据源配置步骤的一部分。作为创建知识库的控制台步骤的一部分，可以为您创建具有所有所需权限的 IAM 角色。配置数据源和其他配置后，具有所有必需权限的 IAM 角色将应用于您的特定知识库。  
我们建议您定期刷新或轮换您的凭证和密码。为了安全起见，请仅提供必要的访问权限级别。建议不要跨数据来源重复使用凭证和密钥。

## 连接配置
<a name="configuration-sharepoint-connector"></a>

要连接到您的 SharePoint 实例，您必须提供必要的配置信息，以便 Amazon Bedrock 可以访问和抓取您的数据。您还必须遵循 [先决条件](#prerequisites-sharepoint-connector)。

本部分包含此数据来源的配置示例。

有关自动检测文档字段、包含/排除筛选条件、增量同步、密钥身份验证凭证及其工作原理的更多信息，请选择以下相应的项：

### 自动检测主要文档字段
<a name="ds-sharepoint-document-fields"></a>

数据来源连接器会自动检测并爬取文档或内容的所有主要元数据字段。例如，数据来源连接器可以爬取与您的文档等效的文档正文、文档标题、文档创建或修改日期或其他可能适用于您文档的核心字段。

**重要**  
如果您的内容包含敏感信息，则 Amazon Bedrock 可以使用敏感信息进行响应。

您可以对元数据字段应用筛选运算符，以帮助您进一步提高响应的相关性。例如，文档“epoch\$1modification\$1time”或文档在 1970 年 1 月 1 日最后一次更新之后经历的秒数。您可以通过将“epoch\$1modification\$1time”设置为*大于*某个数值，筛选出最新的数据。有关可以应用于元数据字段的筛选运算符的更多信息，请参阅[元数据和筛选](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html)。

### 包含/排除筛选条件
<a name="ds-sharepoint-inclusion-exclusion"></a>

您可以包含或排除对某些内容的爬取。例如，您可以指定排除 prefix/regular 表达式模式来跳过对文件名中包含 “private” 的任何文件的抓取。您也可以指定包含 prefix/regular 表达式模式以包含某些内容实体或内容类型。如果您指定了包含和排除筛选条件，且两者都与文档匹配，则优先执行排除筛选条件，不爬取该文档。

排除或筛选掉文件名中包含“private”的 PDF 文件的正则表达式模式示例：*".\$1private.\$1\$1\$1.pdf"*

您可以对以下内容类型应用 inclusion/exclusion 过滤器：
+ `Page`：主页标题
+ `Event`：事件名称
+ `File`：附件和所有文档文件的文件名及其扩展名

目前不支持搜寻 OneNote 文档。

### 增量同步
<a name="ds-sharepoint-incremental-sync"></a>

每次您的数据源与知识库同步时，数据源连接器都会抓取新内容、修改内容和已删除内容。 Amazon Bedrock 可以使用数据源的机制来跟踪内容更改并抓取自上次同步以来更改的内容。首次将数据来源与知识库同步时，默认爬取所有内容。

要将您的数据源与知识库同步，请使用 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html)API 或在控制台中选择您的知识库，然后在数据源概述部分中选择**同步**。

**重要**  
您从数据来源同步的所有数据都可供有检索数据的 `bedrock:Retrieve` 权限的任何人使用。这也可以包括任何具有受控数据来源权限的数据。有关更多信息，请参阅[知识库权限](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html)。

### 密钥身份验证凭证
<a name="ds-sharepoint-secret-auth-credentials"></a>

使用 SharePoint 仅限应用程序的身份验证时，您的秘密身份验证凭据 AWS Secrets Manager 必须包含以下键值对：
+ `clientId`: *client ID associated with your Microsoft Entra SharePoint application*
+ `clientSecret`: *client secret associated with your Microsoft Entra SharePoint application*
+ `sharePointClientId`: *client ID generated when registering your SharePoint app for App-Only authentication*
+ `sharePointClientSecret`: *client secret generated when registering your SharePoint app for App-Only authentication*

**注意**  
您的密钥 AWS Secrets Manager 必须使用知识库中的相同区域。

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

**将 SharePoint 实例连接到您的知识库**<a name="connect-sharepoint-console"></a>

1. 按照中的步骤操作[在 Amazon Bedrock 知识库中通过连接到数据来源创建知识库](knowledge-base-create.md)并选择**SharePoint**作为数据源。

1. 提供数据来源的名称和（可选的）描述。

1. 提供您的 SharePoint 网站网址/ URLs。例如，对于 SharePoint 在线，*https://yourdomain.sharepoint.com/sites/mysite*。您的 URL 必须以 *https* 开头并包含 *sharepoint.com*。您的网站网址必须是实际 SharePoint 网站，而不是*sharepoint.com/*或 *sites/mysite/home.aspx*

1. 提供您的 SharePoint 实例的域名。

1. 在**高级设置**部分，您可以选择进行以下配置：
   + **用于临时数据存储的 KMS 密钥。**— 您可以加密临时数据，同时使用默认密钥 AWS 托管式密钥 或您自己的 KMS 密钥将数据转换为嵌入内容。有关更多信息，请参阅 [加密数据提取期间的临时数据存储](encryption-kb.md#encryption-kb-ingestion)。
   + **数据删除策略** – 您可以删除数据来源的向量嵌入（这些向量嵌入默认存储在向量存储中），也可以选择保留向量存储数据。

1. 提供身份验证信息以连接到您的 SharePoint 实例。对于 SharePoint 仅限应用程序的身份验证：

   1. 提供租户 ID。您可以在 Azure Active Directory 门户的“属性”中找到租户 ID。

   1.  AWS Secrets Manager 前往添加您的密钥凭证，或者使用您创建的密钥的现有 Amazon 资源名称 (ARN)。您的密钥必须包含在租户级别或站点级别注册仅限应用程序时生成的客户端 ID 和 SharePoint 客户端密钥，以及在 Entra 中注册应用程序时生成的 Entra 客户端 ID 和 Entra 客户端密钥。 SharePoint 

1. （可选）在**内容解析和分块**部分，您可以自定义如何对数据进行解析和分块。要了解有关这些定制设置的更多信息，请参阅以下资源：
   + 有关解析选项的更多信息，请参阅[数据来源的解析选项](kb-advanced-parsing.md)。
   + 有关分块策略的更多信息，请参阅[知识库的内容分块是如何运作的](kb-chunking.md)。
**警告**  
连接到数据来源后，就无法更改分块策略。
   + 有关如何自定义数据分块和使用 Lambda 函数处理元数据的详细信息，请参阅[使用自定义转换 Lambda 函数定义数据的摄取方式](kb-custom-transformation.md)。

1. 选择使用 filters/regular 表达式模式来包含或排除某些内容。否则，所有标准内容都会被抓取。

1. 继续选择嵌入模型和向量存储。要查看剩余步骤，请在连接数据来源后返回[在 Amazon Bedrock 知识库中通过连接到数据来源创建知识库](knowledge-base-create.md)，然后继续执行该步骤。

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

以下是用于连接 Amazon Bedrock 知识库的 “ SharePoint 在线” 的配置示例。您可以使用带有 AWS CLI 或支持的软件开发工具包（例如 Python）的 API 来配置数据源。调用后 [CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html)，您可以调[CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html)用创建数据源，其中包含您的连接信息`dataSourceConfiguration`。

要了解可以通过添加可选的 `vectorIngestionConfiguration` 字段来应用于摄取的定制设置，请参阅[自定义数据来源的摄取](kb-data-source-customize-ingestion.md)。

**AWS Command Line Interface**

```
aws bedrock-agent create-data-source \
 --name "SharePoint Online connector" \
 --description "SharePoint Online data source connector for Amazon Bedrock to use content in SharePoint" \
 --knowledge-base-id "your-knowledge-base-id" \
 --data-source-configuration file://sharepoint-bedrock-connector-configuration.json \
 --data-deletion-policy "DELETE"
```

**`sharepoint-bedrock-connector-configuration.json` 的内容**

```
{
    "sharePointConfiguration": {
        "sourceConfiguration": {
            "tenantId": "888d0b57-69f1-4fb8-957f-e1f0bedf64de",
            "hostType": "ONLINE",
            "domain": "yourdomain",
            "siteUrls": [
                "https://yourdomain.sharepoint.com/sites/mysite"
            ],
            "authType": "OAUTH2_SHAREPOINT_APP_ONLY_CLIENT_CREDENTIALS",
            "credentialsSecretArn": "arn:aws::secretsmanager:your-region:secret:AmazonBedrock-SharePoint"
        },
        "crawlerConfiguration": {
            "filterConfiguration": {
                "type": "PATTERN",
                "patternObjectFilter": {
                    "filters": [
                        {
                            "objectType": "File",
                            "inclusionFilters": [
                                ".*\\.pdf"
                            ],
                            "exclusionFilters": [
                                ".*private.*\\.pdf"
                            ]
                        }
                    ]
                }
            }
        }
    },
    "type": "SHAREPOINT"
}
```

------

**重要**  
不建议使用 OAuth2 .0 身份验证。我们建议您使用 SharePoint仅限应用程序的身份验证。

## 正在使用 OAuth2 .0
<a name="sharepoint-connector-oauth"></a>

使用 OAuth 2.0，您可以对与知识库集成的 SharePoint 连接器的 SharePoint资源进行身份验证和授权。

### 先决条件
<a name="sharepoint-connector-oauth-prereq"></a>

**在中 SharePoint，对于 OAuth 2.0 身份验证，请确保**：
+ 记下您的 SharePoint 在线网站网址/ URLs。例如 *https://yourdomain.sharepoint.com/sites/mysite*。您的 URL 必须以 *https* 开头并包含 *sharepoint.com*。您的网站网址必须是实际 SharePoint 网站，而不是*sharepoint.com/*或 *sites/mysite/home.aspx*
+ 记下您的 SharePoint 在线实例 URLURLs/的域名。
+ 复制您的 Microsoft 365 租户 ID。你可以在 Microsoft Entra 门户的属性或 OAuth应用程序中找到你的租户 ID。

  请记下管理员 SharePoint帐户的用户名和密码，并在注册应用程序时复制客户端 ID 和客户端密钥值。
**注意**  
有关示例应用程序，请参阅 Microsoft Learn 网站上的[在 Microsoft Entra ID 中注册客户端应用程序](https://learn.microsoft.com/en-us/azure/healthcare-apis/register-application)（Microsoft Entra ID 以前称为 Azure Active Directory）。
+ 注册应用程序 SharePoint 时，需要某些读取权限才能连接。
  + SharePoint: AllSites .Read（委托）-读取所有网站集中的项目
+ 您可能需要使用管理员用户在 Azure 门户中停用**安全默认值**。有关在 Azure 门户中管理安全默认设置的更多信息，请参阅 [Microsoft 关于如何设置 enable/disable 安全默认设置的文档](https://learn.microsoft.com/en-us/microsoft-365/business-premium/m365bp-conditional-access?view=o365-worldwide&tabs=secdefaults#security-defaults-1)。
+ 您可能需要关闭账户中的多重身份验证 (MFA)，以免阻止 Amazon Bedrock 抓取 SharePoint 您的内容。 SharePoint 

要完成先决条件，请确保您已完成[AWS 账户](#prerequisites-sharepoint-connector-account) 中的步骤。

### 密钥身份验证凭证
<a name="sharepoint-secret-auth-credentials-oauth"></a>

对于 OAuth2 .0 的连接配置，可以执行与自动检测主文档字段、 inclusion/exclusion 筛选器和增量同步相同的步骤，如中所述。[连接配置](#configuration-sharepoint-connector)

**对于 OAuth 2.0 身份验证，您在中的秘密身份验证凭据 AWS Secrets Manager 必须包含这些键值对**。
+ `username`: *SharePoint admin username*
+ `password`: *SharePoint admin password*
+ `clientId`: *OAuth app client ID*
+ `clientSecret`: *OAuth app client secret*

### 将 SharePoint 实例连接到您的知识库
<a name="sharepoint-connector-oauth-using"></a>

要在使用 OAuth2 .0 时将 SharePoint 实例连接到知识库，请执行以下操作：
+ （控制台）在控制台中，按照将[ SharePoint 实例连接到知识库中所述的](https://docs.aws.amazon.com/bedrock/latest/userguide/sharepoint-data-source-connector.html#connect-sharepoint-console)相同步骤进行操作。当您想提供身份验证信息以连接到您的 SharePoint 实例时。
  + 提供租户 ID。您可以在 Azure Active Directory 门户的“属性”中找到租户 ID。
  + 转 AWS Secrets Manager 至添加您的秘密身份验证凭证或使用您创建的密钥的现有 Amazon 资源名称 (ARN)。您的密钥必须包含 SharePoint 管理员用户名和密码，以及您注册的应用程序客户端 ID 和客户端密钥。有关示例应用程序，请参阅 Microsoft Learn 网站上的[在 Microsoft Entra ID 中注册客户端应用程序](https://learn.microsoft.com/en-us/azure/healthcare-apis/register-application)（Microsoft Entra ID 以前称为 Azure Active Directory）。
+ (API) 以下是使用 `CreateDataSource` API 创建数据源的示例，其中包含您的 OAuth2 .0 的连接信息。

  ```
  aws bedrock-agent create-data-source \
   --name "SharePoint Online connector" \
   --description "SharePoint Online data source connector for Amazon Bedrock to use content in SharePoint" \
   --knowledge-base-id "your-knowledge-base-id" \
   --data-source-configuration file://sharepoint-bedrock-connector-configuration.json \
   --data-deletion-policy "DELETE"
  ```

  **`sharepoint-bedrock-connector-configuration.json` 的内容**

  ```
  {
      "sharePointConfiguration": {
          "sourceConfiguration": {
              "tenantId": "888d0b57-69f1-4fb8-957f-e1f0bedf64de",
              "hostType": "ONLINE",
              "domain": "yourdomain",
              "siteUrls": [
                  "https://yourdomain.sharepoint.com/sites/mysite"
              ],
              "authType": "OAUTH2_CLIENT_CREDENTIALS",
              "credentialsSecretArn": "arn:aws::secretsmanager:your-region:secret:AmazonBedrock-SharePoint"
          },
          "crawlerConfiguration": {
              "filterConfiguration": {
                  "type": "PATTERN",
                  "patternObjectFilter": {
                      "filters": [
                          {
                              "objectType": "File",
                              "inclusionFilters": [
                                  ".*\\.pdf"
                              ],
                              "exclusionFilters": [
                                  ".*private.*\\.pdf"
                              ]
                          }
                      ]
                  }
              }
          }
      },
      "type": "SHAREPOINT"
  }
  ```

# 连接到 Salesforce 来为知识库摄取内容
<a name="salesforce-data-source-connector"></a>

Salesforce 是一款客户关系管理（CRM）工具，用于管理支持、销售和营销团队。您可以使用[适用于 Amazon Bedrock 的 AWS 管理控制台](https://console.aws.amazon.com/bedrock/home)或 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) API 连接到 Salesforce 实例，来为 Amazon Bedrock 知识库摄取内容（请参阅 Amazon Bedrock [支持的 SDK 和 AWS CLI](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html)）。

**注意**  
Salesforce 数据来源连接器目前为预览版，可能随时发生变化。  
Salesforce 数据来源不支持多模态数据，例如表、曲线图、图表或其他图像。

目前，只有 Amazon OpenSearch 无服务器向量存储可用于此数据来源。

对可爬取的文件数和文件的 MB 数是有限制的。请参阅 [Quotas for knowledge bases](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)。

**Topics**
+ [支持的特征](#supported-features-salesforce-connector)
+ [先决条件](#prerequisites-salesforce-connector)
+ [连接配置](#configuration-salesforce-connector)

## 支持的特征
<a name="supported-features-salesforce-connector"></a>
+ 自动检测主要文档字段
+ 包含/排除内容筛选条件
+ 对已添加、更新、删除的内容进行增量内容同步
+ OAuth 2.0 身份验证

## 先决条件
<a name="prerequisites-salesforce-connector"></a>

**在 Salesforce 中，请确保：**
+ 记下 Salesforce 实例 URL。例如，*https://company.salesforce.com/*。实例必须运行与 Salesforce 连接的应用程序。
+ 创建与 Salesforce 连接的应用程序并配置客户端凭证。然后，对于您选择的应用程序，从 OAuth 设置中复制用户密钥（客户端 ID）和使用者密钥（客户端密钥）。有关更多信息，请参阅关于[创建连接的应用程序](https://help.salesforce.com/s/articleView?id=sf.connected_app_create.htm&type=5)和[为 OAuth 2.0 客户端凭证配置连接的应用程序](https://help.salesforce.com/s/articleView?id=sf.connected_app_client_credentials_setup.htm&type=5)的 Salesforce 文档。
**注意**  
对于与 Salesforce 连接的应用程序，在“客户端凭证流”下，确保在“运行方式”字段中为客户端凭证搜索并选择用户名或别名。

**在 AWS 账户中，请确保**：
+ 将身份验证凭证存储在 [AWS Secrets Manager 密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)中，并记下该密钥的 Amazon 资源名称（ARN）。按照此页面上的**连接配置**说明添加密钥中必须包含的键值对。
+ 在知识库的 AWS Identity and Access Management (IAM) 角色/权限策略中包含连接到数据来源的必要权限。有关将此数据来源添加到知识库 IAM 角色所需的权限的信息，请参阅[访问数据来源的权限](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html#kb-permissions-access-ds)。

**注意**  
如果使用的是控制台，则可以前往 AWS Secrets Manager 添加密钥或在配置数据来源时使用现有密钥。您可以在控制台中创建知识库时创建具有所有必需权限的 IAM 角色。配置数据来源和其他配置后，具有所有必需权限的 IAM 角色将应用于特定知识库。  
我们建议您定期刷新或轮换您的凭证和密码。为了安全起见，请仅提供必要的访问权限级别。建议不要跨数据来源重复使用凭证和密钥。

## 连接配置
<a name="configuration-salesforce-connector"></a>

要连接到 Salesforce 实例，您必须提供必要的配置信息，以便 Amazon Bedrock 可以访问和爬取您的数据。您还必须遵循[先决条件](#prerequisites-salesforce-connector)。

本部分包含此数据来源的配置示例。

有关自动检测文档字段、包含/排除筛选条件、增量同步、密钥身份验证凭证及其工作原理的更多信息，请选择以下相应的项：

### 自动检测主要文档字段
<a name="ds-salesforce-document-fields"></a>

数据来源连接器会自动检测并爬取文档或内容的所有主要元数据字段。例如，数据来源连接器可以爬取与您的文档等效的文档正文、文档标题、文档创建或修改日期或其他可能适用于您文档的核心字段。

**重要**  
如果您的内容包含敏感信息，则 Amazon Bedrock 可能使用敏感信息进行响应。

您可以对元数据字段应用筛选运算符，以帮助您进一步提高响应的相关性。例如，文档“epoch\$1modification\$1time”或文档在 1970 年 1 月 1 日最后一次更新之后经历的秒数。您可以通过将“epoch\$1modification\$1time”设置为*大于*某个数值，筛选出最新的数据。有关可以应用于元数据字段的筛选运算符的更多信息，请参阅[元数据和筛选](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html)。

### 包含/排除筛选条件
<a name="ds-salesforce-inclusion-exclusion"></a>

您可以包含或排除对某些内容的爬取。例如，您可以指定一个前缀/正则表达式排除模式，以跳过对文件名中包含“private”的任何文件的爬取。您也可以指定一个前缀/正则表达式包含模式以包含某些内容实体或内容类型。如果您指定了包含和排除筛选条件，且两者都与文档匹配，则优先执行排除筛选条件，不爬取该文档。

排除或筛选掉活动名称中包含“private”的活动的正则表达式模式示例：*".\$1private.\$1"*

您可以对以下内容类型应用包含/排除筛选条件：
+ `Account`：账号/标识符
+ `Attachment`：附件文件名及其扩展名
+ `Campaign`：活动名称和相关标识符
+ `ContentVersion`：文档版本和相关标识符
+ `Partner`：合作伙伴信息字段，包括相关标识符
+ `Pricebook2`：产品/价格列表名称
+ `Case`：客户咨询/问题编号和其他信息字段，包括相关标识符（请注意：可能包含个人信息，您可以选择排除或筛选掉这些信息）
+ `Contact`：客户信息字段（请注意：可能包含个人信息，您可以选择排除或筛选掉这些信息）
+ `Contract`：合同名称和相关标识符
+ `Document`：文件名及其扩展名
+ `Idea`：想法信息字段和相关标识符
+ `Lead`：潜在新客户信息字段（请注意：可能包含个人信息，您可以选择排除或筛选掉这些信息）
+ `Opportunity`：待处理的销售/交易信息字段和相关标识符
+ `Product2`：商品信息字段和相关标识符
+ `Solution`：客户查询/问题的解决方案名称和相关标识符
+ `Task`：任务信息字段和相关标识符
+ `FeedItem`：聊天源帖子的标识符
+ `FeedComment`：评论所属的聊天源帖子的标识符
+ `Knowledge__kav`：知识文章标题
+ `User`：组织内的用户别名
+ `CollaborationGroup`：聊天组名称（唯一）

### 增量同步
<a name="ds-salesforce-incremental-sync"></a>

数据来源每次与知识库同步时，数据来源连接器都会爬取新增、修改和删除的内容。Amazon Bedrock 可以使用数据来源的机制来跟踪内容更改并爬取自上次同步以来更改的内容。首次将数据来源与知识库同步时，默认爬取所有内容。

要将数据来源与知识库同步，请使用 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) API 或在控制台中选择知识库，然后在数据来源概述部分中选择**同步**。

**重要**  
您从数据来源同步的所有数据都可供有检索数据的 `bedrock:Retrieve` 权限的任何人使用。这也可以包括任何具有受控数据来源权限的数据。有关更多信息，请参阅[知识库权限](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html)。

### 密钥身份验证凭证
<a name="ds-salesforce-secret-auth-credentials"></a>

（对于 OAuth 2.0 身份验证）您在 AWS Secrets Manager 中的密钥身份验证凭证应包含以下键值对：
+ `consumerKey`：*应用程序客户端 ID*
+ `consumerSecret`：*应用程序客户端密钥*
+ `authenticationUrl`：*Salesforce 实例 URL 或请求身份验证词元的 URL*

**注意**  
您在 AWS Secrets Manager 中的密钥必须使用与知识库相同的区域。

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

**将 Salesforce 实例连接到知识库**

1. 按照[在 Amazon Bedrock 知识库中通过连接到数据来源创建知识库](knowledge-base-create.md)中的步骤操作，然后选择 **Salesforce** 作为数据来源。

1. 提供数据来源的名称和可选的描述。

1. 提供 Salesforce 实例 URL。例如，*https://company.salesforce.com/*。实例必须运行与 Salesforce 连接的应用程序。

1. 在**高级设置**部分，您可以选择进行以下配置：
   + **用于临时数据存储的 KMS 密钥。**– 在将数据转换为嵌入时，您可以使用默认 AWS 托管式密钥或您自己的 KMS 密钥加密临时数据。有关更多信息，请参阅 [加密数据提取期间的临时数据存储](encryption-kb.md#encryption-kb-ingestion)。
   + **数据删除策略**：您可以删除数据来源的向量嵌入（这些向量嵌入默认存储在向量存储中），也可以选择保留向量存储数据。

1. 提供身份验证信息以连接 Salesforce 实例：

   1. 要使用 OAuth 2.0 身份验证，请前往 AWS Secrets Manager 添加密钥身份验证凭证或使用您创建的密钥的现有 Amazon 资源名称（ARN）。您的密钥必须包含与 Salesforce 连接的应用程序的用户密钥（客户端 ID）、使用者密钥（客户端密钥）以及 Salesforce 实例 URL 或请求身份验证词元的 URL。有关更多信息，请参阅关于[创建连接的应用程序](https://help.salesforce.com/s/articleView?id=sf.connected_app_create.htm&type=5)和[为 OAuth 2.0 客户端凭证配置连接的应用程序](https://help.salesforce.com/s/articleView?id=sf.connected_app_client_credentials_setup.htm&type=5)的 Salesforce 文档。

1. （可选）在**内容解析和分块**部分，您可以自定义如何对数据进行解析和分块。要了解有关这些定制设置的更多信息，请参阅以下资源：
   + 有关解析选项的更多信息，请参阅[数据来源的解析选项](kb-advanced-parsing.md)。
   + 有关分块策略的更多信息，请参阅[知识库的内容分块是如何运作的](kb-chunking.md)。
**警告**  
连接到数据来源后，就无法更改分块策略。
   + 有关如何自定义数据分块和使用 Lambda 函数处理元数据的详细信息，请参阅[使用自定义转换 Lambda 函数定义数据的摄取方式](kb-custom-transformation.md)。

1. 选择使用筛选条件/正则表达式模式来包含或排除某些内容。否则，会爬取所有标准内容。

1. 继续选择嵌入模型和向量存储。要查看剩余步骤，请在连接数据来源后返回[在 Amazon Bedrock 知识库中通过连接到数据来源创建知识库](knowledge-base-create.md)，然后继续执行该步骤。

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

以下是 Amazon Bedrock 知识库连接到 Salesforce 的配置示例。您可以使用 AWS CLI 或支持的 SDK（例如 Python）通过 API 来配置数据来源。调用 [CreateKnowledgebase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) 后，您可以调用 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 来使用 `dataSourceConfiguration` 中的连接信息创建数据来源。

要了解可以通过添加可选的 `vectorIngestionConfiguration` 字段来应用于摄取的定制设置，请参阅[自定义数据来源的摄取](kb-data-source-customize-ingestion.md)。

**AWS Command Line Interface**

```
aws bedrock create-data-source \
 --name "Salesforce connector" \
 --description "Salesforce data source connector for Amazon Bedrock to use content in Salesforce" \
 --knowledge-base-id "your-knowledge-base-id" \
 --data-source-configuration file://salesforce-bedrock-connector-configuration.json \
 --data-deletion-policy "DELETE" \
 --vector-ingestion-configuration '{"chunkingConfiguration":[{"chunkingStrategy":"FIXED_SIZE","fixedSizeChunkingConfiguration":[{"maxTokens":"100","overlapPercentage":"10"}]}]}'

salesforce-bedrock-connector-configuration.json
{
    "salesforceConfiguration": {
        "sourceConfiguration": {
            "hostUrl": "https://company.salesforce.com/",
            "authType": "OAUTH2_CLIENT_CREDENTIALS",
            "credentialsSecretArn": "arn:aws::secretsmanager:your-region:secret:AmazonBedrock-Salesforce"
        },
        "crawlerConfiguration": {
            "filterConfiguration": {
                "type": "PATTERN",
                "patternObjectFilter": {
                    "filters": [
                        {
                            "objectType": "Campaign",
                            "inclusionFilters": [
                                ".*public.*"
                            ],
                            "exclusionFilters": [
                                ".*private.*"
                            ]
                        }
                    ]
                }
            }
        }
    },
    "type": "SALESFORCE"
}
```

------

# 为知识库爬取网页
<a name="webcrawl-data-source-connector"></a>

Amazon Bedrock 提供的 Web 爬网程序可以连接并爬取您选择在 Amazon Bedrock 知识库中使用的 URL。您可以根据所选 URL 的设定范围或限制来爬取网站页面。您可以使用[适用于 Amazon Bedrock 的 AWS 管理控制台](https://console.aws.amazon.com/bedrock/home)或 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) API 来爬取网站页面（请参阅 Amazon Bedrock [支持的软件开发工具包和 AWS CLI](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html)）。目前，只有 Amazon OpenSearch 无服务器向量存储可用于此数据来源。

**注意**  
Web 爬网程序数据来源连接器目前为预览版，可能随时发生变化。

当选择要爬取的网站时，您必须遵守 [Amazon 可接受使用政策](https://aws.amazon.com/aup/)以及所有其他 Amazon 条款。请记住，您只能使用 Web 爬网程序为您自己的网页或您有权爬取的网页编制索引，并且必须遵守 robots.txt 配置。

Web 爬网程序根据 [RFC 9309](https://www.rfc-editor.org/rfc/rfc9309.html) 遵守 robots.txt 标准

可以爬取的网页内容项目数量有限制，每个内容项目的 MB 数量是有限的。请参阅 [Quotas for knowledge bases](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)。

**Topics**
+ [支持的特征](#supported-features-webcrawl-connector)
+ [先决条件](#prerequisites-webcrawl-connector)
+ [连接配置](#configuration-webcrawl-connector)

## 支持的特征
<a name="supported-features-webcrawl-connector"></a>

Web 爬网程序从种子 URL 开始连接并爬取 HTML 网页，遍历同一主域名和路径下的所有子链接。如果任何 HTML 页面引用了支持的文档，Web 爬网程序就会爬取这些文档，无论它们是否在同一主域名内。您可以通过更改爬网配置来修改爬取行为。请参阅 [连接配置](#configuration-webcrawl-connector)。

您可以执行以下操作：
+ 选择多个要爬取的源 URL，并将 URL 的范围设置为仅爬取主机或同时包含子域。
+ 爬取源 URL 中包含的静态网页。
+ 指定自定义用户代理后缀，为自己的爬网程序设置规则。
+ 包含或排除与筛选模式匹配的某些 URL。
+ 遵守标准 robots.txt 指令，例如 Allow 和 Disallow。
+ 限制要抓取的 URL 范围，也可以选择排除符合筛选模式的 URL。
+ 限制爬取 URL 的速率和要爬取的最大页面数。
+ 在 Amazon CloudWatch 中查看爬取的 URL 的状态

## 先决条件
<a name="prerequisites-webcrawl-connector"></a>

**要使用 Web 爬网程序，请确保您：**。
+ 检查是否授权您爬取源 URL。
+ 检查源 URL 对应的 robots.txt 路径是否阻止了爬取 URL。Web 爬网程序遵守 robots.txt 标准：如果未找到该网站的 robots.txt，则默认为 `disallow`。Web 爬网程序根据 [RFC 9309](https://www.rfc-editor.org/rfc/rfc9309.html) 遵守 robots.txt 标准。您还可以指定自定义用户代理标头后缀，为自己的爬网程序设置规则。有关更多信息，请参阅本页面上[连接配置](#configuration-webcrawl-connector)说明中的 Web 爬网程序 URL 访问权限。
+ [启用 CloudWatch Logs 传送功能](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-bases-logging.html)并按照以下示例 Web 爬网程序日志操作，可查看摄取 Web 内容的数据摄取作业的状态，以及某些 URL 是否无法检索。

**注意**  
当选择要爬取的网站时，您必须遵守 [Amazon 可接受使用政策](https://aws.amazon.com/aup/)以及所有其他 Amazon 条款。请记住，您必须仅使用 Web 爬网程序为您自己的网页或您有权编制索引的网页来爬取。

## 连接配置
<a name="configuration-webcrawl-connector"></a>

有关爬取 URL 的同步范围、包含/排除筛选条件、URL 访问权限、增量同步及其工作原理的更多信息，请选择以下相应的项：

### 爬取 URL 的同步范围
<a name="ds-sync-scope"></a>

您可以根据每个页面 URL 与种子 URL 的特定关系来限制要爬取的 URL 范围。为了加快爬取速度，您可以将 URL 限制为与种子 URL 具有相同主机和初始 URL 路径的 URL。要进行更广泛的爬取，您可以选择爬取同一主机或种子 URL 的任何子域内的 URL。

可从以下选项中进行选择。
+ 默认：将爬取限制为属于同一主机且具有相同初始 URL 路径的网页。例如，如果种子 URL 为“https://aws.amazon.com/bedrock/”，则只会爬取此路径和从此路径延伸的网页，例如“https://aws.amazon.com/bedrock/agents/”。例如，诸如“https://aws.amazon.com/ec2/”之类的同级网址不会被爬取。
+ 仅限主机：将爬取限制为属于同一主机的网页。例如，如果种子 URL 为“https://aws.amazon.com/bedrock/”，则包含“https://aws.amazon.com”的网页也会被爬取，比如“https://aws.amazon.com/ec2”。
+ 子域名：包括与种子 URL 具有相同主域名的任何网页的爬取。例如，如果种子 URL 为“https://aws.amazon.com/bedrock/”，则任何包含“amazon.com”（子域名）的网页都将被爬取，例如“https://www.amazon.com”。

**注意**  
确保您没有爬取可能过多的网页。不建议在没有筛选条件或范围限制的情况下爬取大型网站，例如 wikipedia.org。爬取大型网站需要很长时间。  
如果文件类型没有排除模式，则无论范围大小都会爬取[支持的文件类型](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html)。

Web 爬网程序支持静态网站。

您还可以限制爬取 URL 的速率以控制对爬取速度的节流。您可以设置每分钟在每个主机上爬取的最大 URL 数量。此外，您还可以设置要爬取的网页总数的最大数量（最多 25000）。请注意，如果源 URL 中的网页总数超过您设置的最大值，则您的数据来源同步/摄取作业将失败。

### 包含/排除筛选条件
<a name="ds-inclusion-exclusion"></a>

您可以根据自己的范围包含或排除某些 URL。如果文件类型没有排除模式，则无论范围大小都会爬取[支持的文件类型](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html)。如果您指定了包含和排除筛选条件，且两者都与 URL 匹配，则优先排除筛选条件，不会爬取网页内容。

**重要**  
有问题的正则表达式模式筛选条件会导致[灾难性的回溯](https://docs.aws.amazon.com/codeguru/detector-library/python/catastrophic-backtracking-regex/)和瞻前顾后，因此会被拒绝。

排除以“.pdf”结尾的 URL 或 PDF 网页附件的正则表达式筛选模式示例：*".\$1\$1.pdf\$1"*

### Web 爬网程序 URL 访问权限
<a name="ds-webcrawl-identity-crawling"></a>

您可以使用 Web 爬网程序来爬取您有权爬取的网站的页面。

当选择要爬取的网站时，您必须遵守 [Amazon 可接受使用政策](https://aws.amazon.com/aup/)以及所有其他 Amazon 条款。请记住，您必须仅使用 Web 爬网程序为您自己的网页或您有权编制索引的网页来爬取。

Web 爬网程序根据 [RFC 9309](https://www.rfc-editor.org/rfc/rfc9309.html) 遵守 robots.txt 标准

您可以将某些用户代理机器人指定为“允许”或“不允许”用户代理爬取您的源 URL。您可以修改网站的 robots.txt 文件来控制 Web 爬网程序如何爬取您的源 URL。爬网程序将首先在 robots.txt 文件中查找 `bedrockbot` 规则，然后查找通用 `bedrockbot-UUID ` 规则。

您还可以添加 User-Agent 后缀，该后缀可用于在机器人保护系统中将您的爬网程序列入允许列表。请注意，无需将此后缀添加到 `robots.txt` 文件中来确保没有人可以仿冒用户代理字符串。例如，要让 Web 爬网程序能够爬取所有网站内容并禁止其他任何机器人爬取，请使用以下指令：

```
User-agent: bedrockbot-UUID # Amazon Bedrock Web Crawler
Allow: / # allow access to all pages
User-agent: * # any (other) robot
Disallow: / # disallow access to any pages
```

### 增量同步
<a name="ds-incremental-sync"></a>

每次运行 Web 爬网程序时，都会检索从符合范围与筛选条件的源 URL 可以访问的所有 URL 的内容。对于首次同步所有内容后的增量同步，Amazon Bedrock 会使用新内容和修改过的内容更新知识库，并删除不再存在的旧内容。有时，爬网程序可能无法分辨网站内容是否已被删除；在这种情况下，它会偏向于将旧内容保留在知识库中。

要将数据来源与知识库同步，请使用 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) API 或在控制台中选择知识库，然后在数据来源概述部分中选择**同步**。

**重要**  
您从数据来源同步的所有数据都可供有检索数据的 `bedrock:Retrieve` 权限的任何人使用。这也可以包括任何具有受控数据来源权限的数据。有关更多信息，请参阅[知识库权限](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html)。

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

**将 Web 爬网程序数据来源连接到知识库**

1. 按照[在 Amazon Bedrock 知识库中通过连接到数据来源创建知识库](knowledge-base-create.md)中的步骤操作，然后选择 **Web 爬网程序**作为数据来源。

1. 提供数据来源的名称和可选的描述。

1. 提供要爬取的 URL 的**来源 URL**。选择**添加源 URL**，最多可添加 9 个其他 URL。提供源 URL 即表示您确认自己有权爬取其域。

1. 在**高级设置**部分，您可以选择进行以下配置：
   + **用于临时数据存储的 KMS 密钥。**– 在将数据转换为嵌入时，您可以使用默认 AWS 托管式密钥或您自己的 KMS 密钥加密临时数据。有关更多信息，请参阅 [加密数据提取期间的临时数据存储](encryption-kb.md#encryption-kb-ingestion)。
   + **数据删除策略** – 您可以删除数据来源的向量嵌入（这些向量嵌入默认存储在向量存储中），也可以选择保留向量存储数据。

1. （可选）为 **bedrock-UUID** 提供用户代理后缀，用于在爬网程序或机器人访问 Web 服务器时对其进行标识。

1. 在**同步范围**部分中，进行以下配置：

   1. 选择用于爬取您的源 URL 的**网站域范围**：
      + 默认：将爬取限制为属于同一主机且具有相同初始 URL 路径的网页。例如，如果种子 URL 为“https://aws.amazon.com/bedrock/”，则只会爬取此路径和从此路径延伸的网页，例如“https://aws.amazon.com/bedrock/agents/”。例如，诸如“https://aws.amazon.com/ec2/”之类的同级网址不会被爬取。
      + 仅限主机：将爬取限制为属于同一主机的网页。例如，如果种子 URL 为“https://aws.amazon.com/bedrock/”，则包含“https://aws.amazon.com”的网页也会被爬取，比如“https://aws.amazon.com/ec2”。
      + 子域名：包括与种子 URL 具有相同主域名的任何网页的爬取。例如，如果种子 URL 为“https://aws.amazon.com/bedrock/”，则任何包含“amazon.com”（子域名）的网页都将被爬取，例如“https://www.amazon.com”。
**注意**  
确保您没有爬取可能过多的网页。不建议在没有筛选条件或范围限制的情况下爬取大型网站，例如 wikipedia.org。爬取大型网站需要很长时间。  
如果文件类型没有排除模式，则无论范围大小都会爬取[支持的文件类型](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html)。

   1. 输入**爬取速度上限**。每台主机每分钟推送 1 到 300 个 URL。较高的爬取速度会增加负载，但耗时较短。

   1. 输入 1 到 25000 之间的**数据来源同步的最大页数**。限制从您的源 URL 中爬取的最大网页数量。如果网页超过此数量，则数据来源同步将失败，并且不会摄取任何网页。

   1. 对于 **URL Regex** 模式（可选），您可以通过在框中输入正则表达式模式来添加**包含模式**或**排除模式**。通过选择**添加新模式**，您最多可以添加 25 种包含和 25 种排除筛选模式。包含和排除模式将根据您的范围进行爬取。如果存在冲突，则优先使用排除模式。

1. （可选）在**内容解析和分块**部分，您可以自定义如何对数据进行解析和分块。要了解有关这些定制设置的更多信息，请参阅以下资源：
   + 有关解析选项的更多信息，请参阅[数据来源的解析选项](kb-advanced-parsing.md)。
   + 有关分块策略的更多信息，请参阅[知识库的内容分块是如何运作的](kb-chunking.md)。
**警告**  
连接到数据来源后，就无法更改分块策略。
   + 有关如何自定义数据分块和使用 Lambda 函数处理元数据的详细信息，请参阅[使用自定义转换 Lambda 函数定义数据的摄取方式](kb-custom-transformation.md)。

1. 继续选择嵌入模型和向量存储。要查看剩余步骤，请在连接数据来源后返回[在 Amazon Bedrock 知识库中通过连接到数据来源创建知识库](knowledge-base-create.md)，然后继续执行该步骤。

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

要使用 Web 爬网程序将知识库连接到数据来源，请使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 请求，在 [DataSourceConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DataSourceConfiguration.html) 的 `type` 字段中指定 `WEB`，并包括 `webConfiguration` 字段。以下是您的 Amazon Bedrock 知识库的 Web 爬网程序配置示例。

```
{
    "webConfiguration": {
        "sourceConfiguration": {
            "urlConfiguration": {
                "seedUrls": [{
                    "url": "https://www.examplesite.com"
                }]
            }
        },
        "crawlerConfiguration": {
            "crawlerLimits": {
                "rateLimit": 50,
                "maxPages": 100
            },
            "scope": "HOST_ONLY",
            "inclusionFilters": [
                "https://www\.examplesite\.com/.*\.html"
            ],
            "exclusionFilters": [
                "https://www\.examplesite\.com/contact-us\.html"
            ],
            "userAgent": "CustomUserAgent"
        }
    },
    "type": "WEB"
}
```

要了解可以通过添加可选的 `vectorIngestionConfiguration` 字段来应用于摄取的定制设置，请参阅[自定义数据来源的摄取](kb-data-source-customize-ingestion.md)。

------

# 将知识库连接到自定义数据来源
<a name="custom-data-source-connector"></a>

您可以不必选择支持的数据来源服务，而是连接到自定义数据来源以获得以下优势：
+ 更好的灵活性，并可控制您希望知识库访问的数据类型。
+ 能够使用 `KnowledgeBaseDocuments` API 操作直接摄取或删除文档而无需同步更改。
+ 能够直接通过 Amazon Bedrock 控制台或 API 查看数据来源中的文档。
+ 能够直接在中将文档上传到数据源AWS 管理控制台或以内联方式添加文档。
+ 能够在数据来源中添加或更新文档时，直接向每个文档添加元数据。有关在从数据来源检索信息时如何使用元数据进行筛选的更多信息，请参阅[配置和自定义查询与响应生成](kb-test-config.md)中的**元数据和筛选**标签页。

**多模式内容支持**  
自定义数据源支持多模式内容，包括最大 10MB base64 编码的图像、音频和视频文件。有关使用多式联运内容的全面指导，请参阅[为多模式内容建立知识库](kb-multimodal.md)。

要将知识库连接到自定义数据源，请使用[适用于 Amazon Bedrock 构建时终端节点的代理](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送[CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html)请求。指定知识库要连接到的 `knowledgeBaseId`，向数据来源提供 `name`，然后将 `dataSourceConfiguration` 中的 `type` 字段指定为 `CUSTOM`。以下是创建此数据来源的极简示例：

```
PUT /knowledgebases/KB12345678/datasources/ HTTP/1.1
Content-type: application/json

{
    "name": "MyCustomDataSource",
    "dataSourceConfiguration": {
        "type": "CUSTOM"
    }
}
```

您可以包括以下任一可选字段来配置数据来源：


****  

| 字段 | 使用案例 | 
| --- | --- | 
| 描述 | 提供数据来源的描述。 | 
| clientToken | 用于确保 API 请求仅完成一次。有关更多信息，请参阅[确保幂等性](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html)。 | 
| serverSideEncryption配置 | 在将数据转换为嵌入时，为临时数据存储指定自定义 KMS 密钥。有关更多信息，请参阅 [加密数据提取期间的临时数据存储](encryption-kb.md#encryption-kb-ingestion)。 | 
| dataDeletionPolicy | 配置在删除数据来源后，如何处理向量存储中数据来源的向量嵌入。指定 RETAIN 以便将数据保留在向量存储中，或者使用默认选项 DELETE 来删除这些数据。 | 
| vectorIngestionConfiguration | 配置数据来源摄取选项。有关更多信息，请参阅下文。 | 

该`vectorIngestionConfiguration`字段映射到包含以下字段的[VectorIngestionConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorIngestionConfiguration.html)对象：
+ chunkingConfiguration – 配置用于对数据来源中的文档进行分块的策略。有关分块策略的更多信息，请参阅[知识库的内容分块是如何运作的](kb-chunking.md)。
+ parsingConfiguration – 配置用于解析数据来源的策略。有关解析选项的更多信息，请参阅[数据来源的解析选项](kb-advanced-parsing.md)。
+ customTransformationConfiguration — 自定义数据的转换方式并应用 Lambda 函数以实现更大的自定义。有关如何自定义数据分块和使用 Lambda 函数处理元数据的详细信息，请参阅[使用自定义转换 Lambda 函数定义数据的摄取方式](kb-custom-transformation.md)。

设置自定义数据来源后，您可以向其中添加文档，然后直接将其摄取到知识库中。与其他数据来源不同，您无需同步自定义数据来源。要了解如何直接摄取文档，请参阅[将更改直接摄取到知识库中](kb-direct-ingestion.md)。

# 自定义数据来源的摄取
<a name="kb-data-source-customize-ingestion"></a>

在连接数据源时，您可以通过在发送请求时修改`vectorIngestionConfiguration`字段的值来自定义矢量摄取。 AWS 管理控制台 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html)

选择一个主题，了解如何在连接到数据来源时，将自定义摄取所需的配置包括在内：

**Topics**
+ [选择用于解析的工具](#kb-data-source-customize-parsing)
+ [选择分块策略](#kb-data-source-customize-chunking)
+ [在摄取期间使用 Lambda 函数](#kb-data-source-customize-lambda)

## 选择用于解析的工具
<a name="kb-data-source-customize-parsing"></a>

您可以自定义数据中文档的解析方式。要了解有关在 Amazon Bedrock 知识库中解析数据的选项，请参阅[数据来源的解析选项](kb-advanced-parsing.md)。

**警告**  
您在连接到数据来源后，便无法更改解析策略。要使用不同的解析策略，可以添加新的数据来源。  
创建知识库之后，便无法再添加 S3 位置来存储多模态数据（包括图像、数字、图表和表格）。如果要包含多模态数据并使用支持此类数据的解析器，必须创建新的知识库。

选择解析策略所涉及的步骤取决于您是使用 Amazon Bedrock API 还是 Amazon Bedrock API 以及您选择的解析方法。 AWS 管理控制台 如果您选择支持多模态数据的解析方法，则必须指定 S3 URI，以存储从文档中提取的多模态数据。这些数据可以在知识库查询中返回。
+ 在中 AWS 管理控制台，执行以下操作：

  1. 在设置知识库过程中连接到数据来源时，或者在向现有知识库添加新数据来源时，选择解析策略。

  1. （如果您选择 Amazon Bedrock 数据自动化或基础模型作为解析策略）在选择嵌入模型并配置向量存储时，在**多模态存储目标**部分中指定一个 S3 URI，以存储从文档中提取的多模态数据。您还可以在此步骤中，选择使用客户托管密钥来加密 S3 数据。
+ 在 Amazon Bedrock API 中，执行以下操作：

  1. （如果您计划使用 Amazon Bedrock 数据自动化或基础模型作为解析策略）[SupplementalDataStorageLocation](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_SupplementalDataStorageLocation.html)在请求中加[VectorKnowledgeBaseConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorKnowledgeBaseConfiguration.html)入。[CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html)

  1. [ParsingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ParsingConfiguration.html)在[CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html)请求的`parsingConfiguration`字段[VectorIngestionConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorIngestionConfiguration.html)中加入。
**注意**  
如果您省略此配置，Amazon Bedrock 知识库将使用 Amazon Bedrock 默认解析器。

有关如何在 API 中指定解析策略的更多详细信息，请展开与您要使用的解析策略相对应的部分：

### Amazon Bedrock 默认解析器
<a name="w2aac28c10c23c15c17c11c13b1"></a>

要使用默认解析器，请不要将 `parsingConfiguration` 字段包括在 `VectorIngestionConfiguration` 中。

### Amazon Bedrock 数据自动化解析器（预览版）
<a name="w2aac28c10c23c15c17c11c13b3"></a>

要使用 Amazon Bedrock 数据自动化解析器，请在的`parsingStrategy`字段`BEDROCK_DATA_AUTOMATION`中指定，`ParsingConfiguration`并在`bedrockDataAutomationConfiguration`字段[BedrockDataAutomationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_BedrockDataAutomationConfiguration.html)中加入，格式如下：

```
{
    "parsingStrategy": "BEDROCK_DATA_AUTOMATION",
    "bedrockDataAutomationConfiguration": {
        "parsingModality": "string"
    }
}
```

### 基础模型
<a name="w2aac28c10c23c15c17c11c13b5"></a>

要使用基础模型作为解析器，请在的`parsingStrategy`字段`BEDROCK_FOUNDATION_MODEL`中指定，`ParsingConfiguration`并在`bedrockFoundationModelConfiguration`字段[BedrockFoundationModelConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_BedrockFoundationModelConfiguration.html)中包含一个，格式如下：

```
{
    "parsingStrategy": "BEDROCK_FOUNDATION_MODEL",
    "bedrockFoundationModelConfiguration": {
        "modelArn": "string",
        "parsingModality": "string",
        "parsingPrompt": {
            "parsingPromptText": "string"
        }
    }
}
```

## 选择分块策略
<a name="kb-data-source-customize-chunking"></a>

您可以自定义如何对数据中的文档进行分块，以进行存储和检索。要了解有关在 Amazon Bedrock 知识库中进行数据分块的选项，请参阅[知识库的内容分块是如何运作的](kb-chunking.md)。

**警告**  
连接到数据来源后，就无法更改分块策略。

在连接数据源时， AWS 管理控制台 您可以选择分块策略。使用 Amazon Bedrock API，您可以[ChunkingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ChunkingConfiguration.html)在 “” `chunkingConfiguration` 字段中加入。[VectorIngestionConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorIngestionConfiguration.html)

**注意**  
如果您省略此配置，Amazon Bedrock 会将您的内容分为大约 300 个词元组成的块，同时保留句子边界。

展开与您要使用的解析策略相对应的部分：

### 不分块
<a name="w2aac28c10c23c15c17c13c13b1"></a>

要将数据来源中的每个文档视为单个源分块，请在 `ChunkingConfiguration` 的 `chunkingStrategy` 字段中指定 `NONE`，格式如下：

```
{
    "chunkingStrategy": "NONE"
}
```

### 固定大小分块
<a name="w2aac28c10c23c15c17c13c13b3"></a>

要将数据源中的每个文档分成大小大致相同的块，请在的`chunkingStrategy`字段`FIXED_SIZE`中指定，`ChunkingConfiguration`并在`fixedSizeChunkingConfiguration`字段[FixedSizeChunkingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FixedSizeChunkingConfiguration.html)中包含一个，如下所示：

```
{
    "chunkingStrategy": "FIXED_SIZE",
    "fixedSizeChunkingConfiguration": {
        "maxTokens": number,
        "overlapPercentage": number
    }
}
```

### 分层分块
<a name="w2aac28c10c23c15c17c13c13b5"></a>

要将数据来源中的每个文档分为两个层，其中第二层包含从第一层派生的较小分块，请在 `ChunkingConfiguration` 的 `chunkingStrategy` 字段中指定 `HIERARCHICAL`，并将 `hierarchicalChunkingConfiguration` 字段包括在内，格式如下：

```
{
    "chunkingStrategy": "HIERARCHICAL",
    "hierarchicalChunkingConfiguration": {
        "levelConfigurations": [{
            "maxTokens": number
        }],
        "overlapTokens": number
    }
}
```

### 语义分块
<a name="w2aac28c10c23c15c17c13c13b7"></a>

要将数据来源中的每个文档分为按语义含义（而非语法结构）区分优先级的分块，请在 `ChunkingConfiguration` 的 `chunkingStrategy` 字段中指定 `SEMANTIC`，并将 `semanticChunkingConfiguration` 字段包括在内，格式如下：

```
{
    "chunkingStrategy": "SEMANTIC",
    "semanticChunkingConfiguration": {
        "breakpointPercentileThreshold": number,
        "bufferSize": number,
        "maxTokens": number
    }
}
```

## 在摄取期间使用 Lambda 函数
<a name="kb-data-source-customize-lambda"></a>

您可以通过以下方式，使用 Lambda 函数对如何将数据中的源分块写入向量存储进行后处理：
+ 将提供自定义分块策略的分块逻辑包括在内。
+ 将指定块级元数据的逻辑包括在内。

要了解如何编写自定义 Lambda 函数用于摄取，请参阅[使用自定义转换 Lambda 函数定义数据的摄取方式](kb-custom-transformation.md)。在连接数据源时， AWS 管理控制台 您可以选择 Lambda 函数。使用 Amazon Bedrock API，您可以在的`CustomTransformationConfiguration`字段[CustomTransformationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CustomTransformationConfiguration.html)中加入，[VectorIngestionConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorIngestionConfiguration.html)并指定 Lambda 的 ARN，格式如下：

```
{
    "transformations": [{
        "transformationFunction": {
            "transformationLambdaConfiguration": {
                "lambdaArn": "string"
            }
        },
        "stepToApply": "POST_CHUNKING"
    }],
    "intermediateStorage": {
        "s3Location": {
            "uri": "string"
        }
    }
}
```

您还可以在应用 Lambda 函数后，指定要存储输出的 S3 位置。

您可以将 `chunkingConfiguration` 字段包括在内，以在应用 Amazon Bedrock 提供的分块选项之一后，应用 Lambda 函数。

# 为知识库设置安全配置
<a name="kb-create-security"></a>

创建知识库后，您可能需要设置以下安全配置：

**Topics**
+ [为知识库设置数据访问策略](#kb-create-security-data)
+ [为您的 Amazon OpenSearch 无服务器知识库设置网络访问策略](#kb-create-security-network)

## 为知识库设置数据访问策略
<a name="kb-create-security-data"></a>

如果您使用的是[自定义角色](kb-permissions.md)，请为新创建的知识库设置安全配置。如果您让 Amazon Bedrock 为您创建服务角色，则可以跳过此步骤。按照与您设置的数据库相对应的选项卡中的步骤进行操作。

------
#### [ Amazon OpenSearch Serverless ]

要将对 Amazon OpenSearch Serverless 集合的访问权限限制为知识库服务角色，请创建数据访问策略。您可以通过下列方式来执行此操作：
+ 按照亚马逊 OpenSearch 服务开发者指南中的[创建数据访问策略（控制台）](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-data-access.html#serverless-data-access-console)中的步骤使用亚马逊 OpenSearch 服务控制台。
+ 通过发送带有[OpenSearch 无服务器端点](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html#opensearch-service-regions)的[CreateAccessPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateAccessPolicy.html)请求来使用 AWS API。有关AWS CLI示例，请参阅[创建数据访问策略（AWS CLI）](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-data-access.html#serverless-data-access-cli)。

使用以下数据访问策略，指定 Amazon OpenSearch Serverless 集合和您的服务角色：

```
[
    {
        "Description": "${data access policy description}",
        "Rules": [
          {
            "Resource": [
              "index/${collection_name}/*"
            ],
            "Permission": [
                "aoss:DescribeIndex",
                "aoss:ReadDocument",
                "aoss:WriteDocument"
            ],
            "ResourceType": "index"
          }
        ],
        "Principal": [
            "arn:aws:iam::${account-id}:role/${kb-service-role}"
        ]
    }
]
```

------
#### [ Pinecone, Redis 企业云 or MongoDB Atlas ]

要集成Pinecone、Redis Enterprise Cloud、MongoDB Atlas 向量索引，请将以下基于身份的策略附加到您的知识库服务角色，以允许其访问向量索引AWS Secrets Manager的密钥。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "bedrock:AssociateThirdPartyKnowledgeBase"
        ],
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "bedrock:ThirdPartyKnowledgeBaseCredentialsSecretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:${secret-id}"
            }
        }
    }]
}
```

------

------

## 为您的 Amazon OpenSearch 无服务器知识库设置网络访问策略
<a name="kb-create-security-network"></a>

如果您使用私有 Amazon OpenSearch Serverless 集合作为知识库，则只能通过 AWS PrivateLink VPC 终端节点对其进行访问。您可以在[设置亚马逊 OpenSearch 无服务器矢量集合时创建私有的 Amazon OpenSearch Serverless 集合](knowledge-base-setup.md)，也可以在配置其网络访问策略时将现有的亚马逊 OpenSearch 无服务器集合（包括亚马逊 Bedrock 控制台为您创建的集合）设为私有。

《亚马逊 OpenSearch 服务开发者指南》中的以下资源将帮助您了解私有 Amazon OpenSearch Serverless 集合所需的设置：
+ 有关为私有 Amazon OpenSearch Serverless 集合设置 VPC 终端节点的更多信息，请参阅[使用接口终端节点访问 Amazon OpenSearch Serverless（）AWS PrivateLink](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vpc.html)。
+ 有关 Amazon Serverless 中网络访问策略的更多信息，请参阅 Amazon OpenSearch Serv [ OpenSearch erless 的网络访问权限](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-network.html)。

要允许 Amazon Bedrock 知识库访问亚马逊 OpenSearch 无服务器的私有馆藏，您必须编辑亚马逊 OpenSearch 无服务器集合的网络访问策略，以允许 Amazon Bedrock 作为源服务。选择与您的首选方法对应的选项卡，然后按照以下步骤操作：

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

1. 打开亚马逊 OpenSearch 服务控制台，网址为[https://console.aws.amazon.com/aos/](https://console.aws.amazon.com/aos/)。

1. 从左侧导航窗格中选择**集合**。然后选择您的集合。

1. 在**网络**部分，选择**关联策略**。

1. 选择**编辑**。

1. 对于**选择策略定义方法**，请执行以下操作之一：
   + 将**选择策略定义方法**保留为**可视化编辑器**，并在**规则 1** 部分配置以下设置：

     1. （可选）在**规则名称**字段中，输入网络访问规则的名称。

     1. 在**访问如下位置的集合**下，选择**私有（推荐）**。

     1. 选择 **AWS 服务私有访问权限**。在文本框中输入 **bedrock.amazonaws.com**。

     1. 取消选择 “**启用对 OpenSearch 仪表板的访问权限**”。
   + 选择 **JSON**，然后将以下策略粘贴到 **JSON 编辑器**。

     ```
     [
         {                                        
             "AllowFromPublic": false,
             "Description":"${network access policy description}",
             "Rules":[
                 {
                     "ResourceType": "collection",
                     "Resource":[
                         "collection/${collection-id}"
                     ]
                 }
             ],
             "SourceServices":[
                 "bedrock.amazonaws.com"
             ]
         }
     ]
     ```

1. 选择**更新**。

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

要编辑您的 Amazon OpenSearch Serverless 馆藏的网络访问策略，请执行以下操作：

1. 使用[OpenSearch 无服务器端点](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html#opensearch-service-regions)发送[GetSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetSecurityPolicy.html)请求。指定策略的 `name`，然后将 `type` 指定为 `network`。记下响应中的 `policyVersion`。

1. 使用[OpenSearch 无服务器端点](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html#opensearch-service-regions)发送[UpdateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateSecurityPolicy.html)请求。至少指定以下字段：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/kb-create-security.html)

   ```
   [
       {                                        
           "AllowFromPublic": false,
           "Description":"${network access policy description}",
           "Rules":[
               {
                   "ResourceType": "collection",
                   "Resource":[
                       "collection/${collection-id}"
                   ]
               }
           ],
           "SourceServices":[
               "bedrock.amazonaws.com"
           ]
       }
   ]
   ```

有关AWS CLI示例，请参阅[创建数据访问策略（AWS CLI）](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-data-access.html#serverless-data-access-cli)。

------
+ 按照[创建网络策略（控制 OpenSearch 台）中的步骤使用 Amazon Service 控制台](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-network.html#serverless-network-console)。在集合详细信息的**网络**部分注明**关联策略**，而不是创建网络策略。

# 将您的数据与 Amazon Bedrock 知识库同步
<a name="kb-data-source-sync-ingest"></a>

创建完知识库后，需要摄取或同步数据，以便查询数据。摄取根据您指定的向量嵌入模型和配置，将数据来源中的原始数据转换为向量嵌入。

在开始摄取之前，请检查您的数据来源是否满足以下条件：
+ 您已经为数据来源配置了连接信息。要配置数据来源连接器以从数据来源存储库中抓取数据，请参阅 [Supported data source connectors](https://docs.aws.amazon.com/bedrock/latest/userguide/data-source-connectors.html)。在创建知识库的过程中，您可以配置数据来源。
+ 您已经配置了所选的向量嵌入模型和向量存储。请参阅 [supported vector embeddings models](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-supported.html) 和 [vector stores for knowledge bases](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-setup.html)。在创建知识库的过程中，您可以配置向量嵌入。
+ 文件采用受支持的格式。有关更多信息，请参阅[支持的文档格式](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html#kb-ds-supported-doc-formats-limits)。
+ 这些文件不超过 AWS 一般参考 中的 [Amazon Bedrock endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/bedrock.html) 中指定的**摄取作业文件大小**。
+ 如果您的数据来源包含元数据文件，请检查以下条件以确保元数据文件不会被忽略：
  + 每个 `.metadata.json` 文件都与其关联的源文件共享相同的文件名和扩展名。
  + 如果知识库的向量索引位于 Amazon OpenSearch 无服务器向量存储中，请检查向量索引是否使用 `faiss` 引擎配置。如果向量索引是使用 `nmslib` 引擎配置，则您必须执行以下操作之一：
    + 在控制台中[创建新的知识库](knowledge-base-create.md)，让 Amazon Bedrock 在 Amazon OpenSearch 无服务器中自动为您创建向量索引。
    + 在向量存储中[创建另一个向量索引](knowledge-base-setup.md)，然后选择 `faiss` 作为**引擎**。然后[创建新的知识库](knowledge-base-create.md)并指定新的向量索引。
  + 如果知识库的向量索引位于 Amazon Aurora 数据库集群中，我们建议您使用自定义元数据字段将所有元数据存储在单列中，并对该列创建索引。如果未提供自定义元数据字段，那么必须在开始摄取之前，检查索引表格是否包含元数据文件中每个元数据属性的列。有关更多信息，请参阅[将您创建的向量存储用于知识库的先决条件](knowledge-base-setup.md)。

每次在数据来源中添加、修改或删除文件时，您都必须同步数据来源，以便将其重新索引到知识库中。同步是增量式的，因此 Amazon Bedrock 仅处理自上次同步以来添加、修改或删除的文档。

要了解如何将数据摄取到知识库中并同步最新数据，请选择与您的首选方法对应的选项卡，然后按照以下步骤操作：

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

**将数据摄取到知识库中并同步最新数据**

1. 通过以下网址打开 Amazon Bedrock 控制台：[https://console.aws.amazon.com/bedrock/](https://console.aws.amazon.com/bedrock/)。

1. 从左侧导航窗格中选择**知识库**，然后选择您的知识库。

1. 在**数据来源**部分中，选择**同步**以开始数据摄取或同步最新数据。要停止当前正在同步的数据来源，请选择**停止**。数据来源当前必须处于同步状态才能停止同步该数据来源。您可以再次选择**同步**以摄取其余数据。

1. 数据摄取完成后，如果成功则会显示绿色成功横幅。
**注意**  
数据同步完成后，如果您使用的是 Amazon Aurora (RDS) 以外的向量存储，则可能需要几分钟时间才能将新同步数据的向量嵌入反映到您的知识库中，并可供查询。

1. 您可以选择一个数据来源，查看其**同步历史记录**。选择**查看警告**以查看数据摄取作业失败的原因。

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

要将您的数据摄取到知识库中并同步最新数据，请使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) 请求。指定 `knowledgeBaseId` 和 `dataSourceId`。您还可以通过发送 [StopIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StopIngestionJob.html) 请求来停止当前正在运行的数据摄取作业。指定 `dataSourceId`、`ingestionJobId` 和 `knowledgeBaseId`。数据摄取作业必须当前正在运行才能停止数据摄取。准备就绪后，您可以再次发送 `StartIngestionJob` 请求以摄取其余的数据。

使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发出的 [GetIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html) 请求响应中返回的 `ingestionJobId` 来跟踪摄取作业的状态。此外，请指定 `knowledgeBaseId` 和 `dataSourceId`。
+ 摄取作业完成后，响应中的 `status` 为 `COMPLETE`。
**注意**  
数据摄取完成后，如果您使用 Amazon Aurora（RDS）以外的向量存储，则可能需要几分钟时间才能在向量存储中显示新摄取数据的向量嵌入以供查询。
+ 响应中的 `statistics` 对象会返回有关数据来源中文档的摄取是否成功的信息。

您还可以使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [ListIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListIngestionJobs.html) 请求，查看数据来源的所有摄取作业的信息。指定要将数据摄取到的知识库的 `dataSourceId` 和 `knowledgeBaseId`。
+ 通过在 `filters` 对象中指定要搜索的状态来筛选结果。
+ 通过指定 `sortBy` 对象，按作业启动时间或作业状态进行排序。您可以按升序或降序进行排序。
+ 在 `maxResults` 字段中设置要在响应中返回的结果数量上限。如果结果数超过您设置的值，响应会返回 `nextToken`，您可以再发送一个 [ListIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListIngestionJobs.html) 请求并在其中包含它，以查看下一批作业。

------

# 将更改直接摄取到知识库中
<a name="kb-direct-ingestion"></a>

通过 Amazon Bedrock 知识库，可以在一个步骤中修改数据来源并同步更改。如果知识库已连接到以下类型的数据来源之一，则可利用此功能：
+ Amazon S3
+ 自定义

通过直接摄取，您只需一个操作即可直接在知识库中添加、更新或删除文件，知识库无需同步即可访问文档。直接摄取会使用 `KnowledgeBaseDocuments` API 操作，对您直接提交到为知识库设置的向量存储中的文档编制索引。您还可以通过这些操作直接查看知识库中的文档，而不必导航到连接的数据来源进行查看。

## 与同步数据来源的区别
<a name="kb-direct-ingestion-sync-diff"></a>

Amazon Bedrock 知识库还提供了一组与[同步数据来源](kb-data-source-sync-ingest.md)相关的 `IngestionJob` API 操作。如果您使用 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) 同步数据来源，Amazon Bedrock 知识库会扫描连接的数据来源中的每个文档，并验证是否已将其编入为知识库设置的向量存储的索引中。如果还没有编入索引，则将其编入向量存储的索引中。

通过 [IngestKnowledgeBaseDocuments](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_IngestKnowledgeBaseDocuments.html) 请求，您可以提交一系列文档，直接编入向量存储的索引中。因此，您可以跳过将文档添加到数据来源中这一步骤。请查看以下几段，了解这两组 API 操作的使用案例：

**如果使用自定义数据来源**  
您无需同步或使用 `IngestionJob` 操作。您通过 `KnowledgeBaseDocuments` 操作或在 AWS 管理控制台中添加、修改或删除的那些文档，将同时成为自定义数据来源和知识库的一部分。

**如果使用 Amazon S3 数据来源**  
您可以在不同使用案例中使用这两组操作：
+ 首次将知识库连接到 S3 数据来源后，必须在 AWS 管理控制台中同步数据来源，也可以通过 Amazon Bedrock API 提交 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) 请求，来同步数据来源。
+ 将文档编入为知识库设置的向量存储的索引中，或者通过以下方式删除已编入索引的文档：

  1. 将文档添加到 S3 位置或从中删除文档。然后，在 AWS 管理控制台中同步数据来源，或者在 API 中提交 `StartIngestionJob` 请求。有关同步和 `StartIngestionJob` 操作的详细信息，请参阅[将您的数据与 Amazon Bedrock 知识库同步](kb-data-source-sync-ingest.md)。

  1. 通过 `IngestKnowledgeBaseDocuments` 请求将 S3 文档直接摄取到知识库中。有关直接摄取文档的详细信息，请参阅[将文档直接摄取到知识库中](kb-direct-ingestion-add.md)。
**警告**  
对于 S3 数据来源，您在 AWS 管理控制台中或通过 `KnowledgeBaseDocuments` API 操作直接编入知识库索引的任何更改，都不会体现在 S3 位置中。您可以使用这些 API 操作，只需一个步骤即可立即对知识库进行更改。但是，您应该在 S3 位置中进行同样的更改以保持同步，这样当您下次在 AWS 管理控制台中或通过 `StartIngestionJob` 同步数据来源时，这些更改便不会被覆盖。  
请勿同时提交 `IngestKnowledgeBaseDocuments` 和 `StartIngestionJob` 请求。

选择一个主题，了解如何在数据来源中执行文档的直接摄取：

**Topics**
+ [与同步数据来源的区别](#kb-direct-ingestion-sync-diff)
+ [直接摄取的先决条件](kb-direct-ingestion-prereq.md)
+ [将文档直接摄取到知识库中](kb-direct-ingestion-add.md)
+ [查看数据来源中文档的相关信息](kb-direct-ingestion-view.md)
+ [从知识库中直接删除文档](kb-direct-ingestion-delete.md)

# 直接摄取的先决条件
<a name="kb-direct-ingestion-prereq"></a>

要使用直接摄取，IAM 角色必须拥有使用 `KnowledgeBaseDocs` API 操作的权限。如果您的 IAM 角色附加了[AmazonBedrockFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockFullAccess)AWS托管策略，则可以跳过此部分。

可以将以下策略附加到 IAM 角色，以允许其对您在 `Resource` 字段中指定的知识库执行直接摄取。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DirectIngestion",
            "Effect": "Allow",
            "Action": [
                "bedrock:StartIngestionJob",
                "bedrock:IngestKnowledgeBaseDocuments",
                "bedrock:GetKnowledgeBaseDocuments",
                "bedrock:ListKnowledgeBaseDocuments",
                "bedrock:DeleteKnowledgeBaseDocuments"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/${KnowledgeBaseId}"
            ]
        }
    ]
}
```

------

要进一步限制权限，您可以忽略操作，或者指定用于筛选权限的资源和条件键。有关操作、资源和条件键的更多信息，请参阅《服务授权参考》**中的以下主题：
+ [Amazon Bedrock 定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-actions-as-permissions) – 了解操作、您可以在 `Resource` 字段中限定范围的资源类型，以及 `Condition` 字段中可用于筛选权限的条件键。
+ [Amazon Bedrock 定义的资源类型](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-resources-for-iam-policies) – 了解 Amazon Bedrock 中的资源类型。
+ [Amazon Bedrock 的条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys) – 了解 Amazon Bedrock 中的条件键。

# 将文档直接摄取到知识库中
<a name="kb-direct-ingestion-add"></a>

本主题描述了如何将文档直接摄取到知识库中。您可以直接摄取的文档类型是有限制的，具体取决于您的数据来源。对于可用于指定要摄取的文档的方法限制，请参阅下表：


****  

| 数据来源类型 | 以内嵌方式定义的文档 | Amazon S3 位置中的文档 | 
| --- | --- | --- | 
| Amazon S3 | ![\[Red circular icon with an X symbol, indicating cancellation or denial.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/icon-no.png)否 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/icon-yes.png)是 | 
| 自定义 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/icon-yes.png)是 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/icon-yes.png)是 | 

展开与您的使用案例相对应的部分：

**注意**  
如果使用控制台，则最多可以将 10 个文档直接摄取到知识库中。如果改用 `IngestKnowledgeBaseDocuments` API，则最多可以将 25 个文档摄取到知识库中。有关此配额的更多信息，请参阅《AWS 通用参考指南》**中的 [Amazon Bedrock 服务配额](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#limits_bedrock)。

## 使用控制台
<a name="kb-direct-ingestion-add-console"></a>

要直接在中添加或修改文档 AWS 管理控制台，请执行以下操作：

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

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

1. 在**知识库**部分，选择要将文档摄取到的知识库。

1. 在**数据来源**部分，选择要在其中添加、修改或删除文档的数据来源。

1. 在**文档**部分，选择**添加文档**。然后，执行以下操作之一：
   + 要直接添加或修改文档，请选择**直接添加文档**。然后执行以下操作：

     1. 在**文档标识符**字段中，为文档指定一个唯一的名称。如果您指定的名称已存在于数据来源中，则该文档将被替换。

     1. 要上传文档，请选择**上传**。要以内嵌方式定义文档，请选择**以内嵌方式添加文档**，然后选择格式并在框中输入文档的文本。

     1. （可选）要将元数据与文档关联，请选择**添加元数据**并输入键、类型和值。
   + 要通过指定文档的 S3 位置来添加或修改文档，请选择**添加 S3 文档**。然后执行以下操作：

     1. 在**文档标识符**字段中，为文档指定一个唯一的名称。如果您指定的名称已存在于数据来源中，则该文档将被替换。

     1. 指定文档的 **S3 位置**是在您的当前 AWS 账户中还是在其他账户中。然后指定文档的 S3 URI。

     1. （可选）要将元数据与文档关联，请选择**元数据来源**。指定元数据的 S3 URI，或选择**添加元数据**并输入键、类型和值。

1. 要摄取文档和任何关联的元数据，请选择**添加**。

## 使用 API
<a name="kb-direct-ingestion-add-api"></a>

要使用 Amazon Bedrock API 将文档直接提取到知识库中，请向 [Amazon Bedrock 代理构建时终端节点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送[IngestKnowledgeBaseDocuments](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_IngestKnowledgeBaseDocuments.html)请求，并指定知识库及其连接的数据源的 ID。

**注意**  
如果您指定的文档标识符或 S3 位置已存在于知识库中，则该文档将被新内容覆盖。

请求正文包含一个字段`documents`，该字段映射到一组[KnowledgeBaseDocument](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_KnowledgeBaseDocument.html)对象，每个对象都表示要添加到数据源并提取到知识库中的文档的内容和可选元数据。[KnowledgeBaseDocument](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_KnowledgeBaseDocument.html) 对象包含以下字段：
+ content-映射到包含要添加的文档内容相关信息的[DocumentContent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentContent.html)对象。
+ metadata-（可选）映射到包含要添加的文档元数据相关信息的[DocumentMetadata](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentMetadata.html)对象。有关如何在检索期间使用元数据的更多信息，请参阅[配置和自定义查询与响应生成](kb-test-config.md)中的**元数据和筛选**部分。

选择一个主题，了解如何摄取不同数据来源类型的文档或查看示例：

**Topics**
+ [将文档摄取到与自定义数据来源相连的知识库中](#kb-direct-ingestion-add-custom)
+ [将文档摄取到与 Amazon S3 数据来源相连的知识库中](#kb-direct-ingestion-add-s3)
+ [请求正文示例](#w2aac28c10c23c19c17c11b3c19)

### 将文档摄取到与自定义数据来源相连的知识库中
<a name="kb-direct-ingestion-add-custom"></a>

`dataSourceId`如果您指定的属于自定义数据源，则可以为`documents`数组中的每个[KnowledgeBaseDocument](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_KnowledgeBaseDocument.html)对象添加内容和元数据。

可以使用以下方式，定义添加到自定义数据来源的文档内容：

#### 以内嵌方式定义文档
<a name="kb-direct-ingestion-add-custom-inline"></a>

您可以采用内嵌方式定义以下类型的文档：

------
#### [ Text ]

如果文档是文本，则[DocumentContent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentContent.html)对象应采用以下格式：

```
{ 
    "custom": { 
        "customDocumentIdentifier": { 
            "id": "string"
        },
        "inlineContent": { 
            "textContent": { 
                "data": "string"
            },
            "type": "TEXT"
        },
        "sourceType": "IN_LINE"
    },
    "dataSourceType": "CUSTOM"
}
```

文档 ID 包括在 `id` 字段中，文档的文本包括在 `data` 字段中。

------
#### [ Bytes ]

如果文档不止包含文本，请将其转换为 Base64 字符串。然后，该[DocumentContent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentContent.html)对象应采用以下格式：

```
{ 
    "custom": { 
        "customDocumentIdentifier": { 
            "id": "string"
        },
        "inlineContent": { 
            "byteContent": { 
                "data": blob,
                "mimeType": "string"
            },
            "type": "BYTE"
        },
        "sourceType": "IN_LINE"
    },
    "dataSourceType": "CUSTOM"
}
```

文档 ID 包括在 `id` 字段中，Base64 编码的文档包括在 `data` 字段中，MIME 类型包括在 `mimeType` 字段中。

------

#### 从 S3 摄取文档
<a name="w2aac28c10c23c19c17c11b3c15b7b3"></a>

如果您要从 S3 位置提取文档，则`content`字段中的[DocumentContent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentContent.html)对象应采用以下格式：

```
{ 
    "custom": { 
        "customDocumentIdentifier": { 
            "id": "string"
        },
        "s3Location": { 
            "bucketOwnerAccountId": "string",
            "uri": "string"
        },
        "sourceType": "S3"
    },
    "dataSourceType": "CUSTOM"
}
```

文档 ID 包括在 `id` 字段中，包含文档的 S3 存储桶的所有者包括在 `bucketOwnerAccountId` 字段中，文档的 S3 URI 包括在 `uri` 字段中。

可以使用以下方式定义文档的元数据：

#### 以内嵌方式定义元数据
<a name="w2aac28c10c23c19c17c11b3c15c11b1"></a>

如果您以内联方式定义元数据，则`metadata`字段中的[DocumentMetadata](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentMetadata.html)对象应采用以下格式：

```
{ 
    "inlineAttributes": [ 
        { 
            "key": "string",
            "value": { 
                "stringValue": "string",
                "booleanValue": boolean,
                "numberValue": number,
                "stringListValue": [ "string" ],
                "type": "STRING" | "BOOLEAN" | "NUMBER" | "STRING_LIST"
            }
        }
    ],
    "type": "IN_LINE_ATTRIBUTE"
}
```

对于您添加的每个属性，请在 `key` 字段中定义密钥。在 `type` 字段中指定值的数据类型，并将与该数据类型对应的字段包括在内。例如，如果包含字符串，则属性将采用以下格式：

```
{ 
    "key": "string",
    "value": { 
        "stringValue": "string",
        "type": "STRING"
    }
}
```

#### 从 S3 摄取元数据
<a name="w2aac28c10c23c19c17c11b3c15c11b3"></a>

您还可以从 S3 位置中扩展名为 `.metadata.json` 的文件摄取元数据。有关元数据文件格式的更多信息，请参阅[将知识库连接到 Amazon S3](s3-data-source-connector.md)中的**文档元数据字段**部分。

如果元数据来自 S3 文件，则`metadata`字段中的[DocumentMetadata](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentMetadata.html)对象应采用以下格式：

```
{
    "s3Location": { 
        "bucketOwnerAccountId": "string",
        "uri": "string"
    },
        "type": "S3_LOCATION"
    }
 }
```

包含元数据文件的 S3 存储桶的所有者包括在 `bucketOwnerAccountId` 字段中，元数据文件的 S3 URI 包括在 `uri` 字段中。

**警告**  
如果您以内嵌方式定义了内容，则必须以内嵌方式定义元数据。

### 将文档摄取到与 Amazon S3 数据来源相连的知识库中
<a name="kb-direct-ingestion-add-s3"></a>

`dataSourceId`如果您指定的属于 S3 数据源，则可以为`documents`数组中的每个[KnowledgeBaseDocument](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_KnowledgeBaseDocument.html)对象添加内容和元数据。

**注意**  
对于 S3 数据来源，您只能从 S3 位置添加内容和元数据。

要添加到 S3 的 S3 文档的内容应按以下格式添加到[DocumentContent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentContent.html)对象中：

```
{ 
    "dataSourceType": "string",
    "s3": { 
        "s3Location": { 
            "uri": "string"
        }
    }
}
```

包含文档的 S3 存储桶的所有者包括在 `bucketOwnerAccountId` 字段中，文档的 S3 URI 包括在 `uri` 字段中。

可以使用以下方式，为添加到自定义数据来源的文档定义元数据：

```
{
    "s3Location": { 
        "bucketOwnerAccountId": "string",
        "uri": "string"
    },
        "type": "S3_LOCATION"
    }
 }
```

**警告**  
您直接摄取到与 S3 数据来源相连的知识库中的文档，不会添加到 S3 存储桶本身。我们建议您将这些文档也添加到 S3 数据来源中，这样在同步数据来源时，这些文档不会被删除或覆盖。

### 请求正文示例
<a name="w2aac28c10c23c19c17c11b3c19"></a>

展开以下部分，查看 `IngestKnowledgeBaseDocuments` 在不同使用案例中的请求正文：

#### 将自定义文本文档添加到自定义数据来源并进行摄取
<a name="w2aac28c10c23c19c17c11b3c19b5b1"></a>

以下示例显示了如何将一个文本文档添加到自定义数据来源：

```
PUT /knowledgebases/KB12345678/datasources/DS12345678/documents HTTP/1.1
Content-type: application/json

{
   "documents": [ 
      { 
         "content": { 
            "dataSourceType": "CUSTOM",
            "custom": { 
               "customDocumentIdentifier": { 
                  "id": "MyDocument"
               },
               "inlineContent": { 
                  "textContent": { 
                     "data": "Hello world!"
                  },
                  "type": "TEXT"
               },
               "sourceType": "IN_LINE"
            }
         }
     }
   ]
}
```

#### 将 Base64 编码的文档添加到自定义数据来源并进行摄取
<a name="w2aac28c10c23c19c17c11b3c19b5b3"></a>

以下示例显示如何将 PDF 文档添加到自定义数据来源：

```
PUT /knowledgebases/KB12345678/datasources/DS12345678/documents HTTP/1.1
Content-type: application/json

{
   "documents": [ 
      { 
         "content": { 
            "dataSourceType": "CUSTOM",
            "custom": { 
               "customDocumentIdentifier": { 
                  "id": "MyDocument"
               },
               "inlineContent": { 
                  "byteContent": { 
                     "data": "<Base64-encoded string>",
                     "mimeType": "application/pdf"
                  },
                  "type": "BYTE"
               },
               "sourceType": "IN_LINE"
            }
         }
     }
   ]
}
```

#### 将文档从 S3 位置添加到与自定义数据来源相连的知识库中并进行摄取
<a name="w2aac28c10c23c19c17c11b3c19b5b5"></a>

以下示例显示了如何将一个文本文档从 S3 位置添加到自定义数据来源：

```
PUT /knowledgebases/KB12345678/datasources/DS12345678/documents HTTP/1.1
Content-type: application/json

{
   "documents": [ 
      { 
         "content": { 
            "dataSourceType": "CUSTOM",
            "custom": { 
               "customDocumentIdentifier": { 
                  "id": "MyDocument"
               },
               "s3": {
                "s3Location": {
                    "uri": "amzn-s3-demo-bucket"
                }
               },
               "sourceType": "S3"
            }
         }
     }
   ]
}
```

#### 将内嵌文档添加到与自定义数据来源相连的知识库中并以内嵌方式包含元数据
<a name="w2aac28c10c23c19c17c11b3c19b5b7"></a>

以下示例显示了如何以内嵌方式，将文档及其包含两个属性的元数据添加到自定义数据来源：

```
PUT /knowledgebases/KB12345678/datasources/DS12345678/documents HTTP/1.1
Content-type: application/json

{
   "documents": [ 
      { 
         "content": { 
            "dataSourceType": "CUSTOM",
            "custom": { 
               "customDocumentIdentifier": { 
                  "id": "MyDocument"
               },
               "inlineContent": { 
                  "textContent": { 
                     "data": "Hello world!"
                  },
                  "type": "TEXT"
               },
               "sourceType": "IN_LINE"
            }
         },
         "metadata": {
            "inlineAttributes": [ 
               { 
                  "key": "genre",
                  "value": {
                     "stringValue": "pop",
                     "type": "STRING"
                  }
               },
               { 
                  "key": "year",
                  "value": { 
                     "numberValue": 1988,
                     "type": "NUMBER"
                  }
               }
            ],
            "type": "IN_LINE_ATTRIBUTE"
         }
     }
   ]
}
```

#### 将文档添加到与 S3 数据来源相连的知识库中并包含其元数据
<a name="w2aac28c10c23c19c17c11b3c19b5b9"></a>

以下示例显示了如何将文档及其元数据添加到 S3 数据来源。您只能通过 S3 包含元数据：

```
PUT /knowledgebases/KB12345678/datasources/DS12345678/documents HTTP/1.1
Content-type: application/json

{
    "documents": [ 
        { 
            "content": { 
                "dataSourceType": "S3",
                "s3": { 
                "s3Location": {
                    "uri": "amzn-s3-demo-bucket"
                }
            }
        },
        "metadata": {
            "s3Location": {
                "bucketOwnerId": "111122223333",
                "uri": "amzn-s3-demo-bucket"
            },
                "type": "S3_LOCATION"
            }
        }
    ]
}
```

# 查看数据来源中文档的相关信息
<a name="kb-direct-ingestion-view"></a>

以下主题介绍了如何查看数据来源中的文档。如果知识库已连接到 Amazon S3 数据来源，那么可以在连接的 S3 存储桶中查看文档。

**注意**  
如果您是通过连接到 S3 数据来源创建的新知识库，则必须先同步数据来源，然后才能对数据来源使用这些 API 操作。

展开与您的使用案例相关的方法：

## 使用控制台
<a name="kb-direct-ingestion-view-console"></a>

要查看数据来源中已摄取到 AWS 管理控制台中的文档，请执行以下操作：

1. 采用有权使用 Amazon Bedrock 控制台的 IAM 身份登录 AWS 管理控制台。然后，通过以下网址打开 Amazon Bedrock 控制台：[https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)。

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

1. 在**知识库**部分，选择要查看其文档的知识库。

1. 在**数据来源**部分，选择要查看其文档的数据来源。

1. **文档**部分列出了数据来源中的文档。这些文档也已摄取到知识库中。

## 使用 API
<a name="kb-direct-ingestion-view-api"></a>

使用 Amazon Bedrock API，您可以查看数据来源中已摄取到知识库中的部分或全部文档。选择与您的使用案例相关的主题。

**Topics**
+ [查看知识库中部分文档的相关信息](#kb-direct-ingestion-get)
+ [查看知识库中所有文档的相关信息](#kb-direct-ingestion-list)

### 查看知识库中部分文档的相关信息
<a name="kb-direct-ingestion-get"></a>

要查看数据来源中特定文档的相关信息，请使用 [ Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [GetKnowledgeBaseDocuments](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetKnowledgeBaseDocuments.html) 请求，并指定数据来源及与之相连的知识库的 ID。

对于要获取其信息的每个文档，请使用以下格式之一，在 `documentIdentifiers` 数组中添加 [DocumentIdentifier](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentIdentifier.html) 项：
+ 如果是自定义数据来源，请在 `id` 字段中指定文档的 ID：

  ```
  { 
      "custom": { 
          "id": "string"
      },
      "dataSourceType": "CUSTOM"
  }
  ```
+ 如果是 Amazon S3 数据来源，请在 `uri` 字段中指定文档的 S3 URI：

  ```
  {
      "dataSourceType": "S3",
      "s3": { 
          "uri": "string"
      }
  }
  ```

响应会返回一个项目数组，其中每个项目都包含您所请求文档的相关信息。

### 查看知识库中所有文档的相关信息
<a name="kb-direct-ingestion-list"></a>

要查看数据来源中所有文档的相关信息，请使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [ListKnowledgeBaseDocuments](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListKnowledgeBaseDocuments.html) 请求，并指定数据来源及与之相连的知识库的 ID。您有以下选项：
+ 指定 `maxResults` 以限制返回的结果数量。
+ 如果结果不适合响应，则会在响应的 `nextToken` 字段中返回一个值。您可以在后续请求的 `nextToken` 字段中使用此值，以查看下一批结果。

# 从知识库中直接删除文档
<a name="kb-direct-ingestion-delete"></a>

如果您不再需要知识库中的文档，可将其直接删除。要了解如何从数据来源和知识库中删除文档，请展开与您的使用案例相对应的部分：

## 使用控制台
<a name="kb-direct-ingestion-delete-console"></a>

要使用 AWS 管理控制台从数据来源和知识库中直接删除文档，请执行以下操作：

1. 采用有权使用 Amazon Bedrock 控制台的 IAM 身份登录 AWS 管理控制台。然后，通过以下网址打开 Amazon Bedrock 控制台：[https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)。

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

1. 在**知识库**部分，选择要从中删除文档的知识库。

1. 在**数据来源**部分，选择要从中删除文档的数据来源。

1. 在**文档**部分，选择要删除的文档。然后选择**删除文档**。查看消息并确认。

## 使用 API
<a name="kb-direct-ingestion-delete-api"></a>

要通过 Amazon Bedrock API 从数据来源中删除特定文档，请使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [DeleteKnowledgeBaseDocuments](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteKnowledgeBaseDocuments.html) 请求，并指定数据来源及与之相连的知识库的 ID。

对于要删除的每个文档，请使用以下格式之一，在 `documentIdentifiers` 数组中添加 [DocumentIdentifier](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentIdentifier.html) 项：
+ 如果是自定义数据来源，请在 `id` 字段中指定文档的 ID：

  ```
  { 
      "custom": { 
          "id": "string"
      },
      "dataSourceType": "CUSTOM"
  }
  ```
+ 如果是 Amazon S3 数据来源，请在 `uri` 字段中指定文档的 S3 URI：

  ```
  {
      "dataSourceType": "S3",
      "s3": { 
          "uri": "string"
      }
  }
  ```

**警告**  
您从与 S3 数据来源相连的知识库中直接删除的文档，不会从 S3 存储桶本身删除。我们建议您从 S3 存储桶中删除这些文档，这样在同步数据来源时，便不会重新引入这些文档。

# 查看 Amazon Bedrock 知识库的数据来源信息
<a name="kb-ds-info"></a>

您可以查看知识库中数据来源的相关信息，例如设置和同步历史记录。

要监控您的知识库，包括知识库的任何数据来源，请参阅[使用 Amazon CloudWatch 进行知识库日志记录](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-bases-logging.html)。

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

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

**查看有关数据来源的信息**

1. 采用有权使用 Amazon Bedrock 控制台的 IAM 身份登录 AWS 管理控制台。然后，通过以下网址打开 Amazon Bedrock 控制台：[https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)。

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

1. 在**数据来源**部分，选择要查看其详细信息的数据来源。

1. **数据来源概述**包含有关数据来源的详细信息。

1. **同步历史记录**包含有关数据来源何时同步的详细信息。要查看同步事件失败的原因，请选择一个同步事件并选择**查看警告**。

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

要获取数据来源的相关信息，请使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [GetDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetDataSource.html) 请求，并指定数据来源所属知识库中的 `dataSourceId` 和 `knowledgeBaseId`。

要列出知识库的数据来源的相关信息，请使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [ListDataSources](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListDataSources.html) 请求，并指定知识库的 ID。
+ 要设置在响应中返回的结果数量上限，请使用 `maxResults` 字段。
+ 如果结果数超过您设置的值，响应会返回 `nextToken`。您可以在另一个 `ListDataSources` 请求中使用这个值，以查看下一批结果。

要获取数据来源的同步事件信息，请使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [GetIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html) 请求。指定 `dataSourceId`、`knowledgeBaseId` 和 `ingestionJobId`。

要列出知识库的数据来源的相关信息，请使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [ListIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListIngestionJobs.html) 请求。指定知识库和数据来源的 ID。您可以设置以下规范。
+ 通过在 `filters` 对象中指定要搜索的状态来筛选结果。
+ 通过指定 `sortBy` 对象，按作业启动时间或作业状态进行排序。您可以按升序或降序进行排序。
+ 在 `maxResults` 字段中设置要在响应中返回的结果数量上限。如果结果数超过您设置的值，响应会返回 `nextToken`，您可以再发送一个 [ListIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListIngestionJobs.html) 请求并在其中包含它，以查看下一批作业。

------

# 修改您的 Amazon Bedrock 知识库的数据来源
<a name="kb-ds-update"></a>

您可以更新知识库的数据来源，例如更改数据来源配置。

您可以使用以下方法更新数据来源：
+ 添加、更改或移除数据来源中的文件或内容。
+ 更改数据来源配置或用于在数据摄取期间加密临时数据的 KMS 密钥。如果您更改来源或端点配置详细信息，则应更新或创建具有所需访问权限和 Secrets Manager 密钥（如果适用）的新 IAM 角色。
+ 将您的数据来源删除策略设置为“Delete”或“Retain”。删除知识库或数据来源资源后，您可以删除数据来源中所有转换为向量嵌入的数据。删除知识库或数据来源资源后，您可以保留数据来源中所有转换为向量嵌入的数据。请注意，如果您删除知识库或数据来源资源，则**向量存储本身不会被删除**。

每次在数据来源中添加、修改或删除文件时，您都必须同步数据来源，以便将其重新索引到知识库中。同步是增量式的，因此 Amazon Bedrock 仅处理自上次同步以来添加、修改或删除的文档。在开始摄取之前，请检查您的数据来源是否满足以下条件：
+ 文件采用受支持的格式。有关更多信息，请参阅[支持的文档格式](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html#kb-ds-supported-doc-formats-limits)。
+ 这些文件不超过 AWS 一般参考 中的 [Amazon Bedrock endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/bedrock.html) 中指定的**摄取作业文件大小**。
+ 如果您的数据来源包含元数据文件，请检查以下条件以确保元数据文件不会被忽略：
  + 每个 `.metadata.json` 文件都与其关联的源文件共享相同的文件名和扩展名。
  + 如果知识库的向量索引位于 Amazon OpenSearch 无服务器向量存储中，请检查向量索引是否使用 `faiss` 引擎配置。如果向量索引是使用 `nmslib` 引擎配置，则您必须执行以下操作之一：
    + 在控制台中[创建新的知识库](knowledge-base-create.md)，让 Amazon Bedrock 在 Amazon OpenSearch 无服务器中自动为您创建向量索引。
    + 在向量存储中[创建另一个向量索引](knowledge-base-setup.md)，然后选择 `faiss` 作为**引擎**。然后[创建新的知识库](knowledge-base-create.md)并指定新的向量索引。
  + 如果知识库的向量索引位于 Amazon Aurora 数据库集群中，我们建议您使用自定义元数据字段将所有元数据存储在单列中，并对该列创建索引。如果未提供自定义元数据字段，那么必须在开始摄取之前，检查索引表格是否包含元数据文件中每个元数据属性的列。有关更多信息，请参阅[将您创建的向量存储用于知识库的先决条件](knowledge-base-setup.md)。

要了解如何更新数据来源，请选择与您的首选方法对应的选项卡，然后按照以下步骤操作：

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

**更新数据来源**

1. 采用有权使用 Amazon Bedrock 控制台的 IAM 身份登录 AWS 管理控制台。然后，通过以下网址打开 Amazon Bedrock 控制台：[https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)。

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

1. 选择知识库的名称。

1. 在**数据来源**部分，选中要编辑和同步的数据来源旁边的单选按钮。

1. （可选）选择**编辑**，更改您的配置，然后选择**提交**。如果您更改来源或端点配置详细信息，则应更新或创建具有所需访问权限和 Secrets Manager 密钥（如果适用）的新 IAM 角色。另请注意，您无法更改基于摄取的原始数据的分块配置。您必须重新创建数据来源。
**注意**  
您无法更改分块配置。您必须重新创建数据来源。

1. （可选）选择在高级设置中编辑您的数据来源数据删除策略：

   对于数据删除策略设置，您可以选择以下项之一：
   + 删除：删除知识库或数据来源资源后，会删除数据来源中所有转换为向量嵌入的数据。请注意，**向量存储本身不会被删除**，只有数据会被删除。如果删除了 AWS 账户，则会忽略此标志。
   + 保留：删除知识库或数据来源资源后，会保留数据来源中所有转换为向量嵌入的数据。请注意，如果您删除知识库或数据来源资源，则**向量存储本身不会被删除**。

1. 选择**同步**。

1. 同步完成且**状态**变为**就绪**时，会出现绿色横幅。

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

**更新数据来源**

1. （可选）使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [UpdateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_UpdateDataSource.html) 请求，更改所有配置并指定您不想更改的相同配置。如果您更改来源或端点配置详细信息，则应更新或创建具有所需访问权限和 Secrets Manager 密钥（如果适用）的新 IAM 角色。
**注意**  
您无法更改 `chunkingConfiguration`。使用现有 `chunkingConfiguration` 发送请求，或者重新创建数据来源。

1. （可选）更改数据来源的 `dataDeletionPolicy`。删除知识库或数据来源资源后，您可以 `DELETE` 数据来源中所有转换为向量嵌入的数据。如果删除了 AWS 账户，则会忽略此标志。删除知识库或数据来源资源后，您可以 `RETAIN` 数据来源中所有转换为向量嵌入的数据。请注意，如果您删除知识库或数据来源资源，则**向量存储本身不会被删除**。

1. 使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) 请求，指定 `dataSourceId` 和 `knowledgeBaseId`。

------

# 从 Amazon Bedrock 知识库中删除数据来源
<a name="kb-ds-delete"></a>

您可以删除或移除不再需要或不再用于知识库的数据来源。

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

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

**删除数据来源**

1. 采用有权使用 Amazon Bedrock 控制台的 IAM 身份登录 AWS 管理控制台。然后，通过以下网址打开 Amazon Bedrock 控制台：[https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)。

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

1. 在**数据来源**部分，选择要删除的数据来源旁边的单选按钮。

1. 选择**删除**。

1. 成功删除数据来源后，会出现绿色横幅。
**注意**  
您的数据来源的数据删除策略设置为“DELETE”（删除数据来源时删除所有数据，但**不删除向量存储本身**）或“RETAIN”（删除数据来源时保留所有数据）。如果删除数据来源或知识库，则**向量存储本身不会被删除**。如果将数据来源数据删除策略设置为“DELETE”，则由于配置问题或向量存储的访问问题，数据来源可能无法成功完成删除过程。您可以检查“DELETE\$1UNSUCCESSFUL”状态，以查看数据来源无法成功删除的原因。

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

要从知识库中删除数据来源，请发送 [DeleteDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeletDataSource.html) 请求，并指定 `dataSourceId` 和 `knowledgeBaseId`。

**注意**  
您的数据来源的数据删除策略设置为“`DELETE`”（删除数据来源时删除所有数据，但**不删除向量存储本身**）或“`RETAIN`”（删除数据来源时保留所有数据）。如果删除数据来源或知识库，则**向量存储本身不会被删除**。如果将数据来源数据删除策略设置为“`DELETE`”，则由于配置问题或向量存储的访问问题，数据来源可能无法成功完成删除过程。您可以查看 `failureReasons`，看数据来源状态是否为 `DELETE_UNSUCCESSFUL`，了解数据来源无法成功删除的原因。

------

# 为多模式内容建立知识库
<a name="kb-multimodal"></a>

Amazon Bedrock 知识库支持多模式内容，包括图像、音频和视频文件。您可以使用图像作为查询进行搜索，检索视觉上相似的内容，以及与传统文本文档一起处理多媒体文件。此功能使您能够从不同数据类型（独立图像、录音和存储在组织中的视频文件）中提取见解。

Amazon Bedrock 知识库使您能够索引和检索文本、视频和音频内容中的信息。Organizations 现在可以使用图像搜索产品目录，在培训视频中查找特定时刻，并从客户支持电话录音中检索相关细分。

**区域可用性**  
多式联运处理方法具有不同的区域可用性。有关详细信息，请参阅 [区域可用性](kb-multimodal-choose-approach.md#kb-multimodal-processing-regions)。

## 特征和功能
<a name="kb-multimodal-features"></a>

多式联运知识库提供以下关键功能：

**基于图像的查询**  
使用 Nova Multimodal Embeddings 时，以搜索查询形式提交图片，以查找视觉上相似的内容。支持产品匹配、视觉相似度搜索和图像检索。

**音频内容检索**  
使用文本查询搜索音频文件。从带有时间戳参考的录音中检索特定片段。音频转录支持对语音内容（包括会议、电话和播客）进行基于文本的搜索。

**视频片段提取**  
使用文本查询查找视频文件中的特定时刻。检索带有精确时间戳的视频片段。

**跨模态搜索**  
在不同的数据类型中进行搜索，包括文本文档、图像、音频和视频。检索相关内容，无论其原始格式如何。

**带有时间戳的源引用**  
检索结果包括对带有音频和视频临时元数据的原始文件的引用。支持精确导航到多媒体内容中的相关片段。

**灵活的处理选项**  
您可以选择原生多模态嵌入以实现视觉相似度，也可以选择基于语音的内容的文本转换。根据内容特征和应用程序要求配置处理方法。

## 工作原理
<a name="kb-multimodal-how-it-works"></a>

多模态知识库通过多阶段管道处理和检索内容，该管道可以适当地处理不同的数据类型：

****摄取和处理****

1. **数据源连接：**将您的知识库连接到 Amazon S3 存储桶或包含文本文档、图像、音频文件和视频文件的自定义数据源。

1. **文件类型检测：**系统通过扩展名识别每种文件类型，并将其路由到相应的处理管道。

1. **内容处理：**根据您的配置，使用以下两种方法之一来处理文件：
   + **Nova 多模态嵌入：**保留原生格式以进行视觉和音频相似度匹配。图像、音频和视频直接嵌入，无需转换为文本。
   + **基岩数据自动化 (BDA)：**将多媒体转换为文本表示形式。使用自动语音识别 (ASR) 转录音频，处理视频以提取场景摘要和文字记录，图像采用 OCR 和视觉内容提取。

1. **嵌入生成：**使用所选嵌入模型将处理后的内容转换为矢量嵌入。这些嵌入可以捕获语义含义并支持基于相似度的检索。

1. **矢量存储：**嵌入内容与元数据一起存储在您配置的矢量数据库中，包括文件引用、时间戳（用于音频和视频）和内容类型信息。

1. **多模式存储（可选）：**如果已配置，则会将原始多媒体文件复制到专用的多模式存储目的地，以便可靠地检索，即使源文件被修改或删除，也可确保可用性。

****查询和检索****

1. **查询处理：**用户查询（文本或图像）使用采集期间使用的相同嵌入模型转换为嵌入式。

1. **相似度搜索：**将查询嵌入与矢量数据库中存储的嵌入进行比较，以确定最相关的内容。

1. **结果检索：**系统返回与元数据匹配的内容，包括：
   + 源 URI（原始文件位置）
   + 时间戳元数据（用于音频和视频片段）
   + 内容类型和模式信息

1. **响应生成（可选）：**对于`RetrieveAndGenerate`请求，检索到的内容将传递到基础模型以生成与上下文相关的文本响应。使用 BDA 处理或知识库包含文本内容时支持此功能。

**重要**  
系统返回对包含音频和视频内容时间戳元数据的完整文件的引用。您的应用程序必须根据提供的开始和结束时间戳提取和播放特定的片段。会自动 AWS 管理控制台 处理这个问题。

**Topics**
+ [特征和功能](#kb-multimodal-features)
+ [工作原理](#kb-multimodal-how-it-works)
+ [选择您的多模式处理方法](kb-multimodal-choose-approach.md)
+ [多式联运知识库的先决条件](kb-multimodal-prerequisites.md)
+ [为多模式内容创建知识库](kb-multimodal-create.md)
+ [添加数据源并开始摄取](kb-multimodal-add-data-source-and-ingest.md)
+ [测试和查询多模式知识库](kb-multimodal-test-and-query.md)
+ [多式联运疑难解答知识库](kb-multimodal-troubleshooting.md)

# 选择您的多模式处理方法
<a name="kb-multimodal-choose-approach"></a>

Amazon Bedrock 知识库提供了两种处理多模式内容的方法：用于视觉相似度搜索的 Nova 多模态嵌入和用于基于文本的多媒体内容处理的 Bedrock 数据自动化 (BDA)。如果您的输入模式是图像而不是音频或视频，则也可以使用基础模型作为解析器。

本节介绍如何使用 Nova 多模态嵌入和 BDA 作为多模态内容的处理方法。每种方法都针对不同的用例和查询模式进行了优化。

**Topics**
+ [多模态处理方法](#kb-multimodal-processing-approach)
+ [区域可用性](#kb-multimodal-processing-regions)
+ [按内容类型划分的选择标准](#kb-multimodal-selection-guidance)
+ [支持的文件类型和数据源](#kb-multimodal-supported-files)
+ [能力和局限性](#kb-multimodal-approach-details)

## 多模态处理方法
<a name="kb-multimodal-processing-approach"></a>

下表显示了用于处理多模态内容的 Nova 多模式嵌入和 BDA 之间的比较。


**处理方法比较**  

| 特征 | Nova 多模态嵌入式 | 基岩数据自动化 (BDA) | 
| --- | --- | --- | 
| 处理方法 | 无需中间文本转换即可生成嵌入内容 | 将多媒体转换为文本，然后创建嵌入内容 | 
| 支持的查询类型 | 文本查询或图像查询 | 仅限文本查询 | 
| 主要用例 | 视觉相似度搜索、产品匹配、图像发现 | 语音转录、基于文本的搜索、内容分析 | 
| RAG 功能 | 仅限于文字内容 | 全力RetrieveAndGenerate支持 | 
| 存储需求 | 需要多式联运存储目的地 | 多式联运存储目的地是可选的，但如果未指定，BDA 将只处理文本数据。对于非文本输入，必须指定多模式存储目的地。 | 

## 区域可用性
<a name="kb-multimodal-processing-regions"></a>


**区域可用性**  

| Nova 多模态嵌入式 | 基岩数据自动化 (BDA) | 
| --- | --- | 
| 仅限美国东部（弗吉尼亚州北部） |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/kb-multimodal-choose-approach.html)  | 

## 按内容类型划分的选择标准
<a name="kb-multimodal-selection-guidance"></a>

使用此决策矩阵根据您的内容和用例要求选择适当的处理方法：

**注意**  
如果您将 BDA 解析器与 Amazon Nova 多模态嵌入模型一起使用，则嵌入模型将像文本嵌入模型一样起作用。处理多模式内容时，根据您的用例，使用其中一种处理方法以获得最佳结果。


**按内容类型划分的处理方法建议**  

| 内容类型 | Nova 多模态嵌入式 | 基岩数据自动化 (BDA) | 
| --- | --- | --- | 
| 产品目录和图片 | 推荐-启用视觉相似度匹配和基于图像的查询 | 有限-仅通过 OCR 提取文本 | 
| 会议录音和通话 | 无法有意义地处理语音内容 | 推荐-提供完整的语音转录和可搜索的文本 | 
| 培训和教育视频 | 部分-处理视觉内容但错过了语音 | 推荐-捕获语音记录和视觉描述 | 
| 客户支持录音 | 不推荐-无法有效处理语音内容 | 推荐-创建完整的可搜索对话记录 | 
| 技术图表和图表 | 推荐-非常适合视觉相似度和模式匹配 | 有限-提取文本标签但错过了视觉关系 | 

## 支持的文件类型和数据源
<a name="kb-multimodal-supported-files"></a>

支持的文件类型取决于您选择的处理方法：


**按处理方法划分的支持的文件类型**  

| 文件类型 | Nova 多模态嵌入式 | 基岩数据自动化 (BDA) | 
| --- | --- | --- | 
| 图片 | .png、.jpg、.jpeg、.gif、.webp | .png、.jpg、.jpeg | 
| 音频 | .mp3、.ogg、.wav | .amr、.flac、.m4a、.mp3、.ogg、.wav | 
| 视频 | .mp4、.mov、.mkv、.webm、.flv、.mpeg、.mpg、.wmv、.3gp | .mp4、.mov | 
| 文档 | 作为文本处理 | .pdf（加上从图像中提取文本） | 

****支持的数据源****  
以下数据源支持多模式内容：
+ **Amazon S3：**完全支持所有多模式文件类型
+ **自定义数据源：**支持最大 10MB base64 编码的内联内容

**重要**  
多模式检索目前仅适用于 Amazon S3 数据源。其他数据源（Confluence、 SharePoint、Salesforce、Web Crawler）在摄取期间不处理多模式文件。这些文件将被跳过，无法用于多模式查询。

## 能力和局限性
<a name="kb-multimodal-approach-details"></a>

**Nova 多模态嵌入式**  
**关键能力：**  
+ 原生多模态处理保留了原始内容格式，以实现最佳的视觉相似度匹配
+ 基于图像的查询允许用户上传图像并查找视觉上相似的内容
+ 适用于产品目录、视觉搜索和内容发现应用程序的卓越性能
**限制:**  
+ 无法有效处理语音或音频内容-无法搜索语音信息
+ `RetrieveAndGenerate`并重新排列功能仅限于文本内容
+ 需要配置专用的多式联运存储目的地

**基岩数据自动化 (BDA)**  
**关键能力：**  
+ 使用自动语音识别 (ASR) 技术进行全面的语音转录
+ 视觉内容分析为图像和视频场景生成描述性文本
+ 全面`RetrieveAndGenerate`支持可在所有内容中实现完整的 RAG 功能
+ 基于文本的搜索在所有多媒体内容类型中都能保持一致
**限制:**  
+ 在没有 Nova 多模式嵌入的情况下使用时，不支持基于图像的查询——所有搜索都必须使用文本输入
+ 无法进行视觉相似度匹配或搜索 image-to-image
+ 由于内容转换要求，摄取处理时间更长
+ 与 Nova 多模式嵌入相比，支持的多媒体文件格式更少

**语音内容处理**  
Nova Multimodal Embeddings 无法有效地处理音频或视频文件中的语音内容。如果您的多媒体内容包含用户需要搜索的重要口头信息，请选择 BDA 方法以确保完整的转录和可搜索性。

# 多式联运知识库的先决条件
<a name="kb-multimodal-prerequisites"></a>

除了标准知识库之外，Amazon Bedrock 多模式知识库还需要其他设置才能处理图像、音频和视频内容。具体的先决条件取决于您选择的处理方法和存储配置。

在创建多模式知识库之前，必须满足以下先决条件：

**Topics**
+ [先决条件](#kb-multimodal-prerequisites)
+ [多模式内容的权限](#kb-multimodal-prerequisites-permissions)

## 先决条件
<a name="kb-multimodal-prerequisites"></a>

1. 确保您的数据位于[支持的数据来源连接器](data-source-connectors.md)中。只有 Amazon S3 和自定义数据源支持多模式内容。

1. （可选）[设置自己的受支持向量存储](knowledge-base-setup.md)。如果您打算使用 AWS 管理控制台 自动为您创建向量，则可以跳过此步骤。

1. 创建具有适当多模式处理权限的自定义 AWS Identity and Access Management (IAM) [服务角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-role)。有关详细信息，请参阅 [多模式内容的权限](#kb-multimodal-prerequisites-permissions)。
**注意**  
如果您使用的是控制台，Amazon Bedrock 知识库将自动为您配置权限。

1. （可选）按照[知识库资源的加密](encryption-kb.md)中的步骤设置额外的安全配置。

1. 如果您计划对 BDA 处理的内容使用 [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 操作，请按照中的步骤请求访问您将在要使用的区域中使用的模型。[访问 Amazon Bedrock 基础模型](model-access.md)

## 多模式内容的权限
<a name="kb-multimodal-prerequisites-permissions"></a>

除了标准知识库权限之外，多模式知识库还需要其他权限。具体权限取决于您选择的处理方法和存储配置。

您必须根据您的多模式处理方法配置以下权限：
+ **Nova 多模态嵌入权限：**使用 Nova 多模态嵌入进行直接的视觉和音频相似度搜索时需要。包括异步模型调用权限和多模式存储访问权限。
+ **基岩数据自动化 (BDA) 权限：**使用 BDA 将多模态内容转换为文本表示形式时需要。包括数据自动化调用和状态监控权限。
+ **客户管理的 KMS 密钥权限：在** BDA 处理中使用客户管理的加密密钥时是必需的。包括密钥操作和授权创建权限。
+ **多式联运存储权限：**配置多式联运存储目的地时是必需的。包括存储桶的标准 S3 权限。

有关 IAM 策略和 step-by-step权限配置的详细信息，请参阅[多模式内容的权限](kb-permissions.md#kb-permissions-multimodal)。

### 存储需求
<a name="kb-multimodal-storage-requirements"></a>

**Nova 多模态嵌入式**  
**必需：**您必须配置多式联运存储目的地。此目标存储您的多媒体文件副本以供检索，并确保即使源文件被修改或删除也可用。

**基岩数据自动化 (BDA)**  
**可选：**您可以配置多模式存储桶以提高可靠性，也可以在运行时检索文件。但是，这不是必需的，因为 BDA 会将内容转换为文本。  
如果您在未配置多模式存储桶的情况下选择 BDA 解析器，则只有文本解析可用。要利用 BDA 的多模态解析功能（处理图像、音频和视频），必须配置多模态存储目标。

**多式联运存储目的地配置**  
配置多式联运存储目的地时，请考虑以下几点：
+ **使用单独的存储桶（推荐）：**为您的数据源和多模式存储目标配置不同的 Amazon S3 存储桶。这提供了最简单的设置并避免了潜在的冲突。
+ **如果使用相同的存储桶：**您必须为数据源指定包含前缀，以限制要提取的内容。这样可以防止重新摄取提取的媒体文件。
+ **避免 “aws/” 前缀：**当对数据源和多模式存储目标使用同一个存储桶时，请勿使用以 “aws/” 开头的包含前缀，因为此路径是为提取的媒体存储保留的。

# 为多模式内容创建知识库
<a name="kb-multimodal-create"></a>

您可以使用控制台或 API 创建多模式知识库。根据您的多式联运处理需求选择您的方法。

**重要**  
多模式支持仅在创建包含非结构化数据源的知识库时可用。结构化数据源不支持多模式内容处理。

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

**从控制台创建多模式知识库**

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

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

1. 在**知识库**部分中，选择**创建**，然后选择**带有向量存储的知识库**。

1. （可选）在**知识库详细信息**下方，更改默认名称并为知识库提供描述。

1. 在 **IAM 权限**下，选择一个能够向 Amazon Bedrock 授予对其他所需 AWS 服务的访问权限的 IAM 角色。您可以让 Amazon Bedrock 为您创建服务角色，也可以选择使用自己的自定义角色。有关多模式权限，请参阅[多模式内容的权限](kb-permissions.md#kb-permissions-multimodal)。

1. 选择 **Amazon S3** 作为您的数据源，然后选择 “**下一步**” 来配置您的数据源。
**注意**  
在创建知识库期间，您最多可以添加 5 个 Amazon S3 数据源。创建知识库后，可以添加其他数据源。

1. 提供包含您的多式联运内容的存储桶的 **S3 URI**，并根据需要配置包含前缀。包含前缀是一个文件夹路径，可用于限制要摄取的内容。

1. 在 “**分块和解析配置**” 下，选择您的解析策略：
   + **Bedrock 默认解析器：**推荐用于纯文本内容处理。该解析器处理常见的文本格式，同时忽略多模态文件。支持文本文档，包括 Word、Excel、HTML、Markdown、TXT 和 CSV 文件。
   + **基岩数据自动化 (BDA)：**将多模式内容转换为可搜索的文本表示形式。处理图像 PDFs、音频和视频文件以提取文本、生成视觉内容描述以及为音频和视频内容创建转录。
   + **基础模型解析器：**为复杂的文档结构提供高级解析功能。处理图像 PDFs、结构化文档、表格和视觉丰富的内容，以提取文本并生成视觉元素的描述。

1. 选择 “**下一步**”，然后选择您的嵌入模型和多模态处理方法。
   + **Amazon Nova 多模态嵌入 V1.0：选择** A **mazon Nova 嵌入 V1.0** 进行直接的视觉和音频相似度搜索。配置音频和视频区块持续时间（1-30 秒，默认为 5 秒），以控制内容的分段方式。
**注意**  
音频和视频分块参数是在嵌入模型级别配置的，而不是在数据源级别配置的。如果您为非多模态嵌入模型提供此配置，则会发生验证异常。配置音频和视频区块持续时间（默认值：5 秒，范围：1-30 秒），以控制内容的分段方式。较短的区块可以实现精确的内容检索，而较长的区块可以保留更多的语义上下文。
**重要**  
Amazon Nova 嵌入 v1.0 对在 audio/video 数据中搜索语音内容的支持有限。如果你需要支持语音，可以使用 Bedrock 数据自动化作为解析器。
   + **使用 BDA 进行文本嵌入：使用 BDA** 处理时选择文本嵌入模型（例如 Titan 文本嵌入 v2）。文本嵌入模型将检索限制为纯文本内容，但您可以通过选择 Amazon Bedrock 数据自动化或基础模型作为解析器来启用多模式检索。
**注意**  
如果你将 BDA 解析器与 Nova 多模态嵌入一起使用，Amazon Bedrock 知识库将首先使用 BDA 解析。在这种情况下，嵌入模型不会为图像、音频和视频生成原生多模态嵌入，因为 BDA 会将这些嵌入转换为文本表示。

1. 如果使用 Nova 多模态嵌入，请通过指定用于**存储已处理文件以供检索的 Amazon S3 存储桶来配置多模式存储目标**。知识库会将解析后的图像存储到单个 Amazon S3 存储桶中，其文件夹创建为.bda，便于访问。
**生命周期策略建议**  
使用 Nova 多模式嵌入时，Amazon Bedrock 会将瞬态数据存储在您的多模式存储目标中，并在处理完成后尝试将其删除。我们建议在临时数据路径上应用生命周期策略，以确保正确清理。有关详细说明，请参阅[使用 Amazon S3 生命周期策略管理临时数据](kb-multimodal-troubleshooting.md#kb-multimodal-lifecycle-policy)。

1. 在**矢量数据库**部分，选择矢量存储方法，并根据所选的嵌入模型配置适当的维度。

1. 选择**下一步**并查看知识库配置的详细信息，然后选择**创建知识库**。

------
#### [ CLI ]

**要创建多式联运知识库，请使用 AWS CLI**
+ 使用 Nova 多模态嵌入创建知识库。发送[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html)请求：

  ```
  aws bedrock-agent create-knowledge-base \
  --cli-input-json file://kb-nova-mme.json
  ```

  的内容`kb-nova-mme.json`（用您的特定配置替换占位符值）：

  ```
  {
      "knowledgeBaseConfiguration": {
          "vectorKnowledgeBaseConfiguration": {
              "embeddingModelArn": "arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-2-multimodal-embeddings-v1:0",
              "supplementalDataStorageConfiguration": {
                  "storageLocations": [
                      {
                          "type": "S3",
                          "s3Location": {
                              "uri": "s3://<multimodal-storage-bucket>/"
                          }
                      }
                  ]
              }
          },
          "type": "VECTOR"
      },
      "storageConfiguration": {
          "opensearchServerlessConfiguration": {
              "collectionArn": "arn:aws:aoss:us-east-1:<account-id>:collection/<collection-id>",
              "vectorIndexName": "<index-name>",
              "fieldMapping": {
                  "vectorField": "<vector-field>",
                  "textField": "<text-field>",
                  "metadataField": "<metadata-field>"
              }
          },
          "type": "OPENSEARCH_SERVERLESS"
      },
      "name": "<knowledge-base-name>",
      "description": "Multimodal knowledge base with Nova Multimodal Embeddings"
  }
  ```

  替换以下占位符：
  + `<multimodal-storage-bucket>`-用于存储多模式文件的 S3 存储桶
  + `<account-id>`-您的 AWS 账户编号
  + `<collection-id>`- OpenSearch 无服务器集合 ID
  + `<index-name>`- OpenSearch 集合中的矢量索引名称（为所选嵌入模型配置了适当的尺寸）
  + `<vector-field>`-用于存储嵌入内容的字段名称
  + `<text-field>`-用于存储文本内容的字段名称
  + `<metadata-field>`-用于存储元数据的字段名称

------

# 添加数据源并开始摄取
<a name="kb-multimodal-add-data-source-and-ingest"></a>

创建知识库后，添加包含您的多式联运内容的数据源，然后开始采集作业以处理内容并为其编制索引。

**数据源删除行为**  
在删除策略设置为 RETAIN 的情况下删除数据源时，提取的内容将保留在矢量数据库中，并将继续用于检索。只有在删除数据源后明确同步知识库时，才会删除内容。使用默认 DELETE 策略的数据源将在删除期间自动从矢量数据库和补充存储中删除内容。这样可以确保即使源文件被修改或删除，您的知识库也能继续运行，但您应该注意，使用 RETAIN 策略删除的数据源仍可能有助于搜索结果。

## 添加数据源
<a name="kb-multimodal-add-data-source"></a>

将包含您的多式联运内容的数据源添加到知识库中。

**重要**  
对于 BDA 数据源：只有在 audio/video 支持启动后创建的数据源才能处理音频和视频文件。在此功能发布之前创建的现有 BDA 数据源将继续跳过音频和视频文件。要启用对现有知识库的 audio/video 处理，请创建新的数据源。

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

**从控制台添加数据源**

1. 在知识库详细信息页面中，选择**添加数据源**。

1. 选择 **Amazon S3** 作为您的数据源类型。

1. 为您的数据源提供名称和描述。

1. 通过提供存储桶 URI 和任何包含前缀，配置包含您的多模式文件的 Amazon S3 位置。

1. 在 “**内容解析和分块**” 下，配置您的解析和分块方法：
**注意**  
文本嵌入模型将检索限制为纯文本内容，但您可以通过选择 Amazon Bedrock 数据自动化（用于音频、视频和图像）或基础模型作为解析器（用于图像）来启用文本多模式检索。

   有三种解析策略可供选择：
   + **Bedrock 默认解析器：**建议用于纯文本解析。此解析器忽略多模态内容，通常用于多模嵌入模型。
   + **Bedrock 数据自动化作为解析器：**支持将多模态内容解析和存储为文本、支持 PDFs、图像、音频和视频文件。
   + **基础模型作为解析器：**为图像和结构化文档、支持文档、图像 PDFs、表格和视觉丰富的文档提供高级解析。

1. 选择**添加数据源**以创建数据源。

------
#### [ CLI ]

**要添加数据源，请使用 AWS CLI**
+ 为您的多式联运内容创建数据源。发送[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html)请求：

  ```
  aws bedrock-agent create-data-source \
  --knowledge-base-id <knowledge-base-id> \
  --cli-input-json file://ds-multimodal.json
  ```

  对于 Nova 多模态嵌入（无需特殊的解析配置），请使用以下内容：`ds-multimodal.json`

  ```
  {
      "dataSourceConfiguration": {
          "type": "S3",
          "s3Configuration": {
              "bucketArn": "arn:aws:s3:::<data-source-bucket>",
              "inclusionPrefixes": ["<folder-path>"]
          }
      },
      "name": "multimodal_data_source",
      "description": "Data source with multimodal content",
      "dataDeletionPolicy": "RETAIN"
  }
  ```

  对于 BDA 解析方法，请使用以下配置：

  ```
  {
      "dataSourceConfiguration": {
          "type": "S3",
          "s3Configuration": {
              "bucketArn": "arn:aws:s3:::<data-source-bucket>",
              "inclusionPrefixes": ["<folder-path>"]
          }
      },
      "name": "multimodal_data_source_bda",
      "description": "Data source with BDA multimodal parsing",
      "dataDeletionPolicy": "RETAIN",
      "vectorIngestionConfiguration": {
          "parsingConfiguration": {
              "bedrockDataAutomationConfiguration": {
                  "parsingModality": "MULTIMODAL"
              }
          }
      }
  }
  ```

------

## 启动提取作业
<a name="kb-multimodal-start-ingestion"></a>

添加数据源后，启动采集任务来处理和索引您的多模式内容。

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

**从控制台开始摄取**

1. 在您的数据源详细信息页面中，选择**同步**。

1. 在数据源页面上监控同步状态。摄取可能需要几分钟，具体取决于您的多模式文件的大小和数量。

1. 同步成功完成后，您的多模式内容就可以查询了。

------
#### [ CLI ]

**要开始摄取，请使用 AWS CLI**

1. 启动摄取作业。发送[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html)请求：

   ```
   aws bedrock-agent start-ingestion-job \
   --knowledge-base-id <knowledge-base-id> \
   --data-source-id <data-source-id>
   ```

   将占位符替换为：
   + `<knowledge-base-id>`-来自知识库创建的 ID
   + `<data-source-id>`-创建数据源时的 ID

1. 使用监控摄取任务状态。[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html)

------

## 删除数据源后正在重新同步
<a name="kb-multimodal-resync-after-deletion"></a>

如果您删除数据源并希望将其内容从知识库中删除，则必须明确重新同步知识库：

**移除已删除的数据源内容**

1. 使用控制台或 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteDataSource.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteDataSource.html)API 删除数据源。

1. 在所有剩余的数据源上启动新的摄取作业，以更新矢量数据库并从已删除的数据源中移除内容。

1. 确认查询不再返回已删除数据源的结果。

**注意**  
如果不进行重新同步，即使数据源已不复存在，来自已删除数据源的内容仍将继续出现在搜索结果中。

# 测试和查询多模式知识库
<a name="kb-multimodal-test-and-query"></a>

摄取多模式内容后，您可以使用控制台或 API 测试和查询您的知识库。可用的查询类型取决于您选择的处理方法。

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

**从控制台测试您的知识库**

1. 在知识库详细信息页面上，滚动至**测试知识库**部分。

1. 选择您的查询类型：
   + **仅限标准检索：**在单个知识库中查询和检索来自数据源的信息。
   + **检索和响应生成：**使用基础模型查询单个知识库并根据检索到的结果生成响应。
**注意**  
如果您有多模式内容，则必须使用 BDA 解析器进行检索和生成响应。

1. 根据需要配置其他选项：
   + **源区块：**指定要返回的最大源区块数
   + **搜索类型：**选择搜索类型以自定义查询策略
   + **元数据筛选器：**应用筛选器缩小搜索结果范围
   + **护栏：**选择现有护栏或创建新护栏

1. 输入文本查询或上传图片（仅限 Nova 多模式嵌入式）以搜索您的多式联运内容。使用附件按钮上传图像以进行视觉相似度搜索。

1. 查看结果，其中包括：
   + 检索到的带有相关性分数的内容块
   + 源文件参考和时间戳（用于音频/视频）
   + 元数据，包括文件类型和处理信息
   + 对于多媒体内容，根据检索到的时间戳自动进行分段定位的播放控件

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

以下示例展示了如何使用 Amazon Bedrock Agent 运行时 API 以编程方式查询您的多模式知识库：

**文本查询示例**  
使用文本输入进行搜索：

```
aws bedrock-agent-runtime retrieve \
--knowledge-base-id <knowledge-base-id> \
--retrieval-query text="robot automation in manufacturing"
```

**图像查询示例（仅限 Nova 多模嵌入）**  
使用上传的图片进行搜索：

```
{
    "knowledgeBaseId": "<knowledge-base-id>",
    "retrievalQuery": {
        "imageQuery": {
            "inlineContent": {
                "mimeType": "image/jpeg",
                "data": "<base64-encoded-image>"
            }
        }
    }
}
```

------

## 支持的查询类型
<a name="kb-multimodal-query-types"></a>

**文字查询**  
同时支持 Nova 多模嵌入和 BDA 方法。使用自然语言文本进行搜索，查找所有媒体类型的相关内容。

**图片查询**  
仅支持 Nova 多模态嵌入。上传图片以在知识库中查找视觉上相似的内容。

## 了解响应元数据
<a name="kb-multimodal-response-metadata"></a>

多模式查询响应包括多媒体内容的其他元数据：

**来源归因**  
用于可靠访问的原始文件位置 (SourceURI) 和多模式存储位置 (supplementaLuri)

**时态元数据**  
音频和视频片段的开始和结束时间戳，可精确导航到相关内容

**内容类型信息**  
文件格式、处理方法和模式指示器可帮助应用程序适当地处理不同的内容类型

**矢量数据库元数据结构**  
处理和存储多模式内容时，矢量数据库中将使用以下元数据结构：
+ **文本字段：**对于使用 Nova Multimodal Embeddings 处理的多媒体文件，此字段包含一个空字符串，因为内容是作为原生多媒体而不是文本嵌入的
+ **metadata 字段：**包含结构化信息，包括来源详细信息和相关内容引用：

  ```
  {
    "source": {
      "sourceType": "S3",
      "s3Location": {
        "uri": "s3://source-bucket/path/to/file.mp4"
      }
    },
    "relatedContent": [{
      "type": "S3",
      "s3Location": {
        "uri": "s3://multimodal-storage-bucket/processed/file.mp4"
      }
    }]
  }
  ```
+ **自动创建的字段：**用于筛选和识别的其他字段：
  + `x-amz-bedrock-kb-source-uri`: 用于筛选操作的原始源 URI
  + `x-amz-bedrock-kb-data-source-id`: 用于跟踪内容来源的数据源标识符
  + `x-amz-bedrock-kb-chunk-start-time-in-millis`: 音频和视频片段的开始时间戳（以毫秒为单位）
  + `x-amz-bedrock-kb-chunk-end-time-in-millis`: 音频和视频片段的结束时间戳（以毫秒为单位）
  + `x-amz-bedrock-kb-source-file-mime-type`: 源文件的 MIME 类型
  + `x-amz-bedrock-kb-source-file-modality`: 源文件的模式（文本、图像、音频、视频）

**重要**  
应用程序必须使用提供的时间戳从音频和视频文件中提取和播放特定片段。知识库返回的是对完整文件的引用，而不是预先分段的片段。

# 多式联运疑难解答知识库
<a name="kb-multimodal-troubleshooting"></a>

本节为解决使用多式联运知识库时遇到的常见问题提供了指导。故障排除信息按一般限制、常见错误场景及其原因和解决方案以及性能优化建议进行组织。使用此信息来诊断和解决在设置、摄取或查询多式联运内容期间出现的问题。

## 一般限制
<a name="kb-multimodal-general-limitations"></a>

使用多式联运知识库时，请注意这些当前的局限性：
+ **文件大小限制：**每个视频文件最大 1.5 GB，每个音频文件最大 1 GB（Nova Multimodal Embeddings），或者每个文件最大 1.5 GB（BDA）
+ **每个摄取任务的文件数：每个作业**最多 15,000 个文件（Nova 多模式嵌入式）或每个作业最多 1,000 个文件（BDA）
+ **查询限制：**每次查询最多只能有一张图片
+ **数据源限制：**只有 Amazon S3 和自定义数据源支持多模式内容
+ **BDA 分块限制：**使用具有固定大小分块的 Bedrock Data Automation 时，重叠百分比设置不适用于音频和视频内容
+ **BDA 并发任务限制：**默认限制为 20 个并发 BDA 作业。对于大规模处理，可以考虑申请增加服务配额
+ **Reranker 模型限制：**多模式内容不支持 Reranker 模型
+ **摘要限制：**不支持汇总包含非文本内容的检索响应
+ **查询输入限制：**目前不支持同时包含文本和图像的输入。您可以同时使用文本或图像查询，但不能同时使用两者。
+ **Guardrail 图像内容过滤器：**在配置了图像内容过滤器的护栏上使用图像查询时，将对照护栏对输入图像进行评估，如果输入图像违反了配置的过滤器阈值，则可能会被屏蔽
+ **输入和类型不匹配：**默认情况下，如果未指定类型，则假定输入为文本。使用文本以外的模式时，必须指定正确的类型

## 常见错误和解决方案
<a name="kb-multimodal-common-errors"></a>

如果您的多式联运知识库遇到问题，请查看以下常见场景：

**使用图像查询时出现 4xx 错误**  
**原因：**试图将图像查询与纯文本嵌入模型或 BDA 处理的知识库一起使用。  
**解决方案：**在创建支持图像查询的知识库时，请选择 Amazon Nova 多模式嵌入。

**RAG 返回包含多模式内容的 4xx 错误**  
**原因：**`RetrieveAndGenerate`与仅包含多式联运内容的知识库和 Amazon Nova 多模式嵌入模型一起使用。  
**解决方案：**使用 BDA 解析器获取 RAG 功能，或者确保您的知识库包含文本内容。

**需要多式联运存储目的地错误**  
**原因：**在未配置多模式存储目的地的情况下使用 Nova 多模式嵌入式。  
**解决方案：**使用 Nova 多模态嵌入时指定多模式存储目的地。

**数据源和多模式存储使用相同的 S3 存储桶**  
**原因：**将您的数据源和多模式存储目标配置为使用相同的 Amazon S3 存储桶，而不使用正确的包含前缀。  
**解决方案：**要么使用单独的存储桶来存储数据源和多模式存储，要么配置包含前缀以防止重新摄取提取的媒体文件。

**包含前缀不能以 “aws/” 开头**  
**原因：**当您的数据源和多模式存储目标共享同一 Amazon S3 存储桶时，使用以 “aws/” 开头的包含前缀。  
**解决方案：**指定不同的包含前缀。“aws/” 路径保留用于提取的媒体存储，不能用作包含前缀以避免重新摄取已处理的内容。

**BDA 摄取会跳过多模式内容**  
**原因：**知识库是在没有多模式存储目标的情况下创建的，然后添加了包含多模式内容的 BDA 数据源。  
**解决方案：**使用配置为启用音频、视频和图像文件的 BDA 处理的多模式存储目标来重新创建知识库。

**在没有多模嵌入模型的情况下创建知识库**  
**原因：**知识库是使用纯文本嵌入模型创建的，这限制了多模态能力。  
**解决方案：**使用 Nova Multimodal Embeddings 创建新的知识库，以实现原生多模态处理和基于图像的查询。

## 使用 Amazon S3 生命周期策略管理临时数据
<a name="kb-multimodal-lifecycle-policy"></a>

使用 Nova 多模式嵌入时，Amazon Bedrock 会将瞬态数据存储在您的多模式存储目标中，并在处理完成后尝试将其删除。我们建议在临时数据路径上应用生命周期策略，以确保其已正确过期。

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

**使用控制台创建生命周期规则**

1. 打开 [Amazon S3 控制台](https://console.aws.amazon.com/s3)。

1. 导航到您为知识库配置的多模式存储目的地。

1. 选择 “**管理**” 选项卡，然后选择 “**创建生命周期规则**”。

1. 在**生命周期规则名称**中，输入**Transient Data Deletion**。

1. 在 “**筛选器类型**” 下，选择 “**使用一个或多个过滤器限制此规则的范围**”。

1. 在 P **refix** 中，输入知识库和数据源的临时数据路径。

   将以下前缀中的占位符值替换为实际标识符：

   ```
   aws/bedrock/knowledge_bases/knowledge-base-id/data-source-id/transient_data
   ```
**重要**  
请勿将生命周期策略应用于整个存储桶或 “aws/” 前缀，因为这会删除您的多式联运内容并导致检索失败。仅使用上面显示的特定瞬态数据路径。

1. 在 “**生命周期规则操作**” 下，选择 **“终止对象的当前版本**”。

1. 对于**对象创建后的天数**，请输入**1**。

1. 选择 **Create rule**（创建规则）。

------
#### [ AWS CLI ]

**要使用创建生命周期规则 AWS CLI**

1. 使用以下内容创建名为 `lifecycle-policy.json` JSON 文件。

   用您的实际标识符替换占位符值：
   + *knowledge-base-id*-您的知识库标识符
   + *data-source-id*-您的数据源标识符

   ```
   {
       "Rules": [
           {
               "ID": "TransientDataDeletion",
               "Status": "Enabled",
               "Filter": {
                   "Prefix": "aws/bedrock/knowledge_bases/knowledge-base-id/data-source-id/transient_data"
               },
               "Expiration": {
                   "Days": 1
               }
           }
       ]
   }
   ```

1. 将生命周期策略应用于您的存储桶。将 *your-multimodal-storage-bucket* 替换为实际存储桶名称：

   ```
   aws s3api put-bucket-lifecycle-configuration \
       --bucket your-multimodal-storage-bucket \
       --lifecycle-configuration file://lifecycle-policy.json
   ```

1. 验证生命周期策略是否已应用：

   ```
   aws s3api get-bucket-lifecycle-configuration \
       --bucket your-multimodal-storage-bucket
   ```

------

有关 Amazon S3 生命周期策略的更多信息，请参阅 *Amazon S3 用户指南*中的[管理对象生命](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)周期。

## 性能注意事项
<a name="kb-multimodal-performance-considerations"></a>

要使您的多模式知识库发挥最佳性能，请考虑以下因素：
+ **处理时间：**由于内容转换，BDA 处理时间更长
+ **查询延迟：**图像查询的延迟可能高于文本查询
+ **分块持续时间：**较长的音频/视频区块持续时间会增加处理时间，但可能会提高准确性

# 通过连接到结构化数据存储来构建知识库
<a name="knowledge-base-build-structured"></a>

通过 Amazon Bedrock 知识库，您可以连接到结构化数据存储，其中包含符合预定义架构的数据。结构化数据的示例包括表和数据库。Amazon Bedrock 知识库可以对用户查询进行转换，将其转换为适合从支持的结构化数据存储中提取数据的语言。然后，它可以使用转换后的查询来检索与查询相关的数据并生成相应的响应。这使您能够直接使用现有的结构化数据，而无需将其转换为其他格式或生成自己的 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) 操作提交查询来检索数据，或者通过 [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) 操作从检索到的数据生成响应。从根本上讲，这些操作对用户查询进行转换，将其转换为适用于连接到知识库的结构化数据存储的查询。

您还可以选择使用 [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html) API 操作，独立于检索数据来转换查询。此操作将自然语言查询转换为适用于所查询数据来源的 SQL 查询。您可以独立使用此操作并将其插入到工作流中。

选择一个主题，了解将知识库连接到结构化数据存储的先决条件和流程。

**Topics**
+ [设置查询引擎和权限以创建带结构化数据存储的知识库](knowledge-base-prereq-structured.md)
+ [通过连接到结构化数据存储来创建知识库](knowledge-base-structured-create.md)
+ [将结构化数据存储与 Amazon Bedrock 知识库同步](kb-data-source-structured-sync-ingest.md)

# 设置查询引擎和权限以创建带结构化数据存储的知识库
<a name="knowledge-base-prereq-structured"></a>

本主题介绍将知识库连接到结构化数据存储时所需的权限。如果您计划将 Amazon Bedrock 知识库连接到结构化数据存储，则需要满足相应的先决条件。有关需满足的一般权限要求，请参阅[为用户或角色设置创建和管理知识库所需的权限](knowledge-base-prereq-permissions-general.md)。

**重要**  
执行任意 SQL 查询可能对任何 Text-to-SQL应用程序构成安全风险。我们建议您根据需要采取预防措施，例如使用受限角色、只读数据库和沙盒处理。

Amazon Bedrock 知识库使用 Amazon Redshift 作为查询引擎来查询数据存储。查询引擎访问结构化数据存储中的元数据，并使用这些元数据来帮助生成 SQL 查询。Amazon Redshift 是一项数据仓库服务，它使用 SQL 来分析数据仓库、数据库和数据湖中的结构化数据。

## 创建 Amazon Redshift 查询引擎
<a name="kb-query-engine-setup-create"></a>

可以根据您的使用案例使用 Amazon Redshift Serverless 或已预调配的 Amazon Redshift，并连接到数据仓库的工作组或集群。Amazon Redshift 引擎可以查询的基础数据可以是原生存储在 Amazon Redshift 集群中的数据，也可以是位于默认集群下的数据 AWS Glue Data Catalog （例如亚马逊 S3 等）。

如果您已创建查询引擎，则可以跳过此先决条件。否则，请执行以下步骤来设置已预调配的 Amazon Redshift 或 Amazon Redshift Serverless 查询引擎：

**在已预调配的 Amazon Redshift 中设置查询引擎**

1. 按照《Amazon Redshift 入门指南》中的[步骤 1：创建示例 Amazon Redshift 集群](https://docs.aws.amazon.com/redshift/latest/gsg/new-user.html#rs-gsg-launch-sample-cluster)中的过程操作。

1. 记下集群 ID。

1. （可选）有关 Amazon Redshift 预调配集群的更多信息，请参阅《Amazon Redshift 管理指南》中的 [Amazon Redshift 预调配集群](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html)。

**在 Amazon Redshift Serverless 中设置查询引擎**

1. 仅按照《Amazon Redshift 入门指南》中的[使用 Amazon Redshift Serverless 创建数据仓库](https://docs.aws.amazon.com/redshift/latest/gsg/new-user-serverless.html#serverless-console-resource-creation)中的设置过程操作，并为其配置默认设置。

1. 记下工作组 ARN。

1. （可选）有关 Amazon Redshift Serverless 工作组的更多信息，请参阅《Amazon Redshift 管理指南》中的[工作组和命名空间](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-workgroup-namespace.html)。

## 配置 Amazon Redshift 查询引擎权限
<a name="kb-query-engine-setup-redshift-permissions"></a>

根据您选择的 Amazon Redshift 查询引擎，您可以配置某些权限。您配置的权限取决于身份验证方法。下表显示了可用于不同的查询引擎的身份验证方法：


****  

| 身份验证方法 | 已预调配的 Amazon Redshift | Amazon Redshift Serverless | 
| --- | --- | --- | 
| IAM | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/icon-yes.png)是 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/icon-yes.png)是 | 
| 数据库用户名 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/icon-yes.png)是 | ![\[Red circular icon with an X symbol, indicating cancellation or denial.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/icon-no.png)否 | 
| AWS Secrets Manager | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/icon-yes.png)是 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/icon-yes.png)是 | 

Amazon Bedrock 知识库使用[服务角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)将知识库连接到结构化数据存储，从这些数据存储中检索数据，并根据用户查询和数据存储的结构生成 SQL 查询。

**注意**  
如果您计划使用 AWS 管理控制台 来创建知识库，则可以跳过此先决条件。控制台将创建具有适当权限的 Amazon Bedrock 知识库服务角色。

要创建具有适当权限的自定义 IAM 服务角色，请按照[创建向 AWS 服务委派权限的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)中的步骤操作，并附加[信任关系](kb-permissions.md#kb-permissions-trust)中定义的信任关系。

然后，为您的知识库添加对 Amazon Redshift 查询引擎和数据库的访问权限。展开与适用于您的使用案例的部分：

### 您的查询引擎是已预调配的 Amazon Redshift
<a name="w2aac28c10c27c13c11c15b1"></a>

将以下策略附加到您的自定义服务角色，以允许此角色访问您的数据并使用该数据生成查询：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RedshiftDataAPIStatementPermissions",
            "Effect": "Allow",
            "Action": [
                "redshift-data:GetStatementResult",
                "redshift-data:DescribeStatement",
                "redshift-data:CancelStatement"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "StringEquals": {
                    "redshift-data:statement-owner-iam-userid": "${aws:userid}"
                }
            }
        },
        {
            "Sid": "RedshiftDataAPIExecutePermissions",
            "Effect": "Allow",
            "Action": [
                "redshift-data:ExecuteStatement"
            ],
            "Resource": [
                "arn:aws:redshift:us-east-1:123456789012:cluster:${Cluster}"
            ]
        },
        {
            "Sid": "SqlWorkbenchAccess",
            "Effect": "Allow",
            "Action": [
                "sqlworkbench:GetSqlRecommendations",
                "sqlworkbench:PutSqlGenerationContext",
                "sqlworkbench:GetSqlGenerationContext",
                "sqlworkbench:DeleteSqlGenerationContext"
            ],
            "Resource": "*"
        },
        {
            "Sid": "GenerateQueryAccess",
            "Effect": "Allow",
            "Action": [
                "bedrock:GenerateQuery"
            ],
            "Resource": "*"
        }
    ]
}
```

------

您还需要添加权限以允许您的服务角色向查询引擎进行身份验证。展开一个部分以查看该方法的权限。

------
#### [ IAM ]

要允许您的服务角色通过 IAM 对已预调配的 Amazon Redshift 查询引擎进行身份验证，请将以下策略附加到自定义服务角色：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetCredentialsWithFederatedIAMCredentials",
            "Effect": "Allow",
            "Action": "redshift:GetClusterCredentialsWithIAM",
            "Resource": [
                "arn:aws:redshift:us-east-1:123456789012:dbname:Cluster/database"
            ]
        }
    ]
}
```

------

------
#### [ Database user ]

要以 Amazon Redshift 数据库用户身份进行身份验证，请将以下策略附加到服务角色：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetCredentialsWithClusterCredentials",
            "Effect": "Allow",
            "Action": [
                "redshift:GetClusterCredentials"
            ],
            "Resource": [
                "arn:aws:redshift:us-east-1:123456789012:dbuser:${cluster}/${dbuser}",
                "arn:aws:redshift:us-east-1:123456789012:dbname:${cluster}/${database}"
            ]
        }
    ]
}
```

------

------
#### [ AWS Secrets Manager ]

要允许您的服务角色使用 AWS Secrets Manager 密钥向 Amazon Redshift 预配置的查询引擎进行身份验证，请执行以下操作：
+ 将以下策略附加到角色：

  ```
  {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "GetSecretPermissions",
              "Effect": "Allow",
              "Action": [
                  "secretsmanager:GetSecretValue"
              ],
              "Resource": [
                  "arn:aws:secretsmanager:${region}:${account}:secret:${secretName}"
              ]
          }
      ]
  }
  ```

------

### 您的查询引擎是 Amazon Redshift Serverless
<a name="w2aac28c10c27c13c11c15b3"></a>

要附加的权限取决于您的身份验证方法。展开一个部分以查看方法的权限。

------
#### [ IAM ]

要允许您的服务角色通过 IAM 对 Amazon Redshift Serverless 查询引擎进行身份验证，请将以下策略附加到自定义服务角色：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RedshiftServerlessGetCredentials",
            "Effect": "Allow",
            "Action": "redshift-serverless:GetCredentials",
            "Resource": [
                "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup/WorkgroupId"
            ]
        }
    ]
}
```

------

------
#### [ AWS Secrets Manager ]

要允许您的服务角色使用 AWS Secrets Manager 密钥向 Amazon Redshift 预配置的查询引擎进行身份验证，请执行以下操作：
+ 将以下策略附加到角色：

  ```
  {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "GetSecretPermissions",
              "Effect": "Allow",
              "Action": [
                  "secretsmanager:GetSecretValue"
              ],
              "Resource": [
                  "arn:aws:secretsmanager:${region}:${account}:secret:${secretName}"
              ]
          }
      ]
  }
  ```

------

## 允许知识库服务角色访问您的数据存储
<a name="knowledge-base-prereq-structured-db-access"></a>

确保您的数据存储在以下某个[支持的结构化数据存储](knowledge-base-structured-create.md)中：
+ Amazon Redshift
+ AWS Glue Data Catalog (AWS Lake Formation)

下表汇总了适用于查询引擎的身份验证方法，具体取决于您的数据存储：


****  

| 身份验证方法 | Amazon Redshift | AWS Glue Data Catalog (AWS Lake Formation) | 
| --- | --- | --- | 
| IAM | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/icon-yes.png)是 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/icon-yes.png)是 | 
| 数据库用户名 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/icon-yes.png)是 | ![\[Red circular icon with an X symbol, indicating cancellation or denial.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/icon-no.png)否 | 
| AWS Secrets Manager | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/icon-yes.png)是 | ![\[Red circular icon with an X symbol, indicating cancellation or denial.\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/images/icons/icon-no.png)否 | 

要了解如何为 Amazon Bedrock 知识库服务角色设置适当权限，以便访问您的数据存储并基于其生成查询，请展开与数据存储所在的服务对应的部分：

### Amazon Redshift
<a name="w2aac28c10c27c13c13c13b1"></a>

要向 Amazon Bedrock 知识库服务角色授予对 Amazon Redshift 数据库的访问权限，请使用 [Amazon Redshift 查询编辑器 V2](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2.html) 并运行以下 SQL 命令：

1. （如果您使用 IAM 进行身份验证但尚未为数据库创建用户）运行以下命令，该命令使用 CREATE USER [创建数据库用户](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_USER.html)并允许其通过 IAM 进行身份验证，*\$1\$1service-role\$1*替换为您创建的自定义 Amazon Bedrock 知识库服务角色的名称：

   ```
   CREATE USER "IAMR:${service-role}" WITH PASSWORD DISABLE;
   ```
**重要**  
如果您使用在控制台中为您创建的 Amazon Bedrock 知识库服务角色，然后在执行此步骤之前[同步您的数据存储](kb-data-source-structured-sync-ingest.md)，则系统将为您创建用户，不过同步将失败，因为该用户尚未获得对您的数据存储的访问权限。在同步之前，您必须执行以下步骤。

1. 通过运行 [GRANT](https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html) 命令向身份授予从数据库中检索信息的权限。

------
#### [ IAM ]

   ```
   GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "IAMR:${serviceRole}";
   ```

------
#### [ Database user ]

   ```
   GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "${dbUser}";
   ```

------
#### [ AWS Secrets Manager username ]

   ```
   GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "${secretsUsername}";
   ```

------
**重要**  
不要向 `CREATE`、`UPDATE` 或 `DELETE` 授予访问权限。向这些操作授予访问权限可能会导致您的数据发生非预期的修改。

   为了更精细地控制可以访问的表，可以用以下表示法替换`ALL TABLES`特定的表名：。*\$1\$1schemaName\$1* *\$1\$1tableName\$1*有关此表示法的更多信息，请参阅[跨数据库查询](https://docs.aws.amazon.com/redshift/latest/dg/cross-database-overview.html)中的**查询对象**部分。

------
#### [ IAM ]

   ```
   GRANT SELECT ON ${schemaName}.${tableName} TO "IAMR:${serviceRole}";
   ```

------
#### [ Database user ]

   ```
   GRANT SELECT ON ${schemaName}.${tableName} TO "${dbUser}";
   ```

------
#### [ AWS Secrets Manager username ]

   ```
   GRANT SELECT ON ${schemaName}.${tableName} TO "${secretsUsername}";
   ```

------

1. 如果您在 Redshift 数据库中创建了新架构，请运行以下命令以向身份授予对新架构的权限。

   ```
   GRANT USAGE ON SCHEMA ${schemaName} TO "IAMR:${serviceRole}";
   ```

### AWS Glue Data Catalog
<a name="w2aac28c10c27c13c13c13b3"></a>

要授予您的 Amazon Bedrock 知识库服务角色访问您的 AWS Glue Data Catalog 数据存储的权限，请使用 [Amazon Redshift 查询编辑器](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2.html) v2 并运行以下 SQL 命令：

1. 运行以下命令，该命令使用 CREATE [US](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_USER.html) ER 创建数据库用户并允许其通过 IAM 进行身份验证，*\$1\$1service-role\$1*替换为您创建的自定义 Amazon Bedrock 知识库服务角色的名称：

   ```
   CREATE USER "IAMR:${service-role}" WITH PASSWORD DISABLE;
   ```
**重要**  
如果您使用在控制台中为您创建的 Amazon Bedrock 知识库服务角色，然后在执行此步骤之前[同步您的数据存储](kb-data-source-structured-sync-ingest.md)，则系统将为您创建用户，不过同步将失败，因为该用户尚未获得对您的数据存储的访问权限。在同步之前，您必须执行以下步骤。

1. 通过运行以下 [GRANT](https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html) 命令向服务角色授予从数据库中检索信息的权限：

   ```
   GRANT USAGE ON DATABASE awsdatacatalog TO "IAMR:${serviceRole}";
   ```
**重要**  
不要向 `CREATE`、`UPDATE` 或 `DELETE` 授予访问权限。向这些操作授予访问权限可能会导致您的数据发生非预期的修改。

1. 要允许访问您的 AWS Glue Data Catalog 数据库，请将以下权限附加到服务角色：

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "glue:GetDatabases",
                   "glue:GetDatabase",
                   "glue:GetTables",
                   "glue:GetTable",
                   "glue:GetPartitions",
                   "glue:GetPartition",
                   "glue:SearchTables"
               ],
               "Resource": [
                   "arn:aws:glue:us-east-1:123456789012:table/${DatabaseName}/${TableName}",
                   "arn:aws:glue:us-east-1:123456789012:database/${DatabaseName}",
                   "arn:aws:glue:us-east-1:123456789012:catalog"
               ]
           }
       ]
   }
   ```

------

1. 通过以下方式向你的服务角色授予权限 AWS Lake Formation （要详细了解 Lake Formation 及其与 Amazon Redshift 的关系，请参阅 [Redshift 的数据源](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-source.html)）：

   1. 登录并打开 Lake AWS 管理控制台 Formation 控制台，网址为[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。

   1. 从左侧导航窗格中选择**数据权限**。

   1. 向用于 Amazon Bedrock 知识库的服务角色授予权限。

   1. 授予数据库和表的**描述**和**选择**权限。

1. 根据您在中使用的数据源 AWS Glue Data Catalog，您可能需要添加访问该数据源的权限（有关更多信息，请参阅[AWS Glue 依赖于其他](https://docs.aws.amazon.com/glue/latest/dg/dependency-on-other-services.html)数据源 AWS 服务）。例如，如果您的数据来源位于 Amazon S3 位置，则需要向上述策略添加以下语句。

   ```
   {
       "Sid": "Statement1",
       "Effect": "Allow",
       "Action": [
           "s3:ListBucket",
           "s3:GetObject"
       ],
       "Resource": [
           "arn:aws:s3:::${BucketName}",
           "arn:aws:s3:::${BucketName}/*"
       ]
   }
   ```

1. （可选）如果您使用 AWS KMS 对 Amazon S3 中的数据进行加密 AWS Glue Data Catalog，则需要向该角色添加解密 KMS 密钥上数据的权限。

   ```
   {
       "Action": [
           "kms:Decrypt"
       ],
       "Resource": [
           "arn:aws:kms:${Region}:${Account}:key/{KmsId}",
           "arn:aws:kms:${Region}:${Account}:key/{KmsId}"
       ],
       "Effect": "Allow"
   }
   ```

# 通过连接到结构化数据存储来创建知识库
<a name="knowledge-base-structured-create"></a>

要将知识库连接到结构化数据存储，请指定以下组件：
+ 

**查询引擎配置**  
将执行生成的 SQL 查询的计算服务的配置。查询引擎用于将自然语言用户查询转换为可用于从数据存储中提取数据的 SQL 查询。您可以选择 Amazon Redshift 作为查询引擎。选择此配置时，您必须指定：
  + 计算连接元数据，例如集群 ID 或工作组 ARN，具体取决于所选的查询引擎。
  + 使用查询引擎的身份验证方法，可以是使用具有相应权限的 IAM 服务角色、查询引擎数据库用户或与您的数据库凭证关联的 AWS Secrets Manager 密钥。
+ 

**存储配置**  
包含数据的数据存储的配置。你可以连接亚马逊 Redshift Provisioned 或 Amazon Redshift Serverless，然后使用亚马逊 Redshift 或作为数据存储。 AWS Glue Data Catalog 
+ 

**（可选）查询配置**  
可以使用可选的查询配置来提高 SQL 生成的准确性：
  + **最大查询时间** – 查询超时后的时间量。
  + **描述** – 提供有关表或列的元数据或补充信息。您可以包括表或列的描述、使用说明或任何其他属性。您添加的描述可以通过提供有关表或列的结构的额外上下文和信息来改进 SQL 查询生成。
  + **包含项和排除项** – 指定生成 SQL 时要包括或排除的一组表或列。如果您想将 SQL 查询的范围限制为已定义的可用表或列子集，则此字段至关重要。此选项可以通过减少不必要的表或列引用来协助优化生成过程。

    如果指定包含项，则会忽略所有其他表和列。如果指定排除项，则会忽略您指定的表和列。
**注意**  
包含项和排除项不能替代护栏，仅用于提高模型准确度。
  + **精选查询** – 一组预定义的问答示例。问题以自然语言查询（NLQ）形式编写，而答案是相应的 SQL 查询。这些示例通过提供应生成的查询类型的示例来为 SQL 生成过程提供协助。它们可用作提高生成式 SQL 输出的准确性和相关性的参考点。

展开与您的使用案例相对应的部分：

## 使用控制台
<a name="knowledge-base-structured-create-console"></a>

要使用连接到结构化数据存储 AWS 管理控制台，请执行以下操作：

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

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

1. 在**知识库**部分中，选择**创建**，然后选择**包含结构化数据存储的知识库**。

1. 为知识库设置以下详细信息：

   1. （可选）更改默认名称并为知识库提供描述。

   1. 选择要用于从数据存储中检索数据的查询引擎。

   1. 选择具有适当权限的 IAM 服务角色来创建和管理此知识库。您可以让 Amazon Bedrock 创建服务角色，也可以选择您已创建的自定义角色。有关创建自定义角色的更多信息，请参阅[设置查询引擎和权限以创建带结构化数据存储的知识库](knowledge-base-prereq-structured.md)。

   1. （可选）添加要与知识库关联的标签。有关更多信息，请参阅 [标记 Amazon Bedrock 资源](tagging.md)。

   1. 选择**下一步**。

1. 配置查询引擎：

   1. 选择已在其中创建集群或工作组的服务。然后，选择要使用的集群或工作组。

   1. 选择身份验证方法并提供所需字段。

   1. 选择用于存储元数据的数据存储。然后，选择或输入数据库的名称。

   1. （可选）根据需要修改查询配置。有关不同配置的更多信息，请参阅本主题的开头部分。

   1. 选择**下一步**。

1. 查看知识库配置并根据需要编辑任何部分。确认创建知识库。

## 使用 API
<a name="knowledge-base-structured-create-api"></a>

要使用 Amazon Bedrock API 连接到结构化数据存储，请使用 [Amazon Bedrock 构建时终端节点代理](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送[CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html)请求，请求内容如下：

```
{
    "name": "string",
    "roleArn": "string",
    "knowledgeBaseConfiguration": {
        "type": "SQL",
        "sqlKnowledgeBaseConfiguration": [SqlKnowledgeBaseConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_SqlKnowledgeBaseConfiguration.html)
    },
    "description": "string",
    "clientToken": "string",
    "tags": {
        "string": "string"
    }
}
```

以下字段是必填字段。


****  

| 字段 | Basic description | 
| --- | --- | 
| Name | 知识库的名称。 | 
| roleArn | 具有适当权限的[知识库服务角色](kb-permissions.md)。您可以使用控制台自动创建具有适当权限的服务角色。 | 
| knowledgeBaseConfiguration | 包含知识库的配置。对于结构化数据库，请指定 SQL 作为 type，并包含 sqlKnowledgeBaseConfiguration 字段。 | 

以下字段是可选字段。


****  

| 字段 | 使用 | 
| --- | --- | 
| 描述 | 包含知识库的描述。 | 
| clientToken | 用于确保 API 请求仅完成一次。有关更多信息，请参阅[确保幂等性](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html)。 | 
| 标签 | 将标签与流相关联。有关更多信息，请参阅 [标记 Amazon Bedrock 资源](tagging.md)。 | 

`SQLKnowledgeBaseConfiguration` 取决于您使用的查询引擎。对于 Amazon Redshift，请将`type`字段指定为`REDSHIFT`并包括映射到 a 的`redshiftConfiguration`字段。[RedshiftConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftConfiguration.html)对于 [RedshiftConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftConfiguration.html)，您可以配置以下字段：

### queryEngineConfiguration
<a name="w2aac28c10c27c15b9b3c17b1"></a>

您可以配置以下类型的查询引擎：

#### 已预调配的 Amazon Redshift
<a name="w2aac28c10c27c15b9b3c17b1b5b1"></a>

如果您的 Amazon Redshift 数据库是在专用计算节点上配置的，则该`queryEngineConfiguration`字段的值应采用以下[RedshiftQueryEngineConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftQueryEngineConfiguration.html)格式：

```
{
    "type": "PROVISIONED",
    "provisionedConfiguration": {
        "clusterIdentifier": "string",
        "authConfiguration": [RedshiftProvisionedAuthConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftProvisionedAuthConfiguration.html)
    },
}
```

在 `clusterIdentifier` 字段中指定集群的 ID。这[RedshiftProvisionedAuthConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftProvisionedAuthConfiguration.html)取决于你使用的授权类型。选择与您的授权方法相匹配的选项卡：

------
#### [ IAM role ]

如果您使用 IAM 角色进行授权，则只需在 [RedshiftProvisionedAuthConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftProvisionedAuthConfiguration.html) 中将 type 指定为 `IAM`，且无需填写其他字段。

```
{
    "type": "IAM"
}
```

------
#### [ Temporary credentials user name ]

如果您使用数据库用户名进行授权，请将 `type` 指定为 `USERNAME`，并在 `RedshiftProvisionedAuthConfig` 中的 `databaseUser` 字段中指定用户名：

```
{
    "type": "USERNAME",
    "databaseUser": "string"
}
```

------
#### [ AWS Secrets Manager ]

如果您使用授权 AWS Secrets Manager，请在以下`type``usernamePasswordSecretArn`字段中指定 as `USERNAME_PASSWORD` 并指定密钥的 ARN：`RedshiftProvisionedAuthConfig`

```
{
    "type": "USERNAME_PASSWORD",
    "usernamePasswordSecretArn": "string"
}
```

------

#### Amazon Redshift Serverless
<a name="w2aac28c10c27c15b9b3c17b1b5b3"></a>

如果您使用的是 Amazon Redshift Serverless，则该`queryConfiguration`字段的值应采用以下[RedshiftQueryEngineConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftQueryEngineConfiguration.html)格式：

```
{
    "type": "SERVERLESS",
    "serverlessConfiguration": {
        "workgroupArn": "string",
        "authConfiguration": 
    }
}
```

在 `workgroupArn` 字段中指定工作组的 ARN。这[RedshiftServerlessAuthConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftServerlessAuthConfiguration.html)取决于你使用的授权类型。选择与您的授权方法相匹配的选项卡：

------
#### [ IAM role ]

如果您使用 IAM 角色进行授权，则只需在 `RedshiftServerlessAuthConfiguration` 中将 type 指定为 `IAM`，且无需填写其他字段。

```
{
    "type": "IAM"
}
```

------
#### [ AWS Secrets Manager ]

如果您使用授权 AWS Secrets Manager，请在以下`type``usernamePasswordSecretArn`字段中指定 as `USERNAME_PASSWORD` 并指定密钥的 ARN：`RedshiftServerlessAuthConfiguration`

```
{
    "type": "USERNAME_PASSWORD",
    "usernamePasswordSecretArn": "string"
}
```

------

### storageConfigurations
<a name="w2aac28c10c27c15b9b3c17b3"></a>

此字段映射到包含单个字段的数组 [RedshiftQueryEngineStorageConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftQueryEngineStorageConfiguration.html)，其格式取决于数据的存储位置。

#### AWS Glue Data Catalog
<a name="w2aac28c10c27c15b9b3c17b3b5b1"></a>

如果您的数据存储在 AWS Glue Data Catalog，则`RedshiftQueryEngineStorageConfiguration`应采用以下格式：

```
{
    "type": "AWS_DATA_CATALOG",
    "awsDataCatalogConfiguration": {
        "tableNames": ["string"]
    }
}
```

在 `tableNames` 映射到的数组中添加要连接知识库的每个表的名称。

**注意**  
按照[跨数据库查询](https://docs.aws.amazon.com/redshift/latest/dg/cross-database-overview.html)（`${databaseName}.${tableName}`）中描述的模式输入表名称。您可以通过指定 `${databaseName.*}` 来包含所有表。

#### Amazon Redshift 数据库
<a name="w2aac28c10c27c15b9b3c17b3b5b3"></a>

如果您的数据存储在 Amazon Redshift 数据库中，则 `RedshiftQueryEngineStorageConfiguration` 应采用以下格式：

```
{
    "type": "string",
    "redshiftConfiguration": {
        "databaseName": "string"
    }
}
```

在 `databaseName` 字段中指定 Amazon Redshift 数据库的名称。

**注意**  
按照[跨数据库查询](https://docs.aws.amazon.com/redshift/latest/dg/cross-database-overview.html)（`${databaseName}.${tableName}`）中描述的模式输入表名称。您可以通过指定 `${databaseName.*}` 来包含所有表。

如果您的数据库是通过 Amazon A SageMaker I Lakehouse 挂载的，则数据库名称的格式为*\$1\$1db\$1@\$1\$1schema\$1*。

### queryGenerationConfiguration
<a name="w2aac28c10c27c15b9b3c17b5"></a>

此字段映射到以下内容 [QueryGenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationConfiguration.html)，您可以使用这些字段来配置数据的查询方式：

```
{
    "executionTimeoutSeconds": number,
    "generationContext": {
        "tables": [
            {
                "name": "string",
                "description": "string",
                "inclusion": "string",
                "columns": [
                    {
                        "name": "string",
                        "description": "string",
                        "inclusion": "string"
                    },
                    ...
                ]
            },
            ...
        ],
        "curatedQueries": [
            {
                "naturalLanguage": "string",
                "sql": "string"
            },
            ...
        ]
    }
}
```

如果希望为查询设置超时时间，请在 `executionTimeoutSeconds` 字段中指定超时持续时间（以秒为单位）。

该`generationContext`字段映射到一个[QueryGenerationContext](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationContext.html)对象，您可以在其中根据需要配置任意数量的以下选项。

**重要**  
如果包含生成上下文，则查询引擎会尽可能在生成 SQL 时应用该上下文。生成上下文具有非确定性，并且仅用于提高模型准确度。为确保准确度，请验证生成的 SQL 查询。

有关可包括的生成上下文的信息，请展开以下部分：

#### 为数据库中的表或列添加描述
<a name="w2aac28c10c27c15b9b3c17b5c15b1"></a>

要提高用于查询数据库的 SQL 生成的准确度，您可以为表或列提供描述，此描述能比简短的表名或列名提供更丰富的上下文。您可执行以下操作：
+ 要为表添加描述，请在`tables`数组中添加一个[QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html)对象。在该对象中，在 `name` 字段中指定表的名称，并在 `description` 字段中指定描述，如以下示例所示：

  ```
  {
      "name": "database.schema.tableA",
      "description": "Description for Table A"
  }
  ```
+ 要为列添加描述，请在`tables`数组中包含一个[QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html)对象。在该对象中，在字段中指定表的名称并包括该`name`字`columns`段，该字段映射到的数组[QueryGenerationColumn](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationColumn.html)。在 `QueryGenerationColumn` 对象中，在 `name` 字段中包含列的名称，并在 `description` 字段中包含描述，如以下示例所示：

  ```
  {
      "name": "database.schema.tableA",
      "columns": [
          {
              "name": "Column A",
              "description": "Description for Column A"
          }
      ]
  }
  ```
+ 您可以同时为表及其列添加描述，如以下示例所示：

  ```
  {
      "name": "database.schema.tableA",
      "description": "Description for Table A",
      "columns": [
          {
              "name": "columnA",
              "description": "Description for Column A"
          }
      ]
  }
  ```
**注意**  
按照[跨数据库查询](https://docs.aws.amazon.com/redshift/latest/dg/cross-database-overview.html)中描述的模式输入表名称和列名称。如果您的数据库在 AWS Glue Data Catalog，则格式为`awsdatacatalog.gluedatabase.table`。

#### 在数据库中包含或排除表或列
<a name="w2aac28c10c27c15b9b3c17b5c15b3"></a>

在生成 SQL 时，您可以使用[QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html)和[QueryGenerationColumn](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationColumn.html)对象中的`inclusion`字段来建议要包含或排除的表或列。可以在 `inclusion` 字段中指定下列值之一：
+ INCLUDE - 生成 SQL 时，仅将您指定的表或列作为上下文包含在内。
+ EXCLUDE - 生成 SQL 时，会将您指定的表或列作为上下文排除。

您可以通过以下方式指定是包含还是排除表或列：
+ 要包含或排除表，请在`tables`数组中包含一个[QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html)对象。在该对象中，在 `name` 字段中指定表的名称，并在 `inclusion` 字段中指定是包含还是排除表，如以下示例所示：

  ```
  {
      "name": "database.schema.tableA",
      "inclusion": "EXCLUDE"
  }
  ```

  查询引擎不会在用于生成 SQL 的附加上下文中添加 `Table A`。
+ 要包含或排除列，请在`tables`数组中包含一个[QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html)对象。在该对象中，在字段中指定表的名称并包括该`name`字`columns`段，该字段映射到的数组[QueryGenerationColumn](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationColumn.html)。在 `QueryGenerationColumn` 对象中，在 `name` 字段中包含列的名称，并在 `inclusion` 字段中指定是包含还是排除列，如以下示例所示：

  ```
  {
      "name": "database.schema.tableA",
      "columns": [
          {
              "name": "database.schema.tableA.columnA",
              "inclusion": "EXCLUDE"
          }
      ]
  }
  ```

  生成 SQL 时，SQL 生成功能会忽略上下文中 `Table A` 中的 `Column A`。
+ 在指定包含项或排除项时，您可以将表和列组合使用，如以下示例所示：

  ```
  {
      "name": "database.schema.tableA",
      "inclusion": "INCLUDE",
      "columns": [
          {
              "name": "database.schema.tableA.columnA",
              "inclusion": "EXCLUDE"
          }
      ]
  }
  ```

  在添加用于生成 SQL 的上下文时，SQL 生成功能会包含 `Table A`，但会排除其中的 `Column A`。

**重要**  
表和列排除项无法替代护栏。这些表和列的包含项与排除项用作附加上下文，以供模型在生成 SQL 时参考。

#### 向查询引擎提供自然语言到 SQL 查询的示例映射
<a name="w2aac28c10c27c15b9b3c17b5c15b5"></a>

为了提高查询引擎将用户查询转换为 SQL 查询的准确性，您可以在[QueryGenerationContext](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationContext.html)对象的`curatedQueries`字段中为其提供示例，该字段映射到[CuratedQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CuratedQuery.html)对象数组。每个对象都包含以下字段：
+ naturalLanguage – 自然语言形式的查询示例。
+ sql – 与自然语言查询对应的 SQL 查询。

# 将结构化数据存储与 Amazon Bedrock 知识库同步
<a name="kb-data-source-structured-sync-ingest"></a>

将知识库连接到结构化数据存储后，您可以执行同步以启动元数据摄取过程，以便检索数据。元数据允许 Amazon Bedrock 知识库将用户提示转换为对所连接数据库的查询。

每当您对数据库架构进行修改时，都需要同步更改。

要了解如何将元数据摄取到知识库中并同步最新数据，请选择与您的首选方法对应的选项卡，然后按照以下步骤操作：

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

**将数据摄取到知识库中并同步最新数据**

1. 通过以下网址打开 Amazon Bedrock 控制台：[https://console.aws.amazon.com/bedrock/](https://console.aws.amazon.com/bedrock/)。

1. 从左侧导航窗格中选择**知识库**，然后选择您的知识库。

1. 在**数据来源**部分中，选择**同步**以开始元数据摄取过程。要停止当前正在同步的数据来源，请选择**停止**。数据来源当前必须处于同步状态才能停止同步该数据来源。您可以再次选择**同步**以摄取其余数据。

1. 数据摄取完成后，如果成功则会显示绿色成功横幅。

1. 您可以选择一个数据来源，查看其**同步历史记录**。选择**查看警告**以查看数据摄取作业失败的原因。

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

要将您的数据摄取到知识库中并同步最新数据，请使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) 请求。

使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发出的 [GetIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html) 请求响应中返回的 `ingestionJobId` 来跟踪摄取作业的状态。

您可以使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [ListIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListIngestionJobs.html) 请求，查看数据来源的所有摄取作业的信息。

要停止当前正在运行的数据摄取任务，请使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [StopIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StopIngestionJob.html) 请求。准备就绪后，您可以再次发送 `StartIngestionJob` 请求以摄取其余的数据。

------

**重要**  
如果您使用在控制台中为您创建的 Amazon Bedrock 知识库服务角色，然后在向所使用的身份验证角色授予数据库访问权限之前，同步数据存储，则同步将失败，因为用户尚未获得访问数据存储的权限。有关向角色授予数据存储访问权限的信息，请参阅[允许知识库服务角色访问您的数据存储](knowledge-base-prereq-structured.md#knowledge-base-prereq-structured-db-access)。

# 使用 Amazon Kendra GenAI 索引构建 Amazon Bedrock 知识库
<a name="knowledge-base-build-kendra-genai-index"></a>

通过 Amazon Bedrock 知识库，您可以使用 Amazon Kendra GenAI 索引构建知识库，创建检索增强生成（RAG）驱动的更先进且更准确的数字助手。通过将 Amazon Kendra GenAI 索引与 Amazon Bedrock 知识库配合使用，您可以：
+ 无需重建索引或重新摄取数据，即可在多个 Amazon Bedrock 应用程序中重复使用已编制索引的内容。
+ 利用 Amazon Bedrock 的高级生成式人工智能功能，同时受益于 Amazon Kendra 的高度准确的信息检索能力。
+ 使用 Amazon Bedrock 的工具自定义数字助手的行为，同时保持 Amazon Kendra GenAI 索引的语义准确性。

有关如何使用 Amazon Kendra GenAI 索引的更多信息，请参阅《Amazon Kendra 开发人员指南》**中的 [Amazon Kendra GenAI 索引](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html#kendra-gen-ai-index)。

**Topics**
+ [创建带 Amazon Kendra GenAI 索引的 Amazon Bedrock 知识库](knowledge-base-kendra-genai-index-create.md)

# 创建带 Amazon Kendra GenAI 索引的 Amazon Bedrock 知识库
<a name="knowledge-base-kendra-genai-index-create"></a>

 有关如何使用 Amazon Kendra GenAI 索引的更多信息，请参阅《Amazon Kendra 开发人员指南》**中的 [Amazon Kendra GenAI 索引](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html#kendra-gen-ai-index)。

您可以使用 Amazon Bedrock 控制台或 Amazon Bedrock API，创建带 Amazon Kendra GenAI 索引的 Amazon Bedrock 知识库。选择与您的首选方法对应的选项卡，然后按照以下步骤操作：

**注意**  
您无法以根用户身份创建知识库。在开始之前，请使用 AWS Identity and Access Management (IAM) 用户登录。

**重要**  
要使用 API 创建带 Amazon Kendra GenAI 索引的知识库，您当前必须拥有索引。使用 API 创建知识库时，无法同时创建索引。如果要在创建知识库的同时创建索引，则必须使用控制台。

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

**创建带 Amazon Kendra GenAI 索引的知识库**

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

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

1. 在**知识库**部分，选择**创建**。

1. 选择**带有 Kendra GenAI 索引的知识库**。

1. （可选）在**知识库详细信息**下方，更改默认名称并为知识库提供描述。

1. 在 **IAM 权限**下，选择一个能够向 Amazon Bedrock 授予对其他所需 AWS 服务的访问权限的 IAM 角色。您可以让 Amazon Bedrock 为您创建服务角色，也可以选择[您已创建的自定义角色](kb-permissions.md)。

1. 选择**创建和使用新的服务角色**或**使用现有的服务角色**。

1. 选择**创建新的 Amazon Kendra GenAI 索引**或使用**现有的 Amazon Kendra GenAI 索引**。

1. （可选）在**其他配置**下，执行以下任意操作：
   + 配置 AWS Key Management Service (AWS KMS) 客户托管密钥以加密您的知识库。
   + 向知识库添加标签。有关更多信息，请参阅 [标记 Amazon Bedrock 资源](tagging.md)。

   

   

1. 选择**创建知识库**。当 Amazon Bedrock 创建知识库时，将显示状态**进行中**。必须等待创建完成后，您才能添加和同步数据来源。

1. 在 Amazon Bedrock 创建完知识库后，要配置数据来源，请按照[将数据来源连接到知识库](data-source-connectors.md)中的说明进行操作。

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

**创建带 Amazon Kendra GenAI 索引的知识库**

要创建知识库，请使用适用于 [Amazon Bedrock 的代理构建](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)时端点发送[ CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html)请求（请求和响应格式以及字段详情参见链接）。
+ 在 `roleArn` 字段中，提供有权创建 Amazon Bedrock 知识库的 IAM 角色的 Amazon 资源名称（ARN）。
+ 要使用知识库支持的模型，您必须[启用模型访问权限](model-access.md)。记下模型的 ARN，在将数据转换为向量嵌入时需要使用它。为知识库复制所选模型的模型（资源）ID。然后，按照*服务授权参考*中的 [Amazon Bedrock 定义的资源类型](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-resources-for-iam-policies)中提供的 ARN 示例，使用模型 ID 构造模型 ARN。请参阅模型资源类型的示例。

  在 `knowledgeBaseConfiguration` 对象的 `embeddingModelArn` 字段中，提供要使用的向量嵌入模型的 ARN。有关更多信息，请参阅 [Amazon Bedrock 知识库支持的模型和区域](knowledge-base-supported.md)。
+ 要创建带 Amazon Kendra GenAI 索引的知识库，请提供 Amazon Kendra GenAI 索引的 ARN。
+ 在创建一个知识库后，创建一个包含该知识库的文档或内容的数据来源。请注意，您无法使用 Amazon Bedrock API 操作来创建数据来源。您必须使用亚马逊 Bedrock 控制台或 Amazon K [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html)endra API 操作来执行此操作。有关选择数据来源的更多信息以及 API 连接配置示例，请参阅[将数据来源连接到知识库](data-source-connectors.md)。

------

# 使用 Amazon Neptune Analytics 分析数据库引擎中的图表构建知识库
<a name="knowledge-base-build-graphs"></a>

Amazon Bedrock 知识库通过 Amazon Neptune 提供完全托管的 GraphRAG 功能。GraphRAG 是 Amazon Bedrock 知识库提供的一项功能，将图形建模与生成式人工智能相结合来增强检索增强生成（RAG）。此功能将向量搜索结合，能够在 RAG 应用程序中快速分析来自 Amazon Neptune 的大量图表数据。

GraphRAG 会自动识别并利用摄取到知识库的文档中的实体与结构元素之间的关系。这使得基础模型能够做出与上下文相关的更全面响应，尤其是在需要通过多个逻辑步骤连接信息时。这意味着，在需要对多个文档分块连接数据和进行推理的情况下，生成式人工智能应用程序可以提供更相关的响应。这使聊天机器人等应用程序能够在需要从多个文档来源得出的相关事实、实体和关系来回答问题的情况下，通过基础模型 (FMs) 提供更相关的响应

## GraphRAG 区域可用性
<a name="knowledge-base-build-graphs-regions"></a>

GraphRAG 在以下 AWS 区域中可用：
+ 欧洲地区（法兰克福）
+ 欧洲地区（伦敦）
+ 欧洲地区（爱尔兰）
+ 美国西部（俄勒冈州）
+ 美国东部（弗吉尼亚州北部）
+ 亚太地区（东京）
+ 亚太地区（新加坡）

## 使用 GraphRAG 的优势
<a name="knowledge-base-build-graphs-benefits"></a>

Amazon Bedrock 知识库与 GraphRAG 协同工作，提供了以下优势：
+ 通过在摄取到 Amazon Bedrock 知识库的多个文档来源中，自动识别和利用实体与结构元素（例如章节标题）之间的关系，给出更相关和更全面的响应。
+ 增强了执行详尽搜索的能力，通过多个逻辑步骤连接不同的内容片段，从而改进了传统的 RAG 技术。
+ 更好的跨文档推理功能，通过连接各种来源的信息，获得更精确、在上下文中更准确的答案，这有助于进一步提高准确性并最大限度地减少幻觉。

## GraphRAG 的工作原理
<a name="knowledge-base-build-graphs-works"></a>

在对相关节点执行初始向量搜索后，Amazon Bedrock 知识库 GraphRAG 会执行以下步骤以生成更好的响应：

1. 检索相关的图表节点或者与检索到的文档分块相关联的分块标识符。

1. 通过遍历图表并从图形数据库中检索详细信息，扩展这些相关分块。

1. 使用此扩充过的上下文，通过了解相关实体并将重点放在关键实体上，来提供更有意义的响应。

## GraphRAG 注意事项和限制
<a name="knowledge-base-build-graphs-considerations"></a>

以下是将 Amazon Bedrock 知识库与 GraphRAG 配合使用时的一些限制
+ 不支持用于自定义图表构建的配置选项。
+ Amazon Neptune Analytics 分析数据库引擎图表不支持自动缩放。
+ GraphRAG 仅支持 Amazon S3 作为数据来源。
+ 选择 Claude 3 Haiku 作为基础模型，来自动为您的知识库生成图表。这会自动启用情境丰富功能。
+ 每个数据来源最多可以有 1000 个文件。您可以请求将此限制提高到每个数据来源最多 10000 个文件。或者，您可以将 Amazon S3 存储桶分区为多个文件夹，每个文件夹最多可包含 1000 个文件。
+ 如果您使用分层分块作为分块策略，GraphRAG 在搜索操作期间将仅检索子分块。它不会用对应的父分块替换子分块。这意味着您的搜索结果包含来自子分块的具体而详细的内容，而不是来自父分块的更广泛的上下文。

**注意**  
删除使用 Amazon Neptune Analytics 分析数据库引擎的知识库时，请先删除知识库，然后再删除 Amazon Neptune Analytics 分析数据库引擎图表。删除知识库不会自动删除底层图表。在您明确删除图表之前，可能会产生其他费用。或者，将数据来源删除策略设置为 RETAIN 模式，就可以先删除图表而不会导致故障。有关更多信息，请参阅 [从 Amazon Bedrock 知识库中删除数据来源](kb-ds-delete.md)。

# 使用 Amazon Neptune Analytics 分析数据库引擎图表创建 Amazon Bedrock 知识库
<a name="knowledge-base-build-graphs-build"></a>

GraphRAG 已完全集成到 Amazon Bedrock 知识库中，并使用 Amazon Neptune Analytics 分析数据库引擎进行图形和向量存储。您可以通过 AWS 管理控制台、或 SDK 开始在知识库中使用 GraphRag。 AWS CLI AWS 

您不需要任何现有的图形基础设施即可开始使用 GraphRAG。Amazon Bedrock 知识库会自动管理对 Amazon Neptune 图表的创建和维护操作。系统将从您上传到 Amazon S3 存储桶的文档中提取实体、事实和关系，用来自动创建和更新图表。因此，您无需先掌握任何图表建模知识即可向最终用户提供相关的响应。图表将存储在 Amazon Neptune Analytics 分析数据库引擎中。

创建知识库时，您需要设置或指定以下内容：
+ 定义和标识知识库的一般信息。
+ 具有知识库权限的服务角色。
+ 知识库的配置，包括在转换来自数据来源的数据时使用的嵌入模型、在其中存储嵌入的服务的存储配置。

**注意**  
您无法以根用户身份创建知识库。在开始这些步骤之前，请使用 IAM 用户登录。

以下内容显示如何创建知识库，以便通过控制台和 CLI 使用 Neptune GraphRAG。

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

**通过控制台创建 Neptune Analytics 分析数据库引擎知识库**

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

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

1. 在**知识库**部分中，选择**创建**，然后选择**带有向量存储的知识库**。

1. （可选）在**知识库详细信息**下方，更改默认名称并为知识库提供描述。

1. 在 **IAM 权限**下，选择一个能够向 Amazon Bedrock 授予对其他所需 AWS 服务的访问权限的 IAM 角色。您可以让 Amazon Bedrock 创建服务角色，也可以选择您已为 Neptune Analytics 分析数据库引擎创建的自定义角色。有关示例，请参阅[在 Amazon Neptune Analytics 分析数据库引擎中访问向量数据库的权限](kb-permissions.md#kb-permissions-neptune)。

1. 请务必选择 **Amazon S3** 作为数据来源，然后选择**下一步**来配置您的数据来源。

1. 提供文件的 **S3 URI**，该文件将用作您的数据来源，数据来源将与知识库连接并与 Amazon Neptune Analytics 分析数据库引擎集成。有关您可以提供的其他步骤和可选信息，请参阅[将数据来源连接到知识库](data-source-connectors.md)。

1. 在**嵌入模型**部分，选择嵌入模型以将数据转换为向量嵌入。或者，您可以使用**其他配置**部分来指定向量维度。对于嵌入类型，建议使用浮点向量嵌入。
**注意**  
嵌入模型的向量维度，必须与您在创建 Neptune Analytics 分析数据库引擎图表时指定的向量维度相匹配。

1. 在**向量数据库**部分，选择创建向量存储的方法，然后选择 **Amazon Neptune Analytics 分析数据库引擎（GraphRAG）**作为向量存储，以存储将用于查询的嵌入内容。要创建向量存储，您可以使用下列任一方法：
   + 建议您使用**快速创建新的向量存储**方法来快速开始创建向量存储。选择 **Amazon Neptune Analytics 分析数据库引擎（GraphRAG）**作为您的向量存储。此选项不需要您拥有任何现有的 Neptune Analytics 分析数据库引擎资源。知识库会自动生成文档嵌入并存储在 Amazon Neptune 中，包括从文档语料库中派生的实体及其关系的图表表示。
   + 或者，如果您已经创建了 Neptune Analytics 分析数据库引擎图表和向量索引，则可以使用**选择已创建的向量存储**选项。选择 **Amazon Neptune Analytics 分析数据库引擎（GraphRAG）**作为您的向量存储，并在向量索引中识别图形 ARN、向量字段名称和元数据字段名称。有关更多信息，请参阅 [将您创建的向量存储用于知识库的先决条件](knowledge-base-setup.md)。

1. 选择**下一步**并查看知识库的详细信息。在继续创建知识库之前，您可以编辑任何部分。
**注意**  
创建知识库所用的时间取决于您的特定配置。知识库创建完成后，知识库的状态将更改为“已就绪”或“可用”。  
知识库准备就绪并可供使用后，您可以首次同步数据来源，并在想要更新数据来源时进行同步。在控制台中选择知识库，然后在数据来源概述部分中选择**同步**。

1. 选择**创建知识库**。当 Amazon Bedrock 创建知识库时，将显示状态**进行中**。您必须等待创建完成后，才能同步数据来源。

1. 在 Amazon Bedrock 创建完知识库后，要配置数据来源，请按照[将数据来源连接到知识库](data-source-connectors.md)中的说明进行操作。

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

**使用 Neptune Analytics 创建知识库 AWS CLI**

1. 首先使用上下文丰富配置创建数据来源。要执行此操作，请使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 请求。下面显示了 CLI 命令示例。

   ```
   aws bedrock-agent create-data-source \
       --name graph_rag_source \
       --description data_source_for_graph_rag \
       --knowledge-base-id LDBBY2K5AG \
       --cli-input-json "file://input.json"
   ```

   以下代码显示了 `input.json` 文件的内容。

   ```
   {
       "dataSourceConfiguration": { 
           "s3Configuration": { 
               "bucketArn": "arn:aws:s3:::<example-graphrag-datasets>",
               "bucketOwnerAccountId": "<ABCDEFGHIJ>",
               "inclusionPrefixes": [ <"example-dataset"> ]
           },
           "type": "S3",
       },
       "VectorIngestionConfiguration": {
           "contextEnrichmentConfiguration":
               "type": "BEDROCK_FOUNDATION_MODEL",
               "bedrockFoundationModelConfiguration": {
                   "modelArn": "arn:aws:bedrock:<region>::foundation-model/anthropic.claude-3-haiku-20240307-v1:0",
                   "enrichmentStrategyConfiguration": {
                       "method": "CHUNK_ENTITY_EXTRACTION"
               }
           }
       }
   }
   ```

   要使用文档构建图表，你可以`modelArn`使用 Claude 3 Haiku（如前面的示例所示）、Claude Haiku 4.5 和 Amazon Nova 系列（包括具有文本输入模式的 Nova 2 和 Nova 型号）。要查看您所在地区可用的基础模型，请参阅 [Amazon Bedrock 中支持的基础模型](https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html)。
**注意**  
某些模型只能通过跨区域推理配置文件支持。当您在 Amazon Bedrock 中调用跨区域推理配置文件时，您的请求和要提取的数据来自源区域，并自动路由到该配置文件中定义的目标区域之一，从而优化性能。全球跨区域推理配置文件的目标区域包括所有商业区域。例如，您可以使用格式`modelArn`为来自 us-west-2 区域的美国跨区域呼叫指定。`arn:aws:bedrock:us-west-2:account-id:inference-profile/us.anthropic.claude-haiku-4-5-20251001-v1:0`

   要查看您的角色使用推理配置文件的策略要求，请参阅[跨区域推理配置文件的先决条件](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-prereq.html)。有关如何使用推理配置文件选择源和目标区域的指导，请参阅[推理配置文件支持的区域和模型](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html)。您的数据仅存储在与亚马逊 Bedrock 知识库和 Amazon Neptune Analytics 实例相对应的来源区域。目标区域仅用于推理。

1. 要创建知识库，请使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) 请求。下面显示了 CLI 命令示例。

   ```
   aws bi create-knowledge-base \
   --name <"knowledge-base-graphrag"> \
   --role-arn arn:aws:iam::<accountId>:role/<BedrockExecutionRoleForKnowledgeBase> \
   --cli-input-json "file://input.json"
   ```

   下面显示的是 `input.json` 文件的内容。

   ```
   {
       "storageConfiguration": {
           "type": "NEPTUNE_ANALYTICS"
           "neptuneAnalyticsConfiguration": {
               "graphArn": "arn:aws:neptune-graph:<region>:<>:graph/<graphID>",
               "fieldMapping": {
                   "metadataField": "metadata",
                   "textField": "text"
               },
           }
       },
       "knowledgeBaseConfiguration": {
           "type": "VECTOR",
           "vectorKnowledgeBaseConfiguration": {
               "embeddingModelArn": "arn:aws:bedrock:<region>::foundation-model/cohere.embed-english-v3"
           }
       }
   }
   ```

1. 在基于 GraphRAG 的应用程序运行时，您可以继续使用知识库 API 操作，为最终用户提供更全面、更相关和更易于解释的响应。以下各节将向您展示如何使用 CLI 命令启动摄取和执行检索查询。

------

## 同步数据来源
<a name="knowledge-base-build-graphs-sync"></a>

创建完知识库后，需要摄取或同步数据，以便查询数据。摄取过程根据您指定的向量嵌入模型和配置提取图形结构，并将数据来源中的原始数据转换为向量嵌入。

以下命令演示了如何使用 CLI 启动摄取作业的示例。

```
aws bedrock-agent start-ingestion-job \
--data-source-id <"ABCDEFGHIJ"> \
--knowledge-base-id <"EFGHIJKLMN">
```

有关更多信息以及如何使用控制台和 API 同步数据来源，请参阅[将您的数据与 Amazon Bedrock 知识库同步](kb-data-source-sync-ingest.md)。

## 将更改摄取到入知识库中
<a name="knowledge-base-build-graphs-ingest"></a>

使用 Amazon S3 作为数据来源时，您可以通过一个步骤修改数据来源并同步更改。通过直接摄取，您只需一个操作即可直接在知识库中添加、更新或删除文件，知识库无需同步即可访问文档。直接摄取会使用 `KnowledgeBaseDocuments` API 操作，对您直接提交到为知识库设置的向量存储中的文档编制索引。您还可以通过这些操作直接查看知识库中的文档，而不必导航到连接的数据来源进行查看。有关更多信息，请参阅 [将更改直接摄取到知识库中](kb-direct-ingestion.md)。

## 测试知识库
<a name="knowledge-base-build-graphs-test"></a>

现在，您已经设置了知识库，可以发送查询和生成响应来测试知识库。

以下代码演示 CLI 命令示例。

```
aws bedrock-agent-runtime retrieve \
--knowledge-base-id <"ABCDEFGHIJ"> \
--retrieval-query="{\"text\": \"What are the top three video games available now?\"}"
```

有关更多信息，请参阅 [查询连接到 Amazon Neptune Analytics 分析数据库引擎图表的知识库](kb-test-neptune.md)。

# 利用查询和响应测试知识库
<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 的响应有延迟。

# 为人工智能应用程序部署知识库
<a name="knowledge-base-deploy"></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) 请求。要了解如何使用这些 API 操作进行查询和生成响应，请参阅[利用查询和响应测试知识库](knowledge-base-test.md)。

您也可以将知识库与代理相关联，代理将在编排过程中根据需要调用知识库。有关更多信息，请参阅 [使用人工智能代理在应用程序中自动执行任务](agents.md)。

必须先配置数据来源并将其与知识库同步，然后才能部署知识库。请参阅[支持的数据来源](https://docs.aws.amazon.com/bedrock/latest/userguide/data-source-connectors.html)。

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

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

**将知识库与代理相关联**

1. 采用有权使用 Amazon Bedrock 控制台的 IAM 身份登录 AWS 管理控制台。然后，通过以下网址打开 Amazon Bedrock 控制台：[https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)。

1. 从左侧导航窗格中选择**代理**。

1. 选择要向其添加知识库的代理。

1. 在**工作草稿**部分，选择**工作草稿**。

1. 在**知识库**部分，选择**添加**。

1. 从**选择知识库**下的下拉列表中选择知识库，然后为代理指定有关它应该如何与知识库交互和返回结果的说明。

**取消知识库与代理的关联**

1. 采用有权使用 Amazon Bedrock 控制台的 IAM 身份登录 AWS 管理控制台。然后，通过以下网址打开 Amazon Bedrock 控制台：[https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)。

1. 从左侧导航窗格中选择**代理**。

1. 选择要向其添加知识库的代理。

1. 在**工作草稿**部分，选择**工作草稿**。

1. 在**知识库**部分，选择一个知识库。

1. 选择**删除**。

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

要将知识库与代理关联起来，请发送 [AssociateAgentKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_AssociateAgentKnowledgeBase.html) 请求。
+ 添加详细的 `description`，说明代理应如何与知识库交互和返回结果。
+ 将 `knowledgeBaseState` 设置为 `ENABLED` 以允许代理查询知识库。

您可以通过发送 [UpdateAgentKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_UpdateAgentKnowledgeBase.html) 请求来更新与代理关联的知识库。例如，您可能想将 `knowledgeBaseState` 设置为 `ENABLED` 以排查问题。由于所有字段都将被覆盖，您既要包含要更新的字段，也要包含要保持不变的字段。

要取消知识库与代理的关联，请发送 [DisassociateAgentKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DisassociateAgentKnowledgeBase.html) 请求。

------

# 查看有关 Amazon Bedrock 知识库的信息
<a name="kb-info"></a>

您可以查看知识库的相关信息，例如设置和状态。

要使用 Amazon CloudWatch Logs 监控您的知识库，请参阅 [Knowledge base logging](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-bases-logging.html)。

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

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

**查看知识库的相关信息**

1. 采用有权使用 Amazon Bedrock 控制台的 IAM 身份登录 AWS 管理控制台。然后，通过以下网址打开 Amazon Bedrock 控制台：[https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)。

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

1. 要查看知识库的详细信息，请选择来源的**名称**，或选择来源旁边的单选按钮并选择**编辑**。

1. 在详细信息页面上，您可以执行以下操作：
   + 要更改知识库的详细信息，请在**知识库概述**部分中选择**编辑**。
   + 要更新知识库中附加的标签，请在**标签**部分中选择**管理标签**。
   + 如果您更新创建知识库所依据的数据来源并且需要同步更改，请在**数据来源**部分中选择**同步**。
   + 要查看数据来源的详细信息，请选择**数据来源名称**。在详细信息中，您可以在**同步历史记录**部分选择某同步事件旁边的单选按钮，然后选择**查看警告**以查看无法同步数据摄取作业中文件的原因。
   + 要管理用于知识库的向量嵌入模型，请选择**编辑预调配吞吐量**。
   + 编辑完成后，选择**保存更改**。

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

要获取知识库的相关信息，请使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [GetKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetKnowledgeBase.html) 请求，并指定 `knowledgeBaseId`。

要列出有关您的知识库的信息，请使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [ListKnowledgeBases](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListKnowledgeBases.html) 请求。您可以设置要在响应中返回的结果数量上限。如果结果数超过您设置的值，响应会返回 `nextToken`。您可以在另一个 [ListKnowledgeBases](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListKnowledgeBases.html) 请求中的 `nextToken` 字段中使用这个值，以便查看下一批结果。

------

# 修改 Amazon Bedrock 知识库
<a name="kb-update"></a>

您可以更新知识库，例如更改知识库配置。

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

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

**更新知识库**

1. 采用有权使用 Amazon Bedrock 控制台的 IAM 身份登录 AWS 管理控制台。然后，通过以下网址打开 Amazon Bedrock 控制台：[https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)。

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

1. 选择知识库以查看相关详细信息，或者选择知识库旁边的单选按钮，然后选择**编辑**。

1. 您可以通过以下方式修改知识库。
   + 通过在**知识库概述**部分选择**编辑**来更改知识库的配置。
   + 在**标签**部分中选择**管理标签**，即可更改和管理知识库中附加的标签
   + 在**数据来源**部分可以更改和管理知识库的数据来源。

1. 编辑完成后，选择**保存更改**。

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

要更新知识库，请使用[ Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [UpdateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_UpdateKnowledgeBase.html) 请求。由于所有字段都将被覆盖，您既要包含要更新的字段，也要包含要保持不变的字段。

------

# 删除 Amazon Bedrock 知识库
<a name="kb-delete"></a>

您可以删除或删除不再使用或不需要的知识库。删除知识库时，还应执行以下操作以完全删除与知识库关联的所有资源。
+ 将知识库与所关联的任何代理程序解除关联。
+ 为您的知识库删除向量存储本身。

**注意**  
除非在创建数据来源时另行指定，否则新创建的数据来源的默认 `dataDeletionPolicy` 为“删除”。当您删除知识库或数据来源资源时，适用该策略。您可以将策略更新为“保留”数据来源中转换为向量嵌入的数据。请注意，如果您删除知识库或数据来源资源，则**向量存储本身不会被删除**。

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

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

**删除知识库**

1. 执行以下步骤之前，请务必先从与知识库关联的所有代理中删除该知识库。为此，请执行以下步骤：

   1. 从左侧导航窗格中选择**代理**。

   1. 选择要从中删除知识库的代理的**名称**。

   1. 此时将出现红色横幅，警告您要从代理中删除已不存在的知识库引用。

   1. 选中要删除的知识库旁边的单选按钮。选择**更多**，然后选择**删除**。

1. 采用有权使用 Amazon Bedrock 控制台的 IAM 身份登录 AWS 管理控制台。然后，通过以下网址打开 Amazon Bedrock 控制台：[https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)。

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

1. 选择知识库或选择知识库旁边的单选按钮。然后选择**删除**。

1. 查看有关删除知识库的警告。如果您接受这些条件，请在输入框中输入 **delete** 并选择**删除**进行确认。
**注意**  
**向量存储本身不会被删除**，只会删除数据。您可以使用向量存储的控制台或 SDK 来删除向量存储。还请务必查看您在知识库中使用的任何 Amazon Bedrock 代理程序。

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

要删除知识库，请使用[ Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [DeleteKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteKnowledgeBase.html) 请求。

您还必须取消关联与知识库关联的所有代理，方法是使用 [Amazon Bedrock 代理构建时端点](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)发送 [DisassociateAgentKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DisassociateAgentKnowledgeBase.html) 请求。

您还必须使用向量存储的控制台或 SDK 删除向量存储本身。

------