翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
データソースにメタデータを含めてナレッジベースのクエリを改善する
CSV (カンマ区切り値) ファイルを取り込む場合、ナレッジベースで特定の列をコンテンツフィールドとメタデータフィールドとして扱うことができます。コンテンツ/メタデータファイルのペアは数百または数千にのぼる場合がありますが、その代わりに、単一の CSV ファイルと対応する metadata.json ファイルを用意し、CSV 内の各列をナレッジベースでどのように扱うべきかヒントを提供できるようになりました。
チャンクあたりのドキュメントメタデータフィールド/属性には制限があります。「Quotas for knowledge bases」を参照してください。
CSV ファイルを取り込む前に、次の点を確認してください。
-
CSV が RFC4180 形式であり、UTF-8 でエンコードされている。
-
CSV の最初の行に、ヘッダー情報が含まれている。
-
metadata.json に指定されているメタデータフィールドが、CSV に列として存在している。
-
次の形式の fileName.csv.metadata.json ファイルを用意する。
{ "metadataAttributes": { "${attribute1}": "${value1}", "${attribute2}": "${value2}", ... }, "documentStructureConfiguration": { "type": "RECORD_BASED_STRUCTURE_METADATA", "recordBasedStructureMetadata": { "contentFields": [ { "fieldName": "string" } ], "metadataFieldsSpecification": { "fieldsToInclude": [ { "fieldName": "string" } ], "fieldsToExclude": [ { "fieldName": "string" } ] } } } }
CSV ファイルは一度に 1 行ずつ解析され、チャンキング戦略とベクトル埋め込みがコンテンツフィールドに適用されます。Amazon Bedrock ナレッジベースは、現時点では 1 つのコンテンツフィールドに対応しています。コンテンツフィールドはチャンクに分割され、各チャンクに関連付けられているメタデータフィールド (列) は、文字列値として扱われます。
例えば、CSV に「Description (説明)」という列と「Creation_Date (作成日)」という列があるとしましょう。説明フィールドがコンテンツフィールドで、作成日が関連するメタデータフィールドです。説明のテキストはチャンクに分割され、CSV の行ごとのベクトル埋め込みに変換されます。作成日の値は日付の文字列表現として扱われ、説明の各チャンクに関連付けられます。
包含/除外フィールドが指定されていない場合、コンテンツ列を除くすべての列がメタデータ列として扱われます。包含フィールドのみが指定されている場合は、指定されたその列のみがメタデータとして扱われます。除外フィールドのみが指定されている場合は、除外列を除くすべての列がメタデータとして扱われます。fieldsToInclude と fieldsToExclude の両方で同じ fieldName を指定した場合、Amazon Bedrock は検証例外をスローします。包含と除外の間で競合が発生した場合は、エラーになります。
CSV 内で空白の行が見つかった場合は無視またはスキップされます。
例: メタデータを含む複数行 CSV
次の例は、完全な CSV ファイルとそれに対応するメタデータ JSON ファイルを示しています。
CSV ファイルの例 (properties.csv)
description,city,price,bedrooms "Spacious 3-bedroom home with updated kitchen and large backyard.",Seattle,450000,3 "Modern downtown condo with floor-to-ceiling windows and city views.",Portland,325000,2 "Charming craftsman bungalow with original hardwood floors.",Austin,275000,2
対応するメタデータファイル (properties.csv.metadata.json)
{ "metadataAttributes": { "source": "property_listings_2024" }, "documentStructureConfiguration": { "type": "RECORD_BASED_STRUCTURE_METADATA", "recordBasedStructureMetadata": { "contentFields": [ { "fieldName": "description" } ], "metadataFieldsSpecification": { "fieldsToInclude": [ { "fieldName": "city" }, { "fieldName": "price" } ] } } } }
この例では、以下のようになっています:
-
contentFields– チャンク化して埋め込むコンテンツとして 1 つの列 (description) を指定します。1 つのコンテンツフィールドのみがサポートされています。 -
fieldsToInclude– フィルタリング可能なメタデータとして扱う列 (cityおよびprice) を指定します。bedrooms列はリストされていないため、除外されます。 -
metadataAttributes– この CSV のすべてのチャンクに適用されるドキュメントレベルのメタデータを指定します。この例では、sourceはすべての行に適用される静的属性です。
各行は 1 つのチャンクを生成します。最初の行では、チャンクテキストは説明で、メタデータは city: "Seattle"、price: "450000"、および ですsource: "property_listings_2024"。CSV 列のすべてのメタデータ値は文字列として保存されます。
サポートされているメタデータデータ型
メタデータ属性では、次のデータ型がサポートされています。
-
STRING– テキスト値。 -
NUMBER– 数値。このページで説明されている CSV ベースのメタデータ設定を使用する場合、数値は文字列として保存されます。 -
BOOLEAN– true または false の値。 -
STRING_LIST– 文字列値のリスト。
クエリのフィルタリングに使用される完全なメタデータ属性スキーマについては、 API リファレンスのMetadataAttributeSchema」を参照してください。
関連するメタデータ設定オプション
このページで説明されている CSV ベースのメタデータ設定に加えて、Amazon S3 データソース内の任意のドキュメントタイプのサイドカー.metadata.jsonファイルを使用してメタデータを設定することもできます。このメソッドは、すべてのデータ型と includeForEmbeddingオプションをサポートします。詳細については、「ドキュメントメタデータフィールド」を参照してください。
メタデータを使用してクエリ結果をフィルタリングする方法については、「」の「ナレッジベースのプロンプトテンプレート」セクションを参照してくださいクエリとレスポンスの生成を設定してカスタマイズする。