

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

# コンテキストグラウンディングチェックを使用して、レスポンスのハルシネーションをフィルタリングする
<a name="guardrails-contextual-grounding-check"></a>

Amazon Bedrock のガードレールは、リファレンスソースとユーザークエリが提供されたとき、モデルレスポンスのハルシネーションを検出してフィルタリングするためのコンテキストグラウンディングチェックに対応しています。サポートされているユースケースには、コンピュータサイエンス分野で定義されている要約、言い換え、質問への回答が含まれます。(会話型 QA/チャットボットのユースケースはサポートされていません）。

コンテキストグラウンディングチェックでは、処理された各チャンクの関連性をチェックします。1 つのチャンクが関連していると見なされる場合、ユーザーのクエリに対する回答があると、レスポンス全体が関連していると見なされます。ストリーミング API の場合は、無関係なレスポンスがユーザーに返され、レスポンス全体がストリーミングされた後にのみ無関係としてマークされるシナリオが発生する可能性があります。

コンテキストグラウンディングは、次のパラダイムをチェックします。
+ **グラウンディング** – これにより、モデルレスポンスがソースに基づいて事実上正確であり、ソースに基づいているかどうかが確認されます。レスポンスに追加された新しい情報は、根拠がないと見なされます。
+ **関連性** – これにより、モデルレスポンスがユーザークエリに関連しているかどうかが確認されます。

リファレンスソースに「ロンドンは英国の首都である。東京は日本の首都である。」が含まれ、ユーザークエリが「日本の首都は何ですか？」である例について考えてみましょう。「日本の首都はロンドンである」などのレスポンスは根拠がなく、事実上正しくないと見なされ、「英国の首都はロンドンである」などのレスポンスは、正しく、ソースに基づいていても無関係と見なされます。

**注記**  
リクエストに複数の `grounding_source` タグが含まれている場合、ガードレールは、各 `grounding_source` を個別に考慮するのではなく、提供されたすべての `grounding_source` 値を結合して評価します。この動作は `query` タグの場合と同じです。

**注記**  
コンテキストグラウンディングポリシーは現在、グラウンディングソースでは最大 100,000 文字、クエリでは 1,000 文字、レスポンスでは 5,000 文字をサポートしています。

**信頼スコアとしきい値**

コンテキストグラウンディングチェックでは、提供されたソースとユーザークエリに基づいて処理された各モデルレスポンスのグラウンディングと関連性に対応する信頼スコアを生成します。しきい値を設定すると、生成されたスコアに基づいてモデルレスポンスをフィルタリングできます。フィルタリングしきい値により、生成 AI アプリケーションで根拠に基づき、関連性があると見なすことができるモデルレスポンスの最小許容信頼スコアを決定できます。例えば、グラウンディングしきい値と関連性しきい値がそれぞれ 0.7 に設定されている場合、グラウンディングスコアまたは関連性スコアが 0.7 未満のすべてのモデルレスポンスはハルシネーションとして検出され、アプリケーションでブロックされます。フィルタリングのしきい値が増加するにつれて、根拠のないコンテンツや無関係なコンテンツをブロックする可能性が高くなり、ハルシネーションであるコンテンツがアプリケーションで表示される可能性は低下します。グラウンディングと関連性の各しきい値は、0～0.99 の範囲で設定できます。しきい値 1 は、すべてのコンテンツがブロックされるため、無効です。

コンテキストグラウンディングチェックでは、グラウンディングソース、クエリ、保護するコンテンツ (またはモデルレスポンス) の 3 つのコンポーネントでチェックを実行する必要があります。これらは、Invoke API、Converse API、`ApplyGuardrail` のどれを直接使用しているかによって設定が異なります。
+ グラウンドソース – ユーザークエリに対する回答に必要なコンテキスト情報。例えば、「ロンドンは英国の首都です。東京は日本の首都です。」です。
+ クエリ – ユーザーが尋ねる可能性のある質問。例えば、「日本の首都はどこですか?」です。
+ 保護するコンテンツ – グラウンディングソースとクエリに関連して保護する必要があるテキスト。Invoke API と Converse API の場合、これはモデルレスポンスです。例えば、「日本の首都は東京です。」は、保護するコンテンツとなる場合があります。

**根拠のない例**
+ グラウンディングソース - 「ロンドンは英国の首都です。東京は日本の首都です。」
+ クエリ - 「日本の首都はどこですか?」
+ 保護するコンテンツ - 「日本の首都はロンドンです。」

この例では、保護するコンテンツはクエリに関連していますが、グラウンディングソースを正しく使用していないため、根拠づけされていません。これにより、グラウンディングスコアが低くなります。

**無関係な例**
+ グラウンディングソース - 「ロンドンは英国の首都です。東京は日本の首都です。」
+ クエリ - 「日本の首都はどこですか?」
+ 保護するコンテンツ - 「英国の首都はロンドンです」。

この例では、保護するコンテンツは根拠づけされていますが、関連性はありません。このコンテンツはグラウンディングソースからの情報を使用しますが、クエリには応答しません。これにより、関連性スコアが低くなります。

**根拠がなく無関係な例**
+ グラウンディングソース - 「ロンドンは英国の首都です。東京は日本の首都です。」
+ クエリ - 「日本の首都はどこですか?」
+ 保護するコンテンツ - 「外では雨が降っています。」

この例では、保護するコンテンツは根拠づけされておらず、関連性もありません。このコンテンツはグラウンディングソースからの情報もクエリへの回答も使用しません。これにより、グラウンディングスコアと関連性スコアが低くなります。

**その他の例**

料金や請求金額に関連する質問に答えるように設計された銀行アプリケーションについて検討します。

ソース:
+ 当座預金口座の開設に伴う料金は発生しません。
+ 当座預金口座の維持にかかる月額料金は 10 ドルです。
+ 国際送金には 1% の取引手数料がかかります。
+ 国内送金には料金はかかりません。
+ クレジットカード請求の遅延支払いに関連する料金は 23.99% です。

上記のソースに基づくと、ユーザーのクエリに応じて 4 つのシナリオが考えられます。

**グラウンディングおよび関連性**
+ Q: 当座預金口座に関連する料金はいくらですか?
+ A: 当座預金口座の維持にかかる月額料金は 10 ドルです。国内送金には料金はかかりません。ただし、国際送金には 1% の取引手数料がかかります。当座預金口座の開設に伴う料金は発生しません。

**根拠はないが関連性がある**
+ Q: クレジットカードに関連する取引手数料はいくらですか?
+ A: クレジットカードに関連する取引手数料は 23.99% です。

**根拠はあるが、関連性がない**
+ Q: 当座預金口座の使用料金はいくらですか?
+ A: 提供された情報に基づくと、クレジットカードの遅延支払い料金は 23.99% です。

**根拠がなく、関連性もない**
+ Q: 当座預金口座の使用料金はいくらですか?
+ A: 証券口座の料金は、通常売買取引ごとに 0.5 ドルです。

**Topics**
+ [コンソールでコンテキストグラウンディングチェックを追加する](#guardrails-contextual-grounding-console)
+ [Invoke API を使用したコンテキストグラウンディングチェックの呼び出し](#guardrails-contextual-grounding-invoke-api)
+ [Converse API を使用したコンテキストグラウンディングチェックの呼び出し](#guardrails-contextual-grounding-converse-api)
+ [ApplyGuardrail API を使用したコンテキストグラウンディングチェックの呼び出し](#guardrails-contextual-grounding-applyguardrail-api)

## コンソールでコンテキストグラウンディングチェックを追加する
<a name="guardrails-contextual-grounding-console"></a>

1. Amazon Bedrock コンソールを使用するアクセス許可を持つ IAM ID AWS マネジメントコンソール を使用して にサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインで **[ガードレール]** を選択し、次に **[ガードレールを作成]** を選択します。

1. **[ガードレールの詳細を提供]** ページで、次の操作を行います。

   1. **[ガードレールの詳細]** セクションで、ガードレールの **[名前]** とオプションの **[説明]** に入力します。

   1. **[ブロックされたプロンプトのメッセージ]** に、ガードレールが適用されたときに表示されるメッセージを入力します。**[応答に同じブロックメッセージを適用します]** チェックボックスをオンにして、応答でガードレールが適用されたときに同じメッセージを使用します。

   1. (オプション) ガードレールの[クロスリージョン推論](guardrails-cross-region.md)を有効にするには、**[クロスリージョン推論]** を展開し、**[ガードレールのクロスリージョン推論を有効にする]** を選択します。ガードレール推論リクエストをルーティングできる送信先を定義する AWS リージョン ガードレールプロファイルを選択します。

   1. (オプション) デフォルトでは、ガードレールは AWS マネージドキーで暗号化されます。独自のカスタマーマネージド KMS キーを使用するには、**[KMS キーの選択]** を展開して、**[暗号化設定をカスタマイズ (詳細)]** チェックボックスをオンにします。

      既存の AWS KMS キーを選択するか**、キーの作成を選択して新しい AWS KMS **キーを作成できます。

   1. (オプション) ガードレールにタグを追加するには、**[タグ]** を展開し、定義するタグごとに **[新しいタグを追加]** を選択します。

      詳細については、「[Amazon Bedrock リソースにタグ付け](tagging.md)」を参照してください。

   1. **[Next]** (次へ) を選択します。

1. 「**コンテキストグラウンディングチェックを追加**」 ページで、根拠のない情報または無関係な情報をブロックするようにしきい値を設定します。
**注記**  
チェックのタイプごとに、スライダーを移動したり、しきい値を 0 から 0.99 に入力したりできます。使用に適したしきい値を選択します。しきい値が高いほど、レスポンスに求められるグラウンディングと関連性の信頼度が高くなります。しきい値を下回るレスポンスはフィルタリングされます。

   1. **[グラウンディング]** フィールドで、**[グラウンディングチェックを有効にする]** を選択して、モデルレスポンスに根拠があるかどうかを確認します。

   1. **[関連性]** フィールドで、**[関連性チェックを有効にする]** を選択して、モデルレスポンスに関連性があるかどうかを確認します。

   1. 機密情報フィルターの設定が完了したら、**[次へ]** または **[スキップして確認および作成]** を選択します。

## Invoke API を使用したコンテキストグラウンディングチェックの呼び出し
<a name="guardrails-contextual-grounding-invoke-api"></a>

入力内のグラウンディングソースとクエリをマークするには、入力タグと同じ方法で機能する 2 つのタグを指定します。これらのタグは `amazon-bedrock-guardrails-groundingSource_xyz` と `amazon-bedrock-guardrails-query_xyz` であり、タグのサフィックスが xyz であることを前提としています。例えば、次のようになります。

```
{
    "text": """
<amazon-bedrock-guardrails-groundingSource_xyz>London is the capital of UK. Tokyo is the capital of Japan. </amazon-bedrock-guardrails-groundingSource_xyz>

<amazon-bedrock-guardrails-query_xyz>What is the capital of Japan?</amazon-bedrock-guardrails-query_xyz>
""",
    "amazon-bedrock-guardrailConfig": {
        "tagSuffix": "xyz",
    },
}
```

コンテキストグラウンディングチェックを実行するにはモデルレスポンスが必要であるため、チェックは、プロンプトではなく出力に対してのみ実行されます。

これらのタグは、guardContent タグと一緒に使用できます。guardContent タグを使用しない場合は、ガードレールは、グラウンディングソースやクエリを含むすべての設定済みポリシーをデフォルトで入力全体に適用します。guardContent タグが使用された場合は、コンテキストグラウンディングチェックポリシーにより、グラウンディングソース、クエリ、およびレスポンスのみが調査され、残りのポリシーにより、guardContent タグ内のコンテンツが調査されます。

## Converse API を使用したコンテキストグラウンディングチェックの呼び出し
<a name="guardrails-contextual-grounding-converse-api"></a>

Converse API のグラウンディングソースとクエリにマークを付けるには、各ガードコンテンツブロックの修飾子フィールドを使用します。例えば、次のようになります。

```
[
    {
        "role": "user",
        "content": [
            {
                "guardContent": {
                    "text": {
                        "text": "London is the capital of UK. Tokyo is the capital of Japan",
                        "qualifiers": ["grounding_source"],
                    }
                }
            },
            {
                "guardContent": {
                    "text": {
                        "text": "What is the capital of Japan?",
                        "qualifiers": ["query"],
                    }
                }
            },
        ],
    }
]
```

コンテキストグラウンディングチェックを実行するにはモデルレスポンスが必要であるため、チェックは、プロンプトではなく出力に対してのみ実行されます。

コンテキストグラウンディングチェックポリシーは、 が使用されているかどうかにかかわらず、常にグラウンディングソース、クエリ、およびレスポンスのみを調査`guardContent`します。*残りの*ポリシーの動作は、 を使用するかどうかによって異なります`guardContent`。
+ **なし `guardContent`** – 他のポリシーはデフォルトの動作を使用します。システムプロンプトは調査されず、メッセージは調査されます。
+ **あり `guardContent`** – 他のポリシーは、 でマークされたコンテンツのみを調査します`guardContent`。マークされていないコンテンツはすべてスキップされます。

## ApplyGuardrail API を使用したコンテキストグラウンディングチェックの呼び出し
<a name="guardrails-contextual-grounding-applyguardrail-api"></a>

`ApplyGuardrail` でコンテキストグラウンディングチェックを使用する方法は、Converse API で使用する方法と似ています。`ApplyGuardrail` のグラウンディングソースとクエリにマークを付けるには、各コンテンツブロックの修飾子フィールドを使用します。ただし、モデルは `ApplyGuardrail` では呼び出されないため、保護するコンテンツを含む追加のコンテンツブロックも提供する必要があります。このコンテンツブロックは、オプションで guard\_content で修飾でき、Invoke\* または Converse\* API のモデルレスポンスと同等です。例えば、次のようになります。

```
[
    {
        "text": {
            "text": "London is the capital of UK. Tokyo is the capital of Japan",
            "qualifiers": [
                "grounding_source"
            ]
        }
    },
    {
        "text": {
            "text": "What is the capital of Japan?",
            "qualifiers": [
                "query"
            ]
        }
    },
    {
        "text": {
            "text": "The capital of Japan is Tokyo."
        }
    }
]
```

コンテキストグラウンディングチェックを実行するにはモデルレスポンスが必要であるため、チェックは、プロンプトではなく出力に対してのみ実行されます。

どのコンテンツブロックにも guard\_content 修飾子が付いていない場合は、コンテキストグラウンディングチェックポリシーにより、グラウンディングソース、クエリ、レスポンスのみが調査されます。残りのポリシーは、デフォルトの調査動作に従います。デフォルトで、システムプロンプトは調査されず、メッセージが調査されます。ただし、コンテンツブロックに guard\_content 修飾子が付いている場合は、コンテキストグラウンディングチェックポリシーでグラウンディングソース、クエリ、レスポンスのみが調査され、残りのポリシーで guardContent タグでマークされたコンテンツが調査されます。