

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

# クエリとレスポンスの生成を設定してカスタマイズする
<a name="kb-test-config"></a>

情報取得とレスポンス生成の設定をカスタマイズすることで、レスポンスの関連性を高めることができます。例えば、ドキュメントのメタデータフィールド/属性にフィルターを適用して、最近更新されたドキュメント (最終更新日が新しいドキュメント) を利用できます。

**注記**  
**オーケストレーションと生成**を除く以下の設定はすべて、非構造化データソースにのみ適用されます。

コンソールまたは API でのこれらの設定の詳細については、以下の該当するトピックを選択してください。

## ソースチャンクの数
<a name="kb-test-config-number"></a>

ナレッジベースをクエリすると、Amazon Bedrock はデフォルトで最大 5 件の結果を返します。各結果はソースのチャンクに対応しています。

**注記**  
このパラメータにより、返す結果の最大数が設定されるため、レスポンスの結果の実際の数は指定された `numberOfResults` 値よりも少なくなる可能性があります。チャンキング戦略に階層チャンキングを設定している場合、`numberOfResults` パラメータはナレッジベースが取得する子チャンクの数にマッピングされます。同じ親チャンクを共有する子チャンクは、最終レスポンスで親チャンクに置き換えられるため、返される結果の数がリクエストされた量より少なくなる可能性があります。

返される結果の最大数を変更するには、使用する手段のタブを選択し、手順に従ってください。

------
#### [ Console ]

「[ナレッジベースのクエリを実行してデータを取得する](kb-test-retrieve.md)」または「[ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する](kb-test-retrieve-generate.md)」のコンソールの手順に従ってください。**[設定]** ペインで、**[ソースチャンク]** セクションを展開し、返すソースチャンクの最大数を入力します。

------
#### [ API ]

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) または [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストを行うときに、`retrievalConfiguration` フィールドを含め、[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) オブジェクトを指定してください。このフィールドの位置を確認するには、API リファレンスで [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) リクエストと [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストの本文を参照してください。

次の JSON オブジェクトは、検索結果の最大数を設定するために、[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) オブジェクトに最低限必要なフィールドを示しています。

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

返される検索結果の最大数 (許容値の範囲については、[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) の `numberOfResults` フィールドを参照) を `numberOfResults` フィールドに指定してください。

------

## 検索タイプ
<a name="kb-test-config-search"></a>

検索タイプは、ナレッジベースでデータソースをどのようにクエリするかを定義します。次の検索タイプを指定できます。

**注記**  
ハイブリッド検索は、フィルタリング可能なテキストフィールドを含んでいる、Amazon RDS、Amazon OpenSearch Serverless、および MongoDB ベクトルストアでのみサポートされています。別のベクトルストアを使用する場合や、ベクトルストアにフィルタリング可能なテキストフィールドが含まれていない場合は、セマンティック検索が使用されます。
+ **デフォルト** – Amazon Bedrock が検索戦略を自動判定します。
+ **ハイブリッド** – ベクトル埋め込みの検索 (セマンティック検索) と未加工テキストの検索を組み合わせます。
+ **セマンティック** – ベクトル埋め込みのみを検索します。

検索タイプの定義方法については、使用する手段のタブを選択し、手順に従ってください。

------
#### [ Console ]

「[ナレッジベースのクエリを実行してデータを取得する](kb-test-retrieve.md)」または「[ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する](kb-test-retrieve-generate.md)」のコンソールの手順に従ってください。**[設定]** ペインを開いたら、**[検索タイプ]** セクションを展開し、**[デフォルト検索をオーバーライド]** をオンにして、オプションを選択します。

------
#### [ API ]

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) または [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストを行うときに、`retrievalConfiguration` フィールドを含め、[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) オブジェクトを指定してください。このフィールドの位置を確認するには、API リファレンスで [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) リクエストと [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストの本文を参照してください。

次の JSON オブジェクトは、検索タイプを設定するために、[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) オブジェクトに最低限必要なフィールドを示しています。

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

`overrideSearchType` フィールドに検索タイプを指定します。次のオプションがあります。
+ 値を指定しない場合、ベクトルストアの設定に最適な検索戦略が自動的に判定されます。
+ **HYBRID** – ベクトル埋め込みと未加工テキストの両方を使用してナレッジベースをクエリします。
+ **SEMANTIC** – ベクトル埋め込みを使用してナレッジベースをクエリします。

------

## ストリーミング
<a name="kb-test-config-stream"></a>

------
#### [ Console ]

「[ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する](kb-test-retrieve-generate.md)」のコンソールの手順に従ってください。**[設定]** ペインを開くと、**[ストリーミングの環境設定]** セクションを展開し、**[応答をストリーム]** をオンにします。

------
#### [ API ]

レスポンスをストリーミングするには、[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html) API を使用します。フィールドに入力する方法の詳細については、「[ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する](kb-test-retrieve-generate.md)」の **[API]** タブを参照してください。

------

## メタデータの手動フィルタリング
<a name="kb-test-config-filters"></a>

ドキュメントのフィールド/属性にフィルターを適用して、レスポンスの関連性をさらに高めることができます。データソースには、フィルタリングするドキュメントメタデータ属性/フィールドを含めることができ、埋め込みに含めるフィールドを指定できます。

例えば、「epoch\_modification\_time」は、ドキュメントが最後に更新された 1970 年 1 月 1 日 (UTC) からの秒数で表されます。「epoch\_modification\_time」にフィルターを適用して、その値が特定の数*より大きい*最新のデータだけを取得できます。そうして取得した最新のドキュメントをクエリで使用できます。

ナレッジベースのクエリ時にフィルターを使用するには、ナレッジベースが次の要件を満たしていることを確認してください。
+ データソースコネクタを設定する場合、ほとんどのコネクタはドキュメントの主要なメタデータフィールドをクローリングします。Amazon S3 バケットをデータソースとして使用する場合は、バケットに関連付けられているファイルまたはドキュメントの `fileName.extension.metadata.json` が少なくとも 1 つ含まれている必要があります。メタデータファイルの設定の詳細については、「[接続設定](s3-data-source-connector.md#configuration-s3-connector)」の「**ドキュメントメタデータフィールド**」を参照してください。
+ ナレッジベースのベクトルインデックスが Amazon OpenSearch Serverless ベクトルストアにある場合は、ベクトルインデックスが `faiss` エンジンで設定されていることを確認してください。ベクトルインデックスが `nmslib` エンジンで設定されている場合は、次のいずれかを行う必要があります。
  + コンソールで[新しいナレッジベースを作成](knowledge-base-create.md)し、Amazon Bedrock が Amazon OpenSearch Serverless でベクトルインデックスを自動作成できるようにします。
  + ベクトルストアに[別のベクトルインデックスを作成](knowledge-base-setup.md)し、**[エンジン]** として `faiss` を選択します。次に、[新しいナレッジベースを作成](knowledge-base-create.md)し、新しいベクトルインデックスを指定します。
+ ナレッジベースにより、S3 ベクトルバケットでベクトルインデックスが使用されている場合、`startsWith` および `stringContains`フィルターを使用することはできません。
+ Amazon Aurora データベースクラスター内の既存のベクトルインデックスにメタデータを追加する場合は、カスタムメタデータ列のフィールド名を指定して、すべてのメタデータを 1 つの列に保存することをお勧めします。[データインジェスト](kb-data-source-sync-ingest.md)中、この列はデータソースからメタデータファイル内のすべての情報を入力するために使用されます。このフィールドを指定することにした場合は、この列にインデックスを作成する必要があります。
  + コンソールで[新しいナレッジベースを作成](knowledge-base-create.md)し、Amazon Bedrock を使用して Amazon Aurora データベースを設定すると、自動的に 1 つの列が作成され、メタデータファイルからの情報が入力されます。
  + ベクトルストアに[別のベクトルインデックスを作成する](knowledge-base-setup.md)ことを選択した場合、メタデータファイルからの情報を保存するカスタムメタデータフィールド名を指定する必要があります。このフィールド名を指定しない場合は、ファイル内のメタデータ属性ごとに列を作成し、データ型 (テキスト、数値、またはブール値) を指定する必要があります。例えば、属性 `genre` がデータソースに存在する場合は、`genre` という名前の列を追加し、`text` をデータ型として指定します。インジェスト中、これらの別個の列には対応する属性値が入力されます。

データソースに PDF ドキュメントがあり、ベクトルストアに Amazon OpenSearch Serverless または Amazon Aurora を使用している場合: Amazon Bedrock ナレッジベースはドキュメントページ番号を生成し、*x-amz-bedrock-kb-document-page-number* と呼ばれるメタデータフィールド/属性に保存します。ドキュメントのチャンキングを選択しない場合、メタデータフィールドに保存されているページ番号はサポートされない点に注意してください。

クエリ時に結果をフィルタリングするには、次のフィルタリング演算子を使用できます。


**フィルタリング演算子**  

| オペレーター | コンソール | API フィルター名 | サポートされている属性データ型 | フィルタリング結果 | 
| --- | --- | --- | --- | --- | 
| Equals (等しい) | = | [equals](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-equals) | 文字列、数値、ブール値 | 属性が指定した値と一致する | 
| Not equals (等しくない) | \!= | [notEquals](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-notEquals) | 文字列、数値、ブール値 | 属性が指定した値と一致しない | 
| Greater than (より大きい) | > | [greaterThan](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-greaterThan) | 数値 | 属性が指定した値より大きい | 
| Greater than or equals (以上) | >= | [greaterThanOrEquals](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-greaterThanOrEquals) | 数値 | 属性が指定した値以上 | 
| Less than (より小さい) | < | [lessThan](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-lessThan) | 数値 | 属性が指定した値より小さい | 
| Less than or equals (以下) | <= | [lessThanOrEquals](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-lessThanOrEquals) | 数値 | 属性が指定した値以下 | 
| In (中にある) | : | [in](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-in) | 文字列リスト | 属性が指定したリスト内にある (現時点では、Amazon OpenSearch Serverless および Neptune Analytics GraphRAG ベクトルストアで最適にサポートされています) | 
| Not in (中にない) | \!: | [notIn](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-notIn) | 文字列リスト | 属性が指定したリスト内にない (現時点では、Amazon OpenSearch Serverless および Neptune Analytics GraphRAG ベクトルストアで最適にサポートされています) | 
| を含む文字列 | 利用不可 | [stringContains](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-stringContains) | string | 属性は文字列にする必要があります。属性名はキーと一致しており、その値は、部分文字列として指定した値を含む文字列、または部分文字列として指定した値を含むメンバーを含むリストです (現時点では、Amazon OpenSearch Serverless ベクトルストアで最適にサポートされています。Neptune Analytics GraphRAG ベクトルストアでは文字列バリアントがサポートされますが、このフィルターのリストバリアントはサポートされません)。 | 
| を含むリスト | 利用不可 | [listContains](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-listContains) | string | 属性は文字列リストにする必要があります。属性名はキーと一致しており、その値はメンバーの 1 つとして指定した値を含むリストです (現時点では、Amazon OpenSearch Serverless ベクトルストアで最適にサポートされています)。 | 

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


**論理演算子**  

| 演算子 | コンソール | API フィルターフィールド名 | フィルタリング結果 | 
| --- | --- | --- | --- | 
| And | and | [andAll](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-andAll) | 結果がグループ内のすべてのフィルタリング式を満たす | 
| Or | or | [orAll](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-orAll) | 結果がグループ内のフィルタリング式の少なくとも 1 つを満たす | 

メタデータを使用して結果をフィルタリングする方法については、使用する手段のタブを選択し、手順に従ってください。

------
#### [ Console ]

「[ナレッジベースのクエリを実行してデータを取得する](kb-test-retrieve.md)」または「[ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する](kb-test-retrieve-generate.md)」のコンソールの手順に従ってください。**[設定]** ペインを開くと、**[フィルター]** セクションが表示されます。次の手順では、さまざまなユースケースについて説明します。
+ フィルターを追加するには、メタデータ属性、フィルタリング演算子、値をボックスに入力し、フィルタリング式を作成します。式の各部を空白で区切ってください。**Enter** キーを押すと、フィルターが追加されます。

  使用できるフィルタリング演算子のリストについては、上記の「**フィルタリング演算子**」の表を参照してください。また、メタデータ属性の後に空白を追加すると、フィルタリング演算子のリストが表示されます。
**注記**  
文字列は引用符で囲む必要があります。

  例えば、ソースドキュメントからの結果をフィルタリングして、`genre` メタデータ属性の値が `"entertainment"` であるものを取得するには、フィルターとして **genre = "entertainment"** を追加します。  
![フィルターを 1 つ追加します。](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/filter-one.png)
+ 別のフィルターを追加するには、別のフィルタリング式をボックスに入力し、**Enter** キーを押します。グループには最大 5 つのフィルターを追加できます。  
![別のフィルターを追加します。](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/filter-more.png)
+ デフォルトでは、指定したすべてのフィルタリング式を満たすクエリ結果が返されます。フィルタリング式の少なくとも 1 つを満たす結果を返すには、2 つのフィルタリングオペレーションの間にある **[AND]** ドロップダウンメニューを選択し、**[OR]** を選択します。  
![フィルター間で論理演算子を変更します。](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/filter-logical.png)
+ 異なる論理演算子を組み合わせるには、**[\+ グループを追加]** を選択してフィルターグループを追加します。新しいグループにフィルタリング式を入力します。最大 5 個のフィルターグループを追加できます。  
![フィルターグループを追加して、さまざまな論理演算子を組み合わせます。](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/filter-group.png)
+ すべてのフィルタリンググループ間で使用される論理演算子を変更するには、2 つのフィルターグループの間にある **[AND]** ドロップダウンメニューを選択し、**[OR]** を選択します。  
![フィルターグループ間で論理演算子を変更します。](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/filter-group-logical.png)
+ フィルターを編集するには、フィルターを選択し、フィルタリングオペレーションを変更して **[適用]** を選択します。  
![フィルターを編集します。](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/filter-edit.png)
+ フィルターグループを削除するには、グループの横にあるごみ箱アイコン (![Trash can icon representing a delete action.](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/trash.png)) を選択します。フィルターを削除するには、フィルターの横にある削除アイコン (![Close or cancel icon represented by an "X" symbol.](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/icons/close.png)) を選択します。  
![フィルターまたはフィルターグループを削除します。](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/filter-delete.png)

次の図は、フィルターの設定例を示しています。**2018** 以降に執筆された **"entertainment"** ジャンルのドキュメントを全部と、ジャンルが **"cooking"** または **"sports"** で作成者が **"C"** で始まるドキュメントを返します。

![フィルターの設定例。](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/images/kb/filter-example.png)


------
#### [ API ]

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) または [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストを行うときに、`retrievalConfiguration` フィールドを含め、[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) オブジェクトを指定してください。このフィールドの位置を確認するには、API リファレンスで [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) リクエストと [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストの本文を参照してください。

次の JSON オブジェクトは、さまざまなユースケースに応じたフィルターを設定するために、[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) オブジェクトに最低限必要なフィールドを示しています。

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

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

1. 論理演算子 (上記の「**論理演算子**」の表を参照) を使用して、最大 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", ...]
                   },
                   ...
               ]
           }
       }
   }
   ```

1. 論理演算子を使用して最大 5 つのフィルタリング演算子を 1 つのフィルターグループに結合し、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", ...]
                   }
               ]
           }
       }
   }
   ```

1. 最大 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 つを満たす | 

例については、「[Send a query and include filters (Retrieve)](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html#API_agent-runtime_Retrieve_Example_2)」および「[Send a query and include filters (RetrieveAndGenerate)](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html#API_agent-runtime_RetrieveAndGenerate_Example_2)」を参照してください。

------

## 暗黙的なメタデータフィルタリング
<a name="kb-test-config-implicit"></a>

Amazon Bedrock ナレッジベースでは、ユーザークエリとメタデータスキーマに基づいて取得フィルターが生成および適用されます。

**注記**  
暗黙的なメタデータフィルタリングはAnthropicClaudeモデルでサポートされています。サポートされているモデルの詳細については、[「モデルの概要](model-cards.md)」を参照してください。

`implicitFilterConfiguration` は、[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) リクエスト本文の `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"
    }
]
```

## ガードレール
<a name="kb-test-config-guardrails"></a>

ユースケースと責任ある AI ポリシーに応じて、ナレッジベースに保護対策を実装できます。さまざまなユースケースに合わせた複数のガードレールを作成し、複数のリクエストやレスポンスの条件に適用することで、一貫したユーザーエクスペリエンスを提供し、ナレッジベース全体で安全性の統制を標準化できます。望ましくないトピックを禁じる拒否トピックや、モデルの入力とレスポンスで有害なコンテンツをブロックするコンテンツフィルターを設定できます。詳細については、「[Amazon Bedrock ガードレールを使用して有害なコンテンツを検出してフィルタリングする](guardrails.md)」を参照してください。

**注記**  
現時点では、Claude 3 Sonnet と Haiku では、ナレッジベースのコンテキストグラウンディングでガードレールを使用することはできません。

一般的なプロンプトエンジニアリングのガイドラインについては、「[プロンプトエンジニアリングの概念](prompt-engineering-guidelines.md)」を参照してください。

任意の方法のタブを選択し、その手順に従います。

------
#### [ Console ]

「[ナレッジベースのクエリを実行してデータを取得する](kb-test-retrieve.md)」または「[ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する](kb-test-retrieve-generate.md)」のコンソールの手順に従ってください。テストウィンドウで、**[回答を生成]** をオンにします。次に、**[設定]** ペインで、**[ガードレール]** セクションを展開します。

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

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

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

------
#### [ API ]

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストを行う際に、そのリクエストでガードレールを使用するには、`generationConfiguration` 内に `guardrailConfiguration` フィールドを含めます。このフィールドの位置を確認するには、API リファレンスで [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストの本文を参照してください。

次の JSON オブジェクトは、`guardrailConfiguration` を設定するために、[GenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerationConfiguration.html) に最低限必要なフィールドを示しています。

```
"generationConfiguration": {
    "guardrailConfiguration": {
        "guardrailId": "{{string}}",
        "guardrailVersion": "{{string}}"
    }
}
```

選択したガードレールの `guardrailId` と `guardrailVersion` を指定してください。

------

## 再ランク付け
<a name="kb-test-config-rerank"></a>

リランカーモデルを使用して、ナレッジベースクエリの結果を再ランク付けできます。「[ナレッジベースのクエリを実行してデータを取得する](kb-test-retrieve.md)」または「[ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する](kb-test-retrieve-generate.md)」のコンソールの手順に従ってください。**[設定]** ペインを開いたら、**[再ランキング]** セクションを展開します。リランカーモデルを選択し、必要に応じてアクセス許可を更新して、追加のオプションを変更します。プロンプトを入力し、**[実行]** を選択して、再ランク付け後に結果をテストします。

## クエリ分解
<a name="kb-test-query-modifications"></a>

クエリ分解とは、複雑なクエリを管理しやすい細かいサブクエリに分解する手法です。このアプローチは、特に最初のクエリが多面的であるか、範囲が広すぎる場合に、より正確で関連性の高い情報を取得するのに役立ちます。このオプションを有効にすると、ナレッジベースに対して複数のクエリが実行され、最終レスポンスの精度が高まる可能性があります。

例えば、「*2022 FIFA ワールドカップでは、アルゼンチンとフランスのどちらがゴール数が多かったか*」のような質問に対して、Amazon Bedrock ナレッジベースは最終的な回答を生成する前に、まず次のようなサブクエリを生成できます。

1. *2022 FIFA ワールドカップ決勝のアルゼンチンのゴール数*

1. *2022 FIFA ワールドカップ決勝のフランスのゴール数*

------
#### [ Console ]

1. データソースを作成して同期するか、既存のナレッジベースを使用します。

1. テストウィンドウを表示し、設定パネルを開きます。

1. クエリ分解を有効にします。

------
#### [ API ]

```
POST /retrieveAndGenerate HTTP/1.1
Content-type: application/json
{
   "input": {
      "text": "string"
   },
   "retrieveAndGenerateConfiguration": {
      "knowledgeBaseConfiguration": {
         "orchestrationConfiguration": { // Query decomposition
           "queryTransformationConfiguration": {
                "type": "string" // enum of QUERY_DECOMPOSITION
           }
         },
...}
}
```

------

## 推論パラメータ
<a name="kb-test-model-params"></a>

情報の取得に基づいてレスポンスを生成する場合、[推論パラメータ](inference-parameters.md)を使用して、推論中のモデルの動作をより細かく制御し、モデルの出力に影響を与えることができます。

推論パラメータの変更方法については、使用する手段のタブを選択し、手順に従ってください。

------
#### [ Console ]

**ナレッジベースのクエリ時に推論パラメータを変更するには** – 「[ナレッジベースのクエリを実行してデータを取得する](kb-test-retrieve.md)」または「[ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する](kb-test-retrieve-generate.md)」のコンソールの手順に従ってください。**[設定]** ペインを開くと、**[推論パラメータ]** セクションが表示されます。パラメータを適宜変更してください。

**ドキュメントチャット機能の使用時に推論パラメータを変更するには** – 「[ナレッジベースを設定せずにドキュメントとチャットする](knowledge-base-chatdoc.md)」の手順に従ってください。**[設定]** ペインで **[推論パラメータ]** セクションを展開し、パラメータを適宜変更します。

------
#### [ API ]

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API の呼び出しでモデルパラメータを指定します。`knowledgeBaseConfiguration` (ナレッジベースをクエリする場合) または `externalSourcesConfiguration` ([ドキュメントチャット](knowledge-base-chatdoc.md)機能を使用する場合) の `inferenceConfig` フィールドに推論パラメータを指定することで、モデルをカスタマイズできます。

`inferenceConfig` フィールド内に `textInferenceConfig` フィールドがあり、次のパラメータを指定できます。
+ 温度
+ topP
+ maxTokenCount
+ stopSequences

`externalSourcesConfiguration` と `knowledgeBaseConfiguration` の両方の `inferenceConfig` フィールドで次のパラメータを使用して、モデルをカスタマイズできます。
+ 温度
+ topP
+ maxTokenCount
+ stopSequences

これらの各パラメータの機能の詳細については、「[推論パラメータでレスポンスの生成に影響を与える](inference-parameters.md)」を参照してください。

さらに、`textInferenceConfig` でサポートされていないカスタムパラメータを `additionalModelRequestFields` マップで指定することもできます。特定のモデルに固有のパラメータをこの引数で指定できます。固有のパラメータについては、「[Inference request parameters and response fields for foundation models](model-parameters.md)」を参照してください。

`textInferenceConfig` でパラメータを省略すると、デフォルトの値が使用されます。`textInferneceConfig` のパラメータが認識されない場合は無視され、`AdditionalModelRequestFields` のパラメータが認識されない場合は例外が発生します。

`additionalModelRequestFields` と `TextInferenceConfig` の両方に同じパラメータが指定されている場合は、検証例外がスローされます。

**RetrieveAndGenerate でモデルパラメータを使用する**

 以下は、`RetrieveAndGenerate` リクエスト本文の `generationConfiguration` の `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 を渡しています。

------

## ナレッジベースのプロンプトテンプレート: オーケストレーションと生成
<a name="kb-test-config-prompt-template"></a>

ナレッジベースをクエリし、レスポンスの生成をリクエストすると、Amazon Bedrock は、指示とコンテキストをユーザーのクエリと組み合わせるプロンプトテンプレートを使用して、レスポンスの生成のためにモデルに送信される生成プロンプトを作成します。オーケストレーションプロンプトをカスタマイズすると、ユーザーのプロンプトが検索クエリに変わります。プロンプトテンプレートは、次のツールを使用して設計できます。
+ **プロンプトプレースホルダー** – Amazon Bedrock ナレッジベースの事前定義された変数。実行時のナレッジベースのクエリ中に、動的に値が入力されます。システムプロンプトでは、これらのプレースホルダーは `$` 記号で囲まれています。次のリストでは、使用できるプレースホルダーを説明しています。
**注記**  
`$output_format_instructions$` プレースホルダーは、レスポンスに表示される引用の必須フィールドです。  
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/kb-test-config.html)
+ **XML タグ** – Anthropic モデルでは、プロンプトを構造化および記述するための XML タグの使用がサポートされています。最適な結果が得るためには、わかりやすいタグ名を使用します。例えば、デフォルトのシステムプロンプトには `<database>` タグがありますが、これは、以前に尋ねられた質問のデータベースを記述するために使用します。詳細については、「[Anthropic ユーザーガイド](https://docs.anthropic.com/en/docs/welcome)」の「[XML タグを使用する](https://docs.anthropic.com/claude/docs/use-xml-tags)」を参照してください。

一般的なプロンプトエンジニアリングのガイドラインについては、「[プロンプトエンジニアリングの概念](prompt-engineering-guidelines.md)」を参照してください。

**注記**  
カスタムプロンプトテンプレートを指定しない場合、Amazon Bedrock は、一般的なサンプルコンテンツ (無関係なトピックに関するサンプルの質問や回答など) を含むデフォルトのシステムプロンプトを使用して、モデルのレスポンスフォーマットをガイドします。このデフォルトのプロンプトは、[モデル呼び出しログ](model-invocation-logging.md)に表示されます。デフォルトプロンプトのコンテンツの例は、他のお客様のデータからのものではありません。Amazon Bedrock が提供する静的テンプレートです。独自の を指定することで、デフォルトのプロンプトを上書きできます`textPromptTemplate`。

任意の方法のタブを選択し、その手順に従います。

------
#### [ Console ]

「[ナレッジベースのクエリを実行してデータを取得する](kb-test-retrieve.md)」または「[ナレッジベースをクエリし、取得したデータに基づいてレスポンスを生成する](kb-test-retrieve-generate.md)」のコンソールの手順に従ってください。テストウィンドウで、**[回答を生成]** をオンにします。次に、**[設定]** ペインで、**[ナレッジベースプロンプトのテンプレート]** セクションを展開します。

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

1. プロンプトプレースホルダーや XML タグなど、テキストエディタでシステムプロンプトを適宜編集します。デフォルトのプロンプトテンプレートに戻すには、**[デフォルトにリセット]** を選択します。

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

------
#### [ API ]

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストを行うときに、`generationConfiguration` フィールドを含め、[GenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerationConfiguration.html) オブジェクトを指定してください。このフィールドの位置を確認するには、API リファレンスで [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) リクエストの本文を参照してください。

次の JSON オブジェクトは、検索結果の最大数を設定するために、[GenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerationConfiguration.html) オブジェクトに最低限必要なフィールドを示しています。

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

必要に応じて、プロンプトプレースホルダーや XML タグなど、カスタムプロンプトテンプレートを `textPromptTemplate` フィールドに入力します。システムプロンプトで使用できる文字数の上限については、「[GenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerationConfiguration.html)」の `textPromptTemplate` フィールドを参照してください。

------