翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
クエリとレスポンスの生成を設定してカスタマイズする
情報取得とレスポンス生成の設定をカスタマイズすることで、レスポンスの関連性を高めることができます。例えば、ドキュメントのメタデータフィールド/属性にフィルターを適用して、最近更新されたドキュメント (最終更新日が新しいドキュメント) を利用できます。
注記
オーケストレーションと生成を除く以下の設定はすべて、非構造化データソースにのみ適用されます。
コンソールまたは API でのこれらの設定の詳細については、以下の該当するトピックを選択してください。
ナレッジベースをクエリすると、Amazon Bedrock はデフォルトで最大 5 件の結果を返します。各結果はソースのチャンクに対応しています。
注記
このパラメータにより、返す結果の最大数が設定されるため、レスポンスの結果の実際の数は指定された numberOfResults 値よりも少なくなる可能性があります。チャンキング戦略に階層チャンキングを設定している場合、numberOfResults パラメータはナレッジベースが取得する子チャンクの数にマッピングされます。同じ親チャンクを共有する子チャンクは、最終レスポンスで親チャンクに置き換えられるため、返される結果の数がリクエストされた量より少なくなる可能性があります。
返される結果の最大数を変更するには、使用する手段のタブを選択し、手順に従ってください。
検索タイプは、ナレッジベースでデータソースをどのようにクエリするかを定義します。次の検索タイプを指定できます。
注記
ハイブリッド検索は、フィルタリング可能なテキストフィールドを含んでいる、Amazon RDS、Amazon OpenSearch Serverless、および MongoDB ベクトルストアでのみサポートされています。別のベクトルストアを使用する場合や、ベクトルストアにフィルタリング可能なテキストフィールドが含まれていない場合は、セマンティック検索が使用されます。
-
デフォルト – Amazon Bedrock が検索戦略を自動判定します。
-
ハイブリッド – ベクトル埋め込みの検索 (セマンティック検索) と未加工テキストの検索を組み合わせます。
-
セマンティック – ベクトル埋め込みのみを検索します。
検索タイプの定義方法については、使用する手段のタブを選択し、手順に従ってください。
ドキュメントのフィールド/属性にフィルターを適用して、レスポンスの関連性をさらに高めることができます。データソースには、フィルタリングするドキュメントメタデータ属性/フィールドを含めることができ、埋め込みに含めるフィールドを指定できます。
マネージドナレッジベースの考慮事項
マネージドナレッジベースでメタデータフィルタリングを使用する場合:
-
startsWithおよびstringContainsメタデータフィルターはサポートされていません。代わりに、equals、greaterThan、lessThan、in、またはnotIn演算子を使用します。 -
カスタムナレッジベースの場合、プレフィックスが のメタデータフィールド
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 ベクトルストアで最適にサポートされています)。 |
フィルタリング演算子を組み合わせる場合は、次の論理演算子を使用できます。
メタデータを使用して結果をフィルタリングする方法については、使用する手段のタブを選択し、手順に従ってください。
Amazon Bedrock ナレッジベースでは、ユーザークエリとメタデータスキーマに基づいて取得フィルターが生成および適用されます。
注記
暗黙的なメタデータフィルタリングはAnthropicClaudeモデルでサポートされています。サポートされているモデルの詳細については、「モデルの概要」を参照してください。
implicitFilterConfiguration は、Retrieve リクエスト本文の vectorSearchConfiguration で指定されます。次のフィールドを含めます。
-
metadataAttributes– この配列では、モデルによってフィルターが生成されるメタデータ属性を記述するスキーマを指定します。 -
modelArn– 使用するモデルの ARN。
metadataAttributes の配列に追加できるメタデータスキーマの例を次に示します。
[ { "key": "company", "type": "STRING", "description": "The full name of the company. E.g. `Amazon.com, Inc.`, `Alphabet Inc.`, etc" }, { "key": "ticker", "type": "STRING", "description": "The ticker name of a company in the stock market, e.g. AMZN, AAPL" }, { "key": "pe_ratio", "type": "NUMBER", "description": "The price to earning ratio of the company. This is a measure of valuation of a company. The lower the pe ratio, the company stock is considered chearper." }, { "key": "is_us_company", "type": "BOOLEAN", "description": "Indicates whether the company is a US company." }, { "key": "tags", "type": "STRING_LIST", "description": "Tags of the company, indicating its main business. E.g. `E-commerce`, `Search engine`, `Artificial intelligence`, `Cloud computing`, etc" } ]
ユースケースと責任ある AI ポリシーに応じて、ナレッジベースに保護対策を実装できます。さまざまなユースケースに合わせた複数のガードレールを作成し、複数のリクエストやレスポンスの条件に適用することで、一貫したユーザーエクスペリエンスを提供し、ナレッジベース全体で安全性の統制を標準化できます。望ましくないトピックを禁じる拒否トピックや、モデルの入力とレスポンスで有害なコンテンツをブロックするコンテンツフィルターを設定できます。詳細については、「Amazon Bedrock ガードレールを使用して有害なコンテンツを検出してフィルタリングする」を参照してください。
注記
現時点では、Claude 3 Sonnet と Haiku では、ナレッジベースのコンテキストグラウンディングでガードレールを使用することはできません。
一般的なプロンプトエンジニアリングのガイドラインについては、「プロンプトエンジニアリングの概念」を参照してください。
任意の方法のタブを選択し、その手順に従います。
リランカーモデルを使用して、ナレッジベースクエリの結果を再ランク付けできます。「ナレッジベースのクエリを実行してデータを取得する」または「ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する」のコンソールの手順に従ってください。[設定] ペインを開いたら、[再ランキング] セクションを展開します。リランカーモデルを選択し、必要に応じてアクセス許可を更新して、追加のオプションを変更します。プロンプトを入力し、[実行] を選択して、再ランク付け後に結果をテストします。
クエリ分解とは、複雑なクエリを管理しやすい細かいサブクエリに分解する手法です。このアプローチは、特に最初のクエリが多面的であるか、範囲が広すぎる場合に、より正確で関連性の高い情報を取得するのに役立ちます。このオプションを有効にすると、ナレッジベースに対して複数のクエリが実行され、最終レスポンスの精度が高まる可能性があります。
たとえば、「Who scored higher in the 2022 FIFA World Cup, Argentina or France?」のような質問の場合、Amazon Bedrock ナレッジベースは、最終的な回答を生成する前に、まず次のサブクエリを生成することがあります。
-
2022 FIFA ワールドカップ決勝のアルゼンチンのゴール数
-
2022 FIFA ワールドカップ決勝のフランスのゴール数
情報の取得に基づいてレスポンスを生成する場合、推論パラメータを使用して、推論中のモデルの動作をより細かく制御し、モデルの出力に影響を与えることができます。
推論パラメータの変更方法については、使用する手段のタブを選択し、手順に従ってください。
ナレッジベースをクエリし、レスポンスの生成をリクエストすると、Amazon Bedrock は、指示とコンテキストをユーザーのクエリと組み合わせるプロンプトテンプレートを使用して、レスポンスの生成のためにモデルに送信される生成プロンプトを作成します。オーケストレーションプロンプトをカスタマイズすると、ユーザーのプロンプトが検索クエリに変わります。プロンプトテンプレートは、次のツールを使用して設計できます。
-
プロンプトプレースホルダー – Amazon Bedrock ナレッジベースの事前定義された変数。実行時のナレッジベースのクエリ中に、動的に値が入力されます。システムプロンプトでは、これらのプレースホルダーは
$記号で囲まれています。次のリストでは、使用できるプレースホルダーを説明しています。注記
$output_format_instructions$プレースホルダーは、レスポンスに表示される引用の必須フィールドです。変数 プロンプトテンプレート 置換後の値 モデル 必須? $query$ オーケストレーション、生成 ナレッジベースに送信されたユーザークエリ。 Anthropic Claude Instant、Anthropic Claude v2.x はい Anthropic Claude 3 Sonnet いいえ (モデル入力に自動的に含まれます) $search_results$ [Generation] (生成) ユーザークエリで取得された結果。 すべて はい $output_format_instructions$ オーケストレーション レスポンスの生成と引用のフォーマットに関する基本的な指示。モデルによって異なります。独自のフォーマット指示を定義する場合は、このプレースホルダーを削除することをお勧めします。このプレースホルダーがない場合、レスポンスには引用が含まれません。 すべて はい $current_time$ オーケストレーション、生成 現在の時刻。 すべて いいえ -
XML タグ – Anthropic モデルでは、プロンプトを構造化および記述するための XML タグの使用がサポートされています。最適な結果が得るためには、わかりやすいタグ名を使用します。例えば、デフォルトのシステムプロンプトには
<database>タグがありますが、これは、以前に尋ねられた質問のデータベースを記述するために使用します。詳細については、「Anthropic ユーザーガイド」の「XML タグを使用する 」を参照してください。
一般的なプロンプトエンジニアリングのガイドラインについては、「プロンプトエンジニアリングの概念」を参照してください。
注記
カスタムプロンプトテンプレートを指定しない場合、Amazon Bedrock は、一般的なサンプルコンテンツ (無関係なトピックに関するサンプルの質問や回答など) を含むデフォルトのシステムプロンプトを使用して、モデルのレスポンスフォーマットをガイドします。このデフォルトのプロンプトは、モデル呼び出しログに表示されます。デフォルトプロンプトのコンテンツの例は、他のお客様のデータからのものではありません。Amazon Bedrock が提供する静的テンプレートです。独自の を指定することで、デフォルトのプロンプトを上書きできますtextPromptTemplate。
任意の方法のタブを選択し、その手順に従います。