将知识库连接到 Amazon S3 - Amazon Bedrock

将知识库连接到 Amazon S3

Amazon S3 是一种对象存储服务,可将数据以对象形式存储在存储桶中。您可以使用适用于 Amazon Bedrock 的 AWS 管理控制台CreateDataSource API 连接到 Amazon S3 存储桶,来为 Amazon Bedrock 知识库摄取内容(请参阅 Amazon Bedrock 支持的 SDK 和 AWS CLI)。

您可以使用 Amazon S3 控制台或 API,将小批量文件上传到 Amazon S3 存储桶。或者,您可以使用 AWS DataSync,连续将多个文件上传到 S3,并按计划从本地、边缘、其他云或 AWS 存储传输文件。

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

对可爬取的文件数和文件的 MB 数是有限制的。请参阅 Quotas for knowledge bases

支持的功能

  • 文档元数据字段

  • 包含前缀

  • 对已添加、更新、删除的内容进行增量内容同步

先决条件

在 Amazon S3 中,请确保:

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

在 AWS 账户中,请确保

  • 在知识库的 AWS Identity and Access Management (IAM) 角色/权限策略中包含连接到数据来源的必要权限。有关将此数据来源添加到知识库 IAM 角色所需的权限的信息,请参阅访问数据来源的权限

注意

如果您使用控制台,可以在创建知识库时创建具有所有必需权限的 IAM 角色。配置数据来源和其他配置后,具有所有必需权限的 IAM 角色将应用于特定知识库。

连接配置

要连接到 Amazon S3 存储桶,您必须提供必要的配置信息,以便 Amazon Bedrock 可以访问和爬取您的数据。您还必须遵循先决条件

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

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

您可以添加一个单独的文件,用于为 Amazon S3 数据来源中的每个文件指定文档元数据字段/属性,以及指定在将数据来源编制索引到向量存储时是否将这些字段/属性包含到嵌入中。例如,您可以创建一个以下格式的文件,将其命名为 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 的限制。有关支持的属性/字段数据类型和可以应用于元数据字段的筛选运算符的更多信息,请参阅元数据和筛选

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

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

要将数据来源与知识库同步,请使用 StartIngestionJob API 或在控制台中选择知识库,然后在数据来源概述部分中选择同步

重要

您从数据来源同步的所有数据都可供有检索数据的 bedrock:Retrieve 权限的任何人使用。这也可以包括任何具有受控数据来源权限的数据。有关更多信息,请参阅知识库权限

Console
将 Amazon S3 存储桶连接到知识库
  1. 按照在 Amazon Bedrock 知识库中通过连接到数据来源创建知识库中的步骤操作,然后选择 Amazon S3 作为数据来源。

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

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

  4. (可选)如果 Amazon S3 存储桶是使用 KMS 密钥加密的,请添加该密钥。有关更多信息,请参阅 对 Amazon S3 中数据来源的 AWS KMS 密钥进行解密的权限

  5. (可选)在内容解析和分块部分,您可以自定义如何对数据进行解析和分块。要了解有关这些定制设置的更多信息,请参阅以下资源:

  6. 高级设置部分,您可以选择进行以下配置:

    • 用于临时数据存储的 KMS 密钥。– 在将数据转换为嵌入时,您可以使用默认 AWS 托管式密钥或您自己的 KMS 密钥加密临时数据。有关更多信息,请参阅 加密数据提取期间的临时数据存储

    • 数据删除策略:您可以删除数据来源的向量嵌入(这些向量嵌入默认存储在向量存储中),也可以选择保留向量存储数据。

  7. 继续选择嵌入模型和向量存储。要查看剩余步骤,请在连接数据来源后返回在 Amazon Bedrock 知识库中通过连接到数据来源创建知识库,然后继续执行该步骤。

API

以下是 Amazon Bedrock 知识库连接到 Amazon S3 的配置示例。您可以使用 AWS CLI 或支持的 SDK(例如 Python)通过 API 来配置数据来源。调用 CreateKnowledgebase 后,您可以调用 CreateDataSource 来使用 dataSourceConfiguration 中的连接信息创建数据来源。

要了解可以通过添加可选的 vectorIngestionConfiguration 字段来应用于摄取的定制设置,请参阅自定义数据来源的摄取

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" }