コンテキストグラウンディングチェックを使用して、レスポンスのハルシネーションをフィルタリングする - Amazon Bedrock

コンテキストグラウンディングチェックを使用して、レスポンスのハルシネーションをフィルタリングする

Amazon Bedrock のガードレールは、リファレンスソースとユーザークエリが提供されたとき、モデルレスポンスのハルシネーションを検出してフィルタリングするためのコンテキストグラウンディングチェックに対応しています。サポートされているユースケースは、検索拡張生成 (RAG) の取得パスやエージェントが会話を根拠にした会話の履歴など、リファレンスソースに依存する RAG、要約、言い換え、または会話エージェントにまたがります。

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

コンテキストグラウンディングチェックでは、次の 2 つのパラダイム全体でハルシネーションを評価します。

  • グラウンディング – これにより、モデルレスポンスがソースに基づいて事実上正確であり、ソースに基づいているかどうかが確認されます。レスポンスに追加された新しい情報は、根拠がないと見なされます。

  • 関連性 – これにより、モデルレスポンスがユーザークエリに関連しているかどうかが確認されます。

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

注記

リクエストに複数の 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 ドルです。

Invoke API を使用したコンテキストグラウンディングチェックの呼び出し

入力内のグラウンディングソースとクエリをマークするには、入力タグと同じ方法で機能する 2 つのタグを指定します。これらのタグは amazon-bedrock-guardrails-groundingSource_xyzamazon-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 を使用したコンテキストグラウンディングチェックの呼び出し

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"], } } }, ], } ]

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

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

ApplyGuardrail API を使用したコンテキストグラウンディングチェックの呼び出し

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 タグでマークされたコンテンツが調査されます。

コンテキストグラウンディングチェックの詳細については、「コンテキストグラウンディングチェックを使用する」を参照してください。