3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon Bedrock Knowledge Bases の Metadata 活用に関する注意点

Last updated at Posted at 2025-02-19

はじめに

Amazon Bedrock の Knowledge Bases(以下、Bedrock KB)は、検索精度を向上させるためにメタデータ(Metadata)を活用できます。しかし、公式ドキュメントには明記されていない 制約や注意点 があり、試してみると予想外のエラーに遭遇することがあります。

本記事では、実際に検証した Bedrock KB のメタデータ関連の制約や、検索時にメタデータを適切に活用する方法について解説します。

1. メタデータの定義と制約

Bedrock KB では、ソースデータと同じ名前の .metadata.json を作成し、メタデータを追加できます。例えば、公式ブログ記事では以下のように記述されています。

各ゲームのメタデータには、.metadata.json というサフィックス (例: s3://$bucket_name/video_game/$game_id.csv.metadata.json) が付き、以下のスキーマを持っています。

{
  "metadataAttributes": {
    "id": number,
    "genres": string,
    "year": number,
    "publisher": string,
    "score": number
  }
}

公式記事

しかし、実際に試すと id は使用できない ことが判明しました。

許可されていないメタデータキー

id を含む .metadata.json をアップロードすると、次のエラーが発生します。

Encountered error: Ignored x files due to invalid metadata attribute key. Check that the attribute keys does not contains any unavailable key name. Then retry your request.

このように、公式記事のサンプルとは異なり、id というキーを使用するとエラーになります。代わりに、documentID などのフィールド名を活用する必要があります。

メタデータのサイズ制限とデータ型

公式ドキュメントでは明確に記載されていませんが、実際の動作検証や Repost AWS での調査により、次のような制約がある可能性があります。

  • メタデータ JSON のサイズは 10KB 未満にする必要がある
  • 許可されるデータ型は以下の 4 種類のみ
    • boolean(真偽値)
    • string(文字列)
    • double(浮動小数点数)
    • integer(整数)
    • null 値は許可されない

2. メタデータを検索時に活用するには?

デフォルトではメタデータは検索に影響しない

Bedrock KB にメタデータを追加しても、デフォルトではメタデータを考慮せずに検索が行われる ため、意図した結果を取得できないことがあります。

例えば、以下のように subCategory = "機能について" というメタデータを付与していても、検索時にこの条件を適用しなければ結果には反映されません。

{
  "metadataAttributes": {
    "subCategory": "機能について"
  }
}

実際に、subCategory = "機能について" で検索した際に取得されたチャンクは その他のお知らせ に関連するものであり、意図した 機能について のデータではありませんでした。これは、検索時にメタデータが自動的に考慮されないことを示しています。

matadata_test.png

そのため、検索時にメタデータを活用するためには、明示的にフィルタを設定する必要があります

メタデータを検索に適用する方法

AWS SDK を使用する場合

import boto3

bedrock = boto3.client("bedrock")

response = bedrock.retrieve_and_generate(
    knowledgeBaseId="your-knowledge-base-id",
    retrievalConfiguration={
        "retrievalFilter": {
            "subCategory": "機能について"
        }
    },
    query="ECの秘密を教えて"
)

print(response)

このように retrievalFiltersubCategory を指定 することで、指定したメタデータを持つコンテンツのみを検索対象にできます。

まとめ

Amazon Bedrock Knowledge Bases のメタデータには 公式に明記されていない制約が存在 するため、適切に活用するには注意が必要です。

  • metadataAttributes の中で id は許可されていない
  • メタデータ JSON のサイズは 10KB 未満にする必要がある
  • booleanstringdoubleinteger のみが許可されるデータ型
  • デフォルトではメタデータフィルタリングは適用されない
  • 検索フィルタを設定しない場合、条件を原文に含めるのが有効
  • 検索時に retrievalFilter を設定することでメタデータを活用可能

Bedrock KB を活用する際は、これらのポイントを意識して設定を行いましょう!

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?