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