本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
连接 Amazon S3 以获取您的亚马逊 Bedrock 知识库
Amazon S3 是一种对象存储服务,可将数据以对象形式存储在存储桶中。您可以使用适用于亚马逊 Bedrock 的AWS 管理控制台或 CreateDataSourceAPI(参见 Amazon Bedrock 支持的软件开发工具包和),连接到您的 Amazon S 3 存储桶,以获取亚马逊 Bedrock 知识库。 AWS CLI
支持的特征
-
文档元数据字段
-
包含/排除内容过滤器
-
对已添加、更新、删除的内容进行增量内容同步
先决条件
在 Amazon S3 中,请确保:
在您的 AWS 账户中,请确保:
如果您使用控制台,则可以在创建知识库的步骤中为您创建具有所有所需权限的 IAM 角色。配置数据源和其他配置后,具有所有必需权限的 IAM 角色将应用于您的特定知识库。
连接配置
要连接到您的 Amazon S3 存储桶,您必须提供必要的配置信息,以便 Amazon Bedrock 可以访问和抓取您的数据。您还必须遵循先决条件 .
本节包含此数据源的配置示例。
有关包含/排除筛选器、文档元数据字段、增量同步及其工作原理的更多信息,请选择以下选项:
您可以添加一个单独的文件,为 Amazon S3 中的每个文件指定文档元数据字段/属性。例如,文档 oscars-coverage_20240310.pdf
包含新闻报道,这些文章可以按年份和类型进行分类。在此示例中,创建以下 oscars-coverage_20240310.pdf.metadata.js
on 文件并将其上传到您的存储桶。
{
"metadataAttributes": {
"genre": "entertainment",
"year": 2024
}
}
元数据文件必须使用与其关联的源文档文件相同的名称,并.metadata.json
附加到文件名的末尾。元数据文件必须存储在与 Amazon S3 存储桶中的源文件相同的文件夹或位置。该文件不得超过 10 KB 的限制。有关支持的属性/字段数据类型以及可以应用于元数据字段的筛选运算符的信息,请参阅元数据和筛选。
您可以包含或排除对某些内容的抓取。例如,您可以指定排除前缀/正则表达式模式,以跳过对文件名中包含 “private” 的任何文件的抓取。您也可以指定包含前缀/正则表达式模式以包含某些内容实体或内容类型。如果您指定了 “包含” 和 “排除” 筛选器,并且两者都与文档匹配,则排除过滤器优先,并且不会对文档进行抓取。
每次您的数据源与知识库同步时,数据源连接器都会抓取新内容、修改内容和已删除内容。 Amazon Bedrock 可以使用数据源的机制来跟踪内容更改并抓取自上次同步以来更改的内容。首次将数据源与知识库同步时,默认情况下会抓取所有内容。
要将您的数据源与知识库同步,请使用 StartIngestionJobAPI 或在控制台中选择您的知识库,然后在数据源概述部分中选择同步。
您从数据源同步的所有数据都可供bedrock:Retrieve
有权检索数据的任何人使用。这也可以包括任何具有受控数据源权限的数据。有关更多信息,请参阅知识库权限。
- Console
-
以下是您的 Amazon Bedrock 知识库连接到 Amazon S3 的配置示例。您可以在控制台中将数据源配置为知识库创建步骤的一部分。
-
AWS Management Console 使用具有 Amazon Bedrock 权限的 IAM 角色登录,然后通过 https://console.aws.amazon.com/bedrock/ 打开亚马逊 Bedrock 控制台。
-
在左侧导航窗格中,选择知识库。
-
在知识库部分,选择创建知识库。
-
提供知识库详细信息。
-
提供知识库名称和可选描述。
-
为创建知识库所需的必要访问权限提供 AWS Identity and Access Management 角色。
作为创建知识库的控制台步骤的一部分,可以为您创建具有所有所需权限的 IAM 角色。完成创建知识库的步骤后,具有所有必需权限的 IAM 角色将应用于您的特定知识库。
-
创建要分配给知识库的任何标签。
转到下一节以配置您的数据源。
-
选择 Amazon S3 作为您的数据源并提供连接配置的详细信息。
-
提供数据源名称。
-
指定您的 Amazon S3 存储桶是在您的当前 AWS 账户中还是其他 AWS 账户中。
-
从现有的 Amazon S3 存储桶位置浏览或提供 URI。您可以在 Amazon S3 控制台的属性部分中找到 URI 和 ARN。您的存储桶必须与您的 Amazon Bedrock 知识库位于同一区域。您必须拥有访问存储桶的权限。
您可以选择使用自己的托管 AWS KMS 密钥进行数据加密。
检查高级设置。您可以选择更改默认的选定设置。
-
在高级设置中设置您的临时数据加密密钥和数据删除策略。
对于 KMS key 设置,您可以选择自定义密钥或使用默认提供的数据加密密钥。
在将数据转换为嵌入式数据时,默认使用 AWS 拥有和管理的密钥 Amazon Bedrock 加密您的临时数据。您可以使用自己的 KMS 密钥。有关更多信息,请参阅 加密数据提取期间的临时数据存储。
对于数据删除策略设置,您可以选择以下任一选项:
继续配置您的数据源。
-
选择默认或自定义的分块和解析配置。
-
如果您选择自定义设置,请选择以下分块选项之一:
-
固定大小的分块:内容分成您设置的近似标记大小的文本块。您可以设置区块中不得超过的最大令牌数量以及连续区块之间的重叠百分比。
-
默认分块:内容拆分为最多 300 个标记的文本块。如果单个文档或内容包含的标记少于 300 个,则不会进一步拆分该文档。
-
分层分块:将内容组织成父子区块的嵌套结构。您可以设置最大父区块令牌大小和最大子区块令牌大小。您还可以在每个父区块和每个子区块的父区块之间设置重叠标记的绝对数量。
-
语义分块:将内容组织成语义相似的文本块或句子组。您可以设置要组合在一起的目标/当前句子周围的最大句子数(缓冲区大小)。您还可以设置断点百分位数阈值,用于将文本分成有意义的块。
-
不分块:每个文档都被视为单个文本块。您可能需要通过将文档拆分成单独的文件来对其进行预处理。
-
您可以选择使用 Amazon Bedrock基础模型来解析文档,以解析比标准文本更多的文本。例如,您可以解析文档中的表格数据,同时保持其结构不变。查看Amazon Bedrock 定价,了解有关基础模型成本的信息。
-
您可以选择使用 AWS Lambda 函数来自定义分块策略以及如何处理和提取文档元数据属性/字段。为 Lambda 函数的输入和输出提供 Amazon S3 存储桶位置。
转到下一节来配置您的矢量存储。
-
选择用于将数据转换为矢量嵌入的模型。
创建矢量存储库,允许 Amazon Bedrock 存储、更新和管理嵌入内容。您可以快速创建新的矢量存储库,也可以从已创建的支持的矢量存储中进行选择。如果您创建新的矢量存储,则会为您设置包含必填字段的 Amazon OpenSearch Serverless 矢量搜索集合和索引。如果从支持的矢量存储中进行选择,则必须映射矢量字段名称和元数据字段名称。
转到下一部分,查看您的知识库配置。
-
查看知识库的详细信息。在继续创建知识库之前,您可以编辑任何部分。
创建知识库所需的时间取决于您采集的数据量和您的特定配置。知识库创建完成后,知识库的状态将更改为 “就绪”。
知识库准备就绪或完成创建后,您可以随时随地同步您的数据源,也可以在任何时候同步您的数据源。在控制台中选择您的知识库,然后在数据源概述部分中选择同步。
- API
-
以下是您的 Amazon Bedrock 知识库连接到 Amazon S3 的配置示例。您可以使用带有 AWS CLI 或支持的软件开发工具包(例如 Python)的 API 来配置数据源。调用后 CreateKnowledgeBase,您可以调CreateDataSource用创建数据源,其中包含您的连接信息dataSourceConfiguration
。请记住,还要在中指定您的分块策略/方法,vectorIngestionConfiguration
并在中指定您的数据删除政策。dataDeletionPolicy
AWS Command Line Interface
aws bedrock 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": [
".*\\.pdf"
]
},
"type": "S3"
}