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

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

将知识库连接到 Amazon S3

Amazon S3 是一种对象存储服务,可将数据以对象形式存储在存储桶中。您可以使用适用于亚马逊 Bedrock 的AWS管理控制台或 CreateDataSourceAPI(参见支持 SDKs 的 Amazon Bedrock 和),连接到您的 Amazon S3 存储桶,以获取您的亚马逊 Bedrock 知识库。AWS CLI

多模式内容支持

Amazon S3 数据源支持多模式内容,包括图像、音频和视频文件。有关使用多式联运内容的全面指导,请参阅为多模式内容建立知识库

您可以使用 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) role/permissions 策略中包括连接数据源的必要权限。有关将此数据源添加到知识库IAM角色所需的权限的信息,请参阅访问数据源的权限

注意

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

连接配置

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

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

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

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

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

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

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

重要

您从数据来源同步的所有数据都可供有检索数据的 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或支持的软件开发工具包(例如 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" }