

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

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

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

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

以下各部分介绍了 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 无服务器
  + 亚马逊 OpenSearch 服务托管集群
  + Amazon Neptune
  + Amazon Aurora（RDS）
  + Pinecone
  + Redis Enterprise Cloud
  + MongoDB Atlas
  + Amazon S3 Vectors

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

**摄取**

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 位客户”。具体查询指的是客户支出数据库表中的列名“截至目前的总购买金额”，还表示数据应按“最高”排序。