クエリ設定 - Amazon Bedrock

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

クエリ設定

ナレッジベースをクエリするときに設定を変更して、取得とレスポンスの生成をカスタマイズできます。設定の詳細と、コンソールまたは API で設定を変更する方法については、次のトピックから選択します。

検索タイプは、ナレッジベースのデータソースのクエリ方法を定義します。次の検索タイプを使用できます。

  • デフォルト — Amazon Bedrock が検索戦略を決定します。

  • Hybrid – 検索ベクトルの埋め込み (セマンティック検索) と raw テキストの検索を組み合わせます。現在、ハイブリッド検索は、フィルタリング可能なテキストフィールドを含む Amazon OpenSearch Serverless ベクトルストアでのみサポートされています。別のベクトルストアを使用するか、Amazon OpenSearch Serverless ベクトルストアにフィルタリング可能なテキストフィールドが含まれていない場合、クエリはセマンティック検索を使用します。

  • セマンティック – ベクトル埋め込みのみを検索します。

検索タイプを定義する方法については、選択した方法に対応するタブを選択し、ステップに従います。

Console

「」のコンソールのステップに従いますナレッジベースをクエリして結果を返すか、レスポンスを生成する設定ペインを開くと、検索タイプ の次のオプションが表示されます。

  • デフォルト — Amazon Bedrock は、ベクトルストア設定に最適な検索戦略を決定します。

  • Hybrid – Amazon Bedrock は、ベクトル埋め込みと raw テキストの両方を使用してナレッジベースにクエリを実行します。このオプションは、フィルター可能なテキストフィールドで設定された Amazon OpenSearch Serverless ベクトルストアを使用している場合にのみ使用できます。

  • セマンティック – Amazon Bedrock は、ベクトル埋め込みを使用してナレッジベースにクエリを実行します。

API

Retrieve または RetrieveAndGenerateリクエストを行うときは、 KnowledgeBaseRetrievalConfiguration オブジェクトにマッピングされた retrievalConfiguration フィールドを含めます。このフィールドの場所を確認するには、 API リファレンスの Retrieveおよび RetrieveAndGenerateリクエスト本文を参照してください。

次の JSON オブジェクトは、KnowledgeBaseRetrievalConfigurationオブジェクトで検索タイプ設定を設定するために必要な最小限のフィールドを示しています。

"retrievalConfiguration": { "vectorSearchConfiguration": { "overrideSearchType": "HYBRID | SEMANTIC" } }

overrideSearchType フィールドに検索タイプを指定します。次のオプションがあります。

  • 値を指定しない場合、Amazon Bedrock はベクトルストア設定に最適な検索戦略を決定します。

  • HYBRID – Amazon Bedrock は、ベクトル埋め込みと raw テキストの両方を使用してナレッジベースにクエリを実行します。このオプションは、フィルター可能なテキストフィールドで設定された Amazon OpenSearch Serverless ベクトルストアを使用している場合にのみ使用できます。

  • SEMANTIC – Amazon Bedrock は、ベクトル埋め込みを使用してナレッジベースにクエリを実行します。

情報の取得に基づいてレスポンスを生成する場合、推論パラメータを使用して、推論中のモデルの動作をより詳細に制御し、モデルの出力に影響を与えることができます。推論パラメータを変更する方法については、選択した方法に対応するタブを選択し、ステップに従います。

Console

ナレッジベースをクエリするときに推論パラメータを変更するには – のコンソールステップに従いますナレッジベースをクエリして結果を返すか、レスポンスを生成する設定ペインを開くと、推論パラメータセクションが表示されます。必要に応じてパラメータを変更します。

ドキュメントとチャットするときに推論パラメータを変更するには – 「」のステップに従いますナレッジベースを使用してドキュメントデータとチャットする設定ペインで、推論パラメータセクションを展開し、必要に応じてパラメータを変更します。

API

RetrieveAndGenerate API の呼び出しでモデルパラメータを指定します。(ナレッジベースをクエリする場合) または knowledgeBaseConfiguration (ドキュメントとチャットexternalSourcesConfigurationする場合) の inferenceConfig フィールドに推論パラメータを指定することで、モデルをカスタマイズできます。

inferenceConfig フィールド内には、次のパラメータを含むtextInferenceConfigフィールドがあり、これを実行できます。

  • temperature

  • topP

  • maxTokenCount

  • stopSequences

モデルをカスタマイズするには、 externalSourcesConfigurationと の両方の inferenceConfig フィールドで次のパラメータを使用しますknowledgeBaseConfiguration

  • temperature

  • topP

  • maxTokenCount

  • stopSequences

これらの各パラメータの関数の詳細な説明については、「」を参照してください推論パラメータ

さらに、additionalModelRequestFieldsマップtextInferenceConfigを介して でサポートされていないカスタムパラメータを指定することもできます。この引数を使用して、特定のモデルに固有のパラメータを指定できます。一意のパラメータについては、「」を参照してください基盤モデルの推論パラメータ

パラメータを から省略するとtextInferenceConfig、デフォルト値が使用されます。で認識されないパラメータtextInferneceConfigは無視され、 で認識されないパラメータは例外の原因AdditionalModelRequestFieldsになります。

additionalModelRequestFields と の両方に同じパラメータがある場合、検証例外がスローされますTextInferenceConfig

でのモデルパラメータの使用 RetrieveAndGenerate

以下は、generationConfigurationRetrieveAndGenerateリクエスト本文の inferenceConfigおよび additionalModelRequestFieldsの 構造の例です。

"inferenceConfig": { "textInferenceConfig": { "temperature": 0.5, "topP": 0.5, "maxTokens": 2048, "stopSequences": ["\nObservation"] } }, "additionalModelRequestFields": { "top_k": 50 }

前述の例では、 temperatureを 0.5、 top_pを 0.5、 maxTokensを 2048 に設定し、生成されたレスポンスで文字列「\nObservation」に遭遇すると生成を停止し、カスタムtop_k値 50 を渡します。

ナレッジベースをクエリすると、Amazon Bedrock はデフォルトでレスポンスに最大 5 つの結果を返します。各結果はソースチャンクに対応します。返される結果の最大数を変更するには、選択した方法に対応するタブを選択し、ステップに従います。

Console

「」のコンソールのステップに従いますナレッジベースをクエリして結果を返すか、レスポンスを生成する設定ペインで取得された結果の最大数 を展開します。

API

Retrieve または RetrieveAndGenerateリクエストを行うときは、 KnowledgeBaseRetrievalConfiguration オブジェクトにマッピングされた retrievalConfiguration フィールドを含めます。このフィールドの場所を確認するには、 API リファレンスの Retrieveおよび RetrieveAndGenerateリクエスト本文を参照してください。

次の JSON オブジェクトは、返される結果の最大数を設定するために必要なKnowledgeBaseRetrievalConfiguration最小限のフィールドを示しています。

"retrievalConfiguration": { "vectorSearchConfiguration": { "numberOfResults": number } }

numberOfResults フィールドで返す取得結果の最大数を指定します (許容される値の範囲KnowledgeBaseRetrievalConfigurationについては、「」のnumberOfResults「」フィールドを参照)。

データソースには、ソースドキュメントに関連付けられたメタデータファイルを含めることができます。メタデータファイルには、ソースドキュメントに定義するキーと値のペアとして属性が含まれています。データソースファイルのメタデータの作成の詳細については、「」を参照してくださいファイルにメタデータを追加してフィルタリングできるようにします。。ナレッジベースクエリ中にフィルターを使用するには、ナレッジベースが次の要件を満たしていることを確認します。

  • データソースを含む Amazon S3 バケットには、関連付けられているソースドキュメントと同じ名前の.metadata.jsonファイルが少なくとも 1 つ含まれています。

  • ナレッジベースのベクトルインデックスが Amazon OpenSearch Serverless ベクトルストアにある場合は、ベクトルインデックスがfaissエンジンで設定されていることを確認します。ベクトルインデックスがnmslibエンジンで設定されている場合は、次のいずれかを実行する必要があります。

フィルタリングのクエリ設定を変更するときは、次のフィルタリング演算子を使用できます。

演算子のフィルタリング
演算子 コンソール API フィルター名 サポートされている属性データ型 フィルタリングされた結果
等しい = 文字列、数値、ブール値 属性が指定した値と一致する
等しくない != notEquals 文字列、数値、ブール値 属性が指定した値と一致しません
Greater than > greaterThan 数値 属性が指定した値より大きい
以上 >= greaterThanOr等しい 数値 属性が指定した値以上
Less than < lessThan 数値 属性が指定した値より小さい
以下 <= lessThanOr等しい 数値 属性が指定した値以下
: 文字列リスト 属性は、指定したリストにあります
にない !: notIn 文字列リスト 属性が指定したリストにない
で始まる ^ startsWith string 属性は指定した文字列で始まります (Amazon OpenSearch Serverless ベクトルストアでのみサポートされます)

フィルタリング演算子を組み合わせるには、次の論理演算子を使用できます。

論理演算子
演算子 コンソール API フィルターフィールド名 フィルタリングされた結果
And また、 andAll 結果がグループ内のすべてのフィルタリング式を満たす
または または orAll 結果がグループ内のフィルタリング式の少なくとも 1 つを満たす

メタデータを使用して結果をフィルタリングする方法については、選択した方法に対応するタブを選択し、ステップに従います。

Console

「」のコンソールステップに従いますナレッジベースをクエリして結果を返すか、レスポンスを生成する設定ペインを開くと、フィルターセクション が表示されます。次の手順では、さまざまなユースケースについて説明します。

  • フィルターを追加するには、ボックスにメタデータ属性、フィルタリング演算子、値を入力してフィルタリング式を作成します。式の各部分を空白で区切ります。Enter を押してフィルターを追加します。

    許容されるフィルタリング演算子のリストについては、上記のフィルタリング演算子の表を参照してください。メタデータ属性の後に空白を追加するときに、フィルタリング演算子のリストを表示することもできます。

    注記

    文字列は引用符で囲む必要があります。

    例えば、次のフィルター を追加"entertainment"することで、メタデータgenre属性を含むソースドキュメントの結果をフィルタリングできますgenre = "entertainment"

    フィルターを 1 つ追加します。
  • 別のフィルターを追加するには、ボックスに別のフィルター式を入力し、Enter キーを押します。グループには最大 5 つのフィルターを追加できます。

    別のフィルターを追加します。
  • デフォルトでは、クエリは指定したすべてのフィルタリング式を満たす結果を返します。少なくとも 1 つのフィルタリング式を満たす結果を返すには、任意の 2 つのフィルタリングオペレーション間で および ドロップダウンメニューを選択し、 または を選択します。

    フィルター間で論理オペレーションを変更します。
  • 異なる論理演算子を組み合わせるには、+ グループを追加 を選択してフィルターグループを追加します。新しいグループにフィルタリング式を入力します。最大 5 つのフィルターグループを追加できます。

    フィルターグループを追加して、さまざまな論理演算子を結合します。
  • すべてのフィルタリンググループ間で使用される論理演算子を変更するには、任意の 2 つのフィルターグループ間で AND ドロップダウンメニューを選択し、OR を選択します。

    フィルターグループ間で論理オペレーションを変更します。
  • フィルターを編集するには、フィルターを選択してフィルタリングオペレーションを変更し、適用 を選択します。

    フィルターを編集します。
  • フィルターグループを削除するには、グループの横にあるごみ箱アイコン ( ) を選択します。フィルターを削除するには、フィルターの横にある削除アイコン ( ) を選択します。

    フィルターまたはフィルターグループを削除します。

次の図は、ジャンル2018が の後に書き込まれたすべてのドキュメントと"entertainment"、ジャンルが "cooking"または "sports"で作成者が で始まるドキュメントを返すフィルター設定の例を示しています"C"

フィルター設定の例。
API

Retrieve または RetrieveAndGenerateリクエストを行うときは、 KnowledgeBaseRetrievalConfiguration オブジェクトにマッピングされた retrievalConfiguration フィールドを含めます。このフィールドの場所を確認するには、 API リファレンスの Retrieveおよび RetrieveAndGenerateリクエスト本文を参照してください。

次の JSON オブジェクトは、さまざまなユースケースにフィルターを設定するために必要なKnowledgeBaseRetrievalConfiguration最小限のフィールドを示しています。

  1. 1 つのフィルタリング演算子を使用します (上記のフィルタリング演算子の表を参照)。

    "retrievalConfiguration": { "vectorSearchConfiguration": { "filter": { "<filter-type>": { "key": "string", "value": "string" | number | boolean | ["string", "string", ...] } } } }
  2. 論理演算子 (上記の論理演算子の表を参照) を使用して、最大 5 つまで結合します。

    "retrievalConfiguration": { "vectorSearchConfiguration": { "filter": { "andAll | orAll": [ "<filter-type>": { "key": "string", "value": "string" | number | boolean | ["string", "string", ...] }, "<filter-type>": { "key": "string", "value": "string" | number | boolean | ["string", "string", ...] }, ... ] } } }
  3. 論理演算子を使用して最大 5 つのフィルタリング演算子をフィルターグループに結合し、2 番目の論理演算子を使用してそのフィルターグループを別のフィルタリング演算子に結合します。

    "retrievalConfiguration": { "vectorSearchConfiguration": { "filter": { "andAll | orAll": [ "andAll | orAll": [ "<filter-type>": { "key": "string", "value": "string" | number | boolean | ["string", "string", ...] }, "<filter-type>": { "key": "string", "value": "string" | number | boolean | ["string", "string", ...] }, ... ], "<filter-type>": { "key": "string", "value": "string" | number | boolean | ["string", "string", ...] } ] } } }
  4. 別の論理演算子に埋め込むことで、最大 5 つのフィルターグループを組み合わせます。1 レベルの埋め込みを作成できます。

    "retrievalConfiguration": { "vectorSearchConfiguration": { "filter": { "andAll | orAll": [ "andAll | orAll": [ "<filter-type>": { "key": "string", "value": "string" | number | boolean | ["string", "string", ...] }, "<filter-type>": { "key": "string", "value": "string" | number | boolean | ["string", "string", ...] }, ... ], "andAll | orAll": [ "<filter-type>": { "key": "string", "value": "string" | number | boolean | ["string", "string", ...] }, "<filter-type>": { "key": "string", "value": "string" | number | boolean | ["string", "string", ...] }, ... ] ] } } }

次の表に、使用できるフィルタータイプを示します。

フィールド サポートされている値データ型 フィルタリングされた結果
equals 文字列、数値、ブール値 属性が指定した値と一致する
notEquals 文字列、数値、ブール値 属性が指定した値と一致しません
greaterThan 数値 属性が指定した値より大きい
greaterThanOrEquals 数値 属性が指定した値以上
lessThan 数値 属性が指定した値より小さい
lessThanOrEquals 数値 属性が指定した値以下
in 文字列のリスト 属性は、指定したリストにあります
notIn 文字列のリスト 属性が指定したリストにない
startsWith string 属性は指定した文字列で始まります (Amazon OpenSearch Serverless ベクトルストアでのみサポートされます)

フィルタータイプを組み合わせるには、次のいずれかの論理演算子を使用できます。

フィールド へのマッピング フィルタリングされた結果
andAll 最大 5 つのフィルタータイプのリスト 結果がグループ内のすべてのフィルタリング式を満たす
orAll 最大 5 つのフィルタータイプのリスト 結果がグループ内のフィルタリング式の少なくとも 1 つを満たす

例については、「クエリを送信してフィルターを含める (取得)」および「クエリを送信してフィルターを含める (RetrieveAndGenerate)」を参照してください。

ナレッジベースをクエリしてレスポンス生成をリクエストすると、Amazon Bedrock は、指示とコンテキストをユーザークエリと組み合わせたプロンプトテンプレートを使用して、レスポンス生成のためにモデルに送信されるプロンプトを作成します。プロンプトテンプレートは、次のツールを使用して設計できます。

  • プロンプトプレースホルダー – Amazon Bedrock のナレッジベースで事前定義された変数で、ナレッジベースのクエリ中に実行時に動的に入力されます。システムプロンプトには、これらのプレースホルダーが$記号で囲まれています。次のリストでは、使用できるプレースホルダーについて説明します。

    変数 に置き換え モデル 必須?
    $query$ ナレッジベースに送信されたユーザークエリ。 Anthropic Claude Instant、AnthropicClaudev2.x はい
    Anthropic Claude 3 Sonnet いいえ (モデル入力に自動的に含まれます)
    $search_results$ ユーザークエリで取得した結果。 すべて はい
    $output_format_instructions$ レスポンスの生成と引用をフォーマットするための基本的な手順。モデルによって異なります。独自の書式設定手順を定義する場合は、このプレースホルダーを削除することをお勧めします。このプレースホルダーがないと、レスポンスに引用は含まれません。 すべて いいえ
    $current_time$ 現在の時刻。 すべて いいえ
  • XML タグ – Anthropicモデルは、プロンプトの構造化と説明のための XML タグの使用をサポートしています。最適な結果を得るには、わかりやすいタグ名を使用します。例えば、デフォルトのシステムプロンプトには、以前に質問されたデータベースを記述するために使用される<database>タグが表示されます)。詳細については、「 ユーザーガイド」の「XML タグを使用するAnthropic」を参照してください。

プロンプトエンジニアリングの一般的なガイドラインについては、「」を参照してください プロンプトエンジニアリングガイドライン

選択した方法に対応するタブを選択し、ステップに従います。

Console

「」のコンソールステップに従いますナレッジベースをクエリして結果を返すか、レスポンスを生成する。テストウィンドウで、「レスポンスの生成」をオンにします。次に、設定ペインで、ナレッジベースのプロンプトテンプレートセクションを展開します。

  1. [編集] を選択します。

  2. 必要に応じて、プロンプトプレースホルダーや XML タグなど、テキストエディタでシステムプロンプトを編集します。デフォルトのプロンプトテンプレートに戻すには、デフォルト にリセットを選択します

  3. 編集が終了したら、[変更の保存] を選択します。システムプロンプトを保存せずに終了するには、変更の破棄 を選択します。

API

RetrieveAndGenerate リクエストを行うときは、 GenerationConfiguration オブジェクトにマッピングされた generationConfigurationフィールドを含めます。このフィールドの場所を確認するには、 API リファレンスのRetrieveAndGenerateリクエスト本文を参照してください。

次の JSON オブジェクトは、返される取得結果の最大数を設定するために GenerationConfiguration オブジェクトに必要な最小限のフィールドを示しています。

"generationConfiguration": { "promptTemplate": { "textPromptTemplate": "string" } }

必要に応じて、プロンプトプレースホルダーや XML タグなど、カスタムプロンプトテンプレートを textPromptTemplateフィールドに入力します。システムプロンプトで使用できる最大文字数については、「」のtextPromptTemplate「」フィールドを参照してくださいGenerationConfiguration

ユースケースや責任のある AI ポリシーのナレッジベースに安全対策を講じることができます。さまざまなユースケースに合わせた複数のガードレールを作成し、複数のリクエストおよびレスポンス条件に適用して、一貫したユーザーエクスペリエンスを提供し、ナレッジベース全体で安全制御を標準化できます。拒否されたトピックを設定して、望ましくないトピックやコンテンツフィルターを禁止し、モデルの入力とレスポンスの有害なコンテンツをブロックできます。詳細については、「Amazon Bedrock のガードレール」を参照してください。

プロンプトエンジニアリングの一般的なガイドラインについては、「」を参照してください プロンプトエンジニアリングガイドライン

選択した方法に対応するタブを選択し、ステップに従います。

Console

「」のコンソールステップに従いますナレッジベースをクエリして結果を返すか、レスポンスを生成する。テストウィンドウで、「レスポンスの生成」をオンにします。次に、設定ペインで、ガードレールセクションを展開します。

  1. ガードレールセクションで、ガードレールの名前バージョンを選択します。選択したガードレールとバージョンの詳細を表示するには、「 を表示」を選択します。

    または、ガードレールリンクを選択して新しいリンクを作成することもできます。

  2. 編集が終了したら、[変更の保存] を選択します。保存せずに終了するには、変更を破棄 を選択します。

API

RetrieveAndGenerate リクエストを行うときは、 内に guardrailsConfigurationフィールドを含めてgenerationConfiguration、リクエストでガードレールを使用します。このフィールドの場所を確認するには、 API リファレンスのRetrieveAndGenerateリクエスト本文を参照してください。

次の JSON オブジェクトは、 GenerationConfigurationの設定に必要な最小限のフィールドを示していますguardrailsConfiguration

""generationConfiguration": { "guardrailsConfiguration": { "guardrailsId": "string", "guardrailsVersion": "string" } }

選択したガードレールguardrailsVersionguardrailsIdと を指定します。