翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
マネージドナレッジベースのクエリを設定およびカスタマイズする
取得を設定およびカスタマイズして、結果の関連性をさらに向上させることができます。例えば、ドキュメントのメタデータフィールド/属性にフィルターを適用して、最近更新されたドキュメント (最終更新日が新しいドキュメント) を利用できます。
注記
以下の設定はすべて、非構造化データソースにのみ適用されます。
コンソールまたは API でのこれらの設定の詳細については、以下の該当するトピックを選択してください。
ナレッジベースをクエリすると、Amazon Bedrock はデフォルトで最大 5 件の結果を返します。各結果はソースのチャンクに対応しています。
注記
このパラメータにより、返す結果の最大数が設定されるため、レスポンスの結果の実際の数は指定された numberOfResults 値よりも少なくなる可能性があります。チャンキング戦略に階層チャンキングを設定している場合、numberOfResults パラメータはナレッジベースが取得する子チャンクの数にマッピングされます。同じ親チャンクを共有する子チャンクは、最終レスポンスで親チャンクに置き換えられるため、返される結果の数がリクエストされた量より少なくなる可能性があります。
返される結果の最大数を変更するには、使用する手段のタブを選択し、手順に従ってください。
ドキュメントのフィールド/属性にフィルターを適用して、レスポンスの関連性をさらに高めることができます。データソースには、フィルタリングするドキュメントメタデータ属性/フィールドを含めることができ、埋め込みに含めるフィールドを指定できます。
マネージドナレッジベースの考慮事項
マネージドナレッジベースでメタデータフィルタリングを使用する場合:
-
startsWithおよびstringContainsメタデータフィルターはサポートされていません。代わりに、equals、greaterThan、lessThan、in、またはnotIn演算子を使用します。 -
範囲演算子 (
greaterThan、greaterThanOrEquals、lessThan、およびlessThanOrEquals) は、数値または日時値のいずれかを受け入れます。日時をフィルタリングするには、値を ISO-8601 オフセット日時形式の文字列として指定します。完全なオフセット形式を使用します。例:2026-03-02T19:02:18Z。範囲演算子は、マネージドナレッジベースでのみ日時文字列値をサポートします。 -
カスタムナレッジベースの場合、プレフィックスが のメタデータフィールド
x-amz-bedrockは サービスによって予約されます。フルマネージドナレッジベースの場合、予約済みメタデータフィールドはアンダースコアプレフィックス (、 など_data_source_id)_source_uriを使用します。どちらのナレッジベースタイプでも、予約済みメタデータフィールドを上書きすることはできません。
例えば、「epoch_modification_time」は、ドキュメントが最後に更新された 1970 年 1 月 1 日 (UTC) からの秒数で表されます。「epoch_modification_time」にフィルターを適用して、その値が特定の数より大きい最新のデータだけを取得できます。そうして取得した最新のドキュメントをクエリで使用できます。
ナレッジベースのクエリ時にフィルターを使用するには、ナレッジベースが次の要件を満たしていることを確認してください。
-
データソースコネクタを設定する場合、ほとんどのコネクタはドキュメントの主要なメタデータフィールドをクローリングします。Amazon S3 バケットをデータソースとして使用する場合は、バケットに関連付けられているファイルまたはドキュメントの
fileName.extension.metadata.jsonが少なくとも 1 つ含まれている必要があります。メタデータファイルの設定の詳細については、「接続設定」の「ドキュメントメタデータフィールド」を参照してください。 -
ナレッジベースのベクトルインデックスが Amazon OpenSearch Serverless ベクトルストアにある場合は、ベクトルインデックスが
faissエンジンで設定されていることを確認してください。ベクトルインデックスがnmslibエンジンで設定されている場合は、次のいずれかを行う必要があります。-
コンソールで新しいナレッジベースを作成し、Amazon Bedrock が Amazon OpenSearch Serverless でベクトルインデックスを自動作成できるようにします。
-
ベクトルストアに別のベクトルインデックスを作成し、[エンジン] として
faissを選択します。次に、新しいナレッジベースを作成し、新しいベクトルインデックスを指定します。
-
-
ナレッジベースにより、S3 ベクトルバケットでベクトルインデックスが使用されている場合、
startsWithおよびstringContainsフィルターを使用することはできません。 -
Amazon Aurora データベースクラスター内の既存のベクトルインデックスにメタデータを追加する場合は、カスタムメタデータ列のフィールド名を指定して、すべてのメタデータを 1 つの列に保存することをお勧めします。データインジェスト中、この列はデータソースからメタデータファイル内のすべての情報を入力するために使用されます。このフィールドを指定することにした場合は、この列にインデックスを作成する必要があります。
-
コンソールで新しいナレッジベースを作成し、Amazon Bedrock を使用して Amazon Aurora データベースを設定すると、自動的に 1 つの列が作成され、メタデータファイルからの情報が入力されます。
-
ベクトルストアに別のベクトルインデックスを作成することを選択した場合、メタデータファイルからの情報を保存するカスタムメタデータフィールド名を指定する必要があります。このフィールド名を指定しない場合は、ファイル内のメタデータ属性ごとに列を作成し、データ型 (テキスト、数値、またはブール値) を指定する必要があります。例えば、属性
genreがデータソースに存在する場合は、genreという名前の列を追加し、textをデータ型として指定します。インジェスト中、これらの別個の列には対応する属性値が入力されます。
-
データソースに PDF ドキュメントがあり、ベクトルストアに Amazon OpenSearch Serverless または Amazon Aurora を使用している場合: Amazon Bedrock ナレッジベースはドキュメントページ番号を生成し、x-amz-bedrock-kb-document-page-number と呼ばれるメタデータフィールド/属性に保存します。ドキュメントのチャンキングを選択しない場合、メタデータフィールドに保存されているページ番号はサポートされない点に注意してください。
クエリ時に結果をフィルタリングするには、次のフィルタリング演算子を使用できます。
| オペレーター | コンソール | API フィルター名 | サポートされている属性データ型 | フィルタリング結果 |
|---|---|---|---|---|
| Equals (等しい) | = | equals | 文字列、数値、ブール値 | 属性が指定した値と一致する |
| Not equals (等しくない) | != | notEquals | 文字列、数値、ブール値 | 属性が指定した値と一致しない |
| Greater than (より大きい) | > | greaterThan | 数値 | 属性が指定した値より大きい |
| Greater than or equals (以上) | >= | greaterThanOrEquals | 数値 | 属性が指定した値以上 |
| Less than (より小さい) | < | lessThan | 数値 | 属性が指定した値より小さい |
| Less than or equals (以下) | <= | lessThanOrEquals | 数値 | 属性が指定した値以下 |
| In (中にある) | : | in | 文字列リスト | 属性が指定したリスト内にある (現時点では、Amazon OpenSearch Serverless および Neptune Analytics GraphRAG ベクトルストアで最適にサポートされています) |
| Not in (中にない) | !: | notIn | 文字列リスト | 属性が指定したリスト内にない (現時点では、Amazon OpenSearch Serverless および Neptune Analytics GraphRAG ベクトルストアで最適にサポートされています) |
| を含む文字列 | 利用不可 | stringContains | string | 属性は文字列にする必要があります。属性名はキーと一致しており、その値は、部分文字列として指定した値を含む文字列、または部分文字列として指定した値を含むメンバーを含むリストです (現時点では、Amazon OpenSearch Serverless ベクトルストアで最適にサポートされています。Neptune Analytics GraphRAG ベクトルストアでは文字列バリアントがサポートされますが、このフィルターのリストバリアントはサポートされません)。 |
| を含むリスト | 利用不可 | listContains | string | 属性は文字列リストにする必要があります。属性名はキーと一致しており、その値はメンバーの 1 つとして指定した値を含むリストです (現時点では、Amazon OpenSearch Serverless ベクトルストアで最適にサポートされています)。 |
フィルタリング演算子を組み合わせる場合は、次の論理演算子を使用できます。
メタデータを使用して結果をフィルタリングする方法については、使用する手段のタブを選択し、手順に従ってください。
ユースケースと責任ある AI ポリシーに応じて、ナレッジベースに保護対策を実装できます。さまざまなユースケースに合わせた複数のガードレールを作成し、複数のリクエストやレスポンスの条件に適用することで、一貫したユーザーエクスペリエンスを提供し、ナレッジベース全体で安全性の統制を標準化できます。望ましくないトピックを禁じる拒否トピックや、モデルの入力とレスポンスで有害なコンテンツをブロックするコンテンツフィルターを設定できます。詳細については、「Amazon Bedrock ガードレールを使用して有害なコンテンツを検出してフィルタリングする」を参照してください。
注記
現時点では、Claude 3 Sonnet と Haiku では、ナレッジベースのコンテキストグラウンディングでガードレールを使用することはできません。
一般的なプロンプトエンジニアリングのガイドラインについては、「プロンプトエンジニアリングの概念」を参照してください。
任意の方法のタブを選択し、その手順に従います。
リランカーモデルを使用して、ナレッジベースクエリの結果を再ランク付けできます。「ナレッジベースのクエリを実行してデータを取得する」のコンソールの手順に従ってください。[設定] ペインを開いたら、[再ランキング] セクションを展開します。リランカーモデルを選択し、必要に応じてアクセス許可を更新して、追加のオプションを変更します。プロンプトを入力し、[実行] を選択して、再ランク付け後に結果をテストします。