ナレッジベースに対応する Amazon S3 に接続する - Amazon Bedrock

ナレッジベースに対応する Amazon S3 に接続する

Amazon S3 は、データをオブジェクトとしてバケットに保存するオブジェクトストレージサービスです。Amazon Bedrock の AWS マネジメントコンソールまたは CreateDataSource API を使用して、Amazon Bedrock ナレッジベースの Amazon S3 バケットに接続できます (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 を書き留めます。URI と ARN は、Amazon S3 コンソールのプロパティセクションにあります。バケットは 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 アクセス許可を持つすべてのユーザーが利用できるようになります。これには、データソースのアクセス許可が制御されているデータを含めることもできます。詳細については、「Knowledge base permissions」を参照してください。

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 などのサポートされている SDK で 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" }