View a markdown version of this page

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

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

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

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

コンテキストグラウンディングチェックでは、処理された各チャンクの関連性をチェックします。いずれかのチャンクが関連していると見なされる場合、ユーザーのクエリに対する回答があるため、レスポンス全体が関連していると見なされます。ストリーミング 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 ドルです。

コンソールでコンテキストグラウンディングチェックを追加する

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

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

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

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

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

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

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

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

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

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

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

  4. コンテキストグラウンディングチェックを追加」 ページで、根拠のない情報または無関係な情報をブロックするようにしきい値を設定します。

    注記

    チェックのタイプごとに、スライダーを移動したり、しきい値を 0 から 0.99 に入力したりできます。使用に適したしきい値を選択します。しきい値が高いほど、レスポンスに求められるグラウンディングと関連性の信頼度が高くなります。しきい値を下回るレスポンスはフィルタリングされます。

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

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

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

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

入力内でグラウンディングソースとクエリをマークするには、入力タグと同じように機能する次のタグを使用します。これらのタグは amazon-bedrock-guardrails-groundingSource_xyzおよび でamazon-bedrock-guardrails-query_xyzxyzはタグサフィックスです。例えば、次のようになります。

{ "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タグと一緒に使用できます。groundingSource および query タグ内のコンテンツは、コンテキストグラウンディング (単語フィルター、トピックフィルター、コンテンツフィルター、機密情報検出) 以外のポリシー評価から除外されます。

残りのポリシーの動作は、guardContentタグを使用するかどうかによって異なります。

  • guardContent タグなし – 他のポリシーではデフォルトの動作が使用されます。システムプロンプトは調査されず、メッセージは調査されます。

  • guardContent タグ付き – その他のポリシーでは、guardContentタグ内のコンテンツのみが調査されます。タグ外のコンテンツ (タグなしテキスト) および groundingSourceまたは query タグ内のコンテンツはスキップされます。

グラウンディングソースまたはクエリコンテンツを残りのポリシーでも評価するには、コンテキストグラウンディングタグをguardContentタグ内にネストします。

<amazon-bedrock-guardrails-guardContent_xyz><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-guardContent_xyz> <amazon-bedrock-guardrails-query_xyz>What is the capital of Japan?</amazon-bedrock-guardrails-query_xyz>

この例では、グラウンディングソースコンテンツはコンテキストグラウンディングリファレンスソースとして使用され、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"], } } }, ], } ]

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

コンテキストグラウンディング以外のポリシーの動作は、各guardContentブロックに割り当てられた修飾子によって異なります。

  • ["grounding_source"] – コンテンツはコンテキストグラウンディングリファレンスソースとしてのみ使用されます。他のポリシーでは評価されません。

  • ["query"] – コンテンツはコンテキストグラウンディングユーザークエリとしてのみ使用されます。他のポリシーでは評価されません。

  • ["guard_content"] – コンテンツは、コンテキストグラウンディングチェック (保護するコンテンツとして) と他のすべてのポリシーによって評価されます。

  • 修飾子なし (非修飾) – コンテンツは、コンテキストグラウンディングチェック (保護するコンテンツとして) および他のすべてのポリシーによって評価されます。

  • ["grounding_source", "guard_content"] – コンテンツは、コンテキストグラウンディングリファレンスソースとして使用され、他のポリシーによって評価されるロールの両方を提供します。

  • ["query", "guard_content"] – コンテンツは、コンテキストグラウンディングクエリとして使用され、他のポリシーによって評価されるロールの両方を提供します。

グラウンディングソースまたはクエリコンテンツを他のガードレールポリシーでも評価する場合は、コンテキストグラウンディングguard_content修飾子とともに修飾子リストに を追加します。

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

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

修飾子がポリシー評価に与える影響

grounding_source または query 修飾子を持つコンテンツブロックは、コンテキストグラウンディングチェックによってのみ評価されます。これらのブロックは、他のすべてのガードレールポリシー評価 (単語フィルター、トピックフィルター、コンテンツフィルター、機密情報検出、プロンプト攻撃検出) から除外されます。

コンテキストグラウンディングチェックと他のガードレールポリシーの両方でコンテンツブロックを評価するには、両方の修飾子を一緒に使用します。例えば、コンテンツブロックを他のすべての設定済みポリシーの対象となるグラウンディングソースとしてマーク["grounding_source", "guard_content"]するように を指定します。

コンテキストグラウンディング以外のポリシーでコンテンツを評価するには、少なくとも 1 つのコンテンツブロックが非修飾であるか、 で明示的に修飾されている必要がありますguard_content。コンテンツブロックに qualifiersフィールドがない場合、コンテンツブロックは修飾されません。

次の表は、各修飾子の組み合わせがポリシー評価にどのように影響するかをまとめたものです。

修飾子 コンテキストグラウンディングチェック その他のガードレールポリシー

grounding_source

評価済み (リファレンスとして)

未評価

query

評価済み (クエリとして)

未評価

guard_content

評価済み (レスポンスとして)

評価済み

修飾子なし (非修飾)

評価済み (レスポンスとして)

評価済み

["grounding_source", "guard_content"]

評価済み (リファレンスとして)

評価済み

["query", "guard_content"]

評価済み (クエリとして)

評価済み