

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

# 将您的数据与 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 Serverless 矢量存储中，请检查该`faiss`引擎是否配置了矢量索引。如果向量索引是使用 `nmslib` 引擎配置，则您必须执行以下操作之一：
    + 在控制台中@@ [创建新的知识库](knowledge-base-create.md)，让 Amazon Bedrock 在 Amazon OpenSearch Serverless 中自动为你创建矢量索引。
    + 在向量存储中[创建另一个向量索引](knowledge-base-setup.md)，然后选择 `faiss` 作为**引擎**。然后[创建新的知识库](knowledge-base-create.md)并指定新的向量索引。
  + 如果知识库的向量索引位于 Amazon Aurora 数据库集群中，我们建议您使用自定义元数据字段将所有元数据存储在单列中，并对该列创建索引。如果未提供自定义元数据字段，那么必须在开始摄取之前，检查索引表格是否包含元数据文件中每个元数据属性的列。有关更多信息，请参阅[将您创建的向量存储用于知识库的先决条件](knowledge-base-setup.md)。

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

## 知识库如何处理重新同步
<a name="kb-data-source-sync-ingest-resync"></a>

每次在数据源中添加、修改或删除文件时，都必须同步数据源，以便在知识库中对其重新编制索引。同步是增量式的，因此 Amazon Bedrock 仅处理自上次同步以来添加、修改或删除的文档。当您同步数据源时，Amazon Bedrock 会重新摄取文档以确保准确性和一致性。重新摄取包括解析、分块、生成嵌入以及向量存储索引。


**同步场景**  

| 场景 | 发生了什么 | 
| --- | --- | 
| 未检测到任何更改 | 该文档已被跳过。 | 
| 内容或元数据已更改 | 文档被重新收录（重新解析、重新分块、重新嵌入和重新索引）。 | 
| 已添加新文档 | 仅摄取新文档。 | 
| 文档已删除 | 该文档已从矢量存储中移除。 | 

### 仅限元数据的优化
<a name="kb-data-source-sync-ingest-metadata-optimization"></a>

在某些情况下，Amazon Bedrock 可以更新元数据，而无需重新提取与该元数据文件关联的文档。这种优化会从向量存储中检索现有的向量嵌入，合并新的元数据，然后将更新的嵌入写回去，从而避免了对嵌入模型的调用。

仅当满足以下所有条件时，此优化才适用：
+ 仅修改`metadata.json`文件。没有更改任何内容文件。
+ 关联的内容文件不是 CSV 文件。
+ 数据源不使用自定义转换 Lambda 函数。

### CSV 文件的重新摄取行为
<a name="kb-data-source-sync-ingest-csv-reingestion"></a>

CSV 文件使用元数据中的`documentStructureConfiguration`字段来控制对哪些列进行索引。由于 Amazon Bedrock 在不重新处理文件的情况下无法确定此结构配置是否已更改，因此 CSV 文件在更新元数据文件时总是会重新载入。

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

------
#### [ 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 代理构建时终端节点的[GetIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html)请求中使用响应中`ingestionJobId`返回的内容](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)来跟踪摄取任务的状态。此外，请指定 `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) 请求并在其中包含它，以查看下一批作业。

------