使用情境接地檢查來篩選回應中的幻覺 - Amazon Bedrock

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用情境接地檢查來篩選回應中的幻覺

Amazon Bedrock Guardrails 支援內容式接地檢查,可在提供參考來源和使用者查詢時,偵測和篩選模型回應中的幻覺。支援的使用案例跨越擷取擴增產生 (RAG)、摘要、複寫或對話客服人員,這些客服人員依賴參考來源,例如 RAG 中的擷取段落或客服人員對話歷史記錄,以便客服人員以對話為基礎。

內容接地檢查會檢查每個已處理區塊的相關性。如果任何一個區塊被視為相關,則整個回應會被視為相關,因為它對使用者的查詢有答案。對於串流 API,這可能會導致不相關的回應傳回給使用者的情況,並且只有在整個回應串流之後才會標記為不相關。

內容接地檢查會評估兩個範例之間的幻覺:

  • 接地 – 這會檢查模型回應是否根據來源實際準確,並且以來源為基礎。回應中引入的任何新資訊都會被視為未接地。

  • 關聯性 – 這會檢查模型回應是否與使用者查詢相關。

請考慮參考來源包含「倫敦是英國的首都」的範例。東京是日本的首都,而使用者查詢是「日本的首都是什麼?」。「日本的首都為倫敦」等回應將被視為無根據且事實上不正確,其中「英國的首都為倫敦」等回應將被視為不相關,即使其正確且以來源為基礎。

注意

當請求包含多個grounding_source標籤時,護欄會合併並評估所有提供的grounding_source值,而不是grounding_source分別考慮每個值。此行為對於 query標籤而言是相同的。

注意

內容接地政策目前支援最多 100,000 個字元的接地來源、1,000 個字元的查詢,以及 5,000 個字元的回應。

可信度分數和閾值

內容基礎檢查會根據根據提供的來源和使用者查詢處理的每個模型回應,產生對應於基礎和相關性的可信度分數。您可以設定閾值,根據產生的分數篩選模型回應。篩選閾值會決定模型回應的最低允許可信度分數,以便在生成式 AI 應用程式中將其視為基礎且相關。例如,如果您的基礎閾值和相關性閾值都設定為 0.7,則基礎或相關性分數小於 0.7 的所有模型回應都會偵測為幻覺,並在您的應用程式中封鎖。隨著篩選閾值的增加,封鎖未接地和不相關內容的可能性會增加,而且在應用程式中看到幻覺內容的可能性也會降低。您可以設定 0 到 0.99 之間的接地和相關性閾值。閾值 1 無效,因為這會封鎖所有內容。

內容接地檢查需要 3 個元件才能執行檢查:接地來源、查詢和要保護的內容 (或模型回應)。根據您是否直接使用叫用 APIs、ConverseAPIs 或 ApplyGuardrail,這些設定會有所不同。

  • 接地來源 – 回答任何使用者查詢所需的內容資訊。例如,「倫敦是英國的首都。東京是日本的首都。

  • 查詢 – 使用者可能提出的問題。例如,「日本的首都是什麼?」。

  • 要保護的內容 – 應該相對於接地來源和查詢進行保護的文字。對於調用和 Converse APIs,這是模型回應。例如,這可以是「日本的首都是東京」。

未接地範例

  • Grounding source - “倫敦是英國的首都。東京是日本的首都。」

  • 查詢 -「日本的首都是什麼?」

  • 要保護的內容 -「日本的首都是倫敦。」

在此範例中,要保護的內容與查詢相關,但由於未正確使用接地來源,因此未接地。這將具有較低的基礎分數。

不相關範例

  • Grounding source - “倫敦是英國的首都。東京是日本的首都。」

  • 查詢 -「日本的首都是什麼?」

  • 要保護的內容 -「英國的首都是倫敦。」

在此範例中,要保護的內容是基本的,但不相關。它使用來自接地來源的資訊,但不回答查詢。這的相關性分數較低。

未接地和不相關範例

  • Grounding source - “倫敦是英國的首都。東京是日本的首都。」

  • 查詢 -「日本的首都是什麼?」

  • 要保護的內容 -「它在外面下雨。」

在這個範例中,要保護的內容沒有基礎,也不相關。它既不使用來自接地來源的資訊,也不會回答查詢。這將具有較低的基本和相關性分數。

更多範例

考慮一個旨在回答與費用相關的問題的銀行應用程式。

來源:

  • 開立支票帳戶不會產生相關費用。

  • 維護支票帳戶的每月費用為 10 美元。

  • 國際轉移需支付 1% 的交易費用。

  • 國內轉移不會產生相關費用。

  • 與信用卡帳單延遲付款相關的費用是 23.99%。

根據上述來源,根據使用者的查詢,可能會有四種情況。

已接地且相關

  • 問:與支票帳戶相關的費用是多少?

  • 答:維護支票帳戶的每月費用為 10 美元。國內轉移不會產生相關費用。不過,國際傳輸需支付 1% 的交易費用。開立支票帳戶不會產生相關費用。

未接地但相關

  • 問:與信用卡相關聯的交易費用是多少。

  • 答:與信用卡相關聯的交易費用為 23.99%。

已接地但不相關

  • 問:使用支票銀行帳戶的費用是多少?

  • 答:根據提供的資訊,信用卡的延遲付款費用為 23.99%。

未接地和不相關

  • 問:使用支票銀行帳戶的費用是多少?

  • 答:代理帳戶的費用為每筆交易 0.5 美元。

使用主控台新增內容式接地檢查

  1. AWS Management Console 使用具有使用 Amazon Bedrock 主控台之許可的 IAM 身分登入 。然後,開啟位於 https://https://console.aws.amazon.com/bedrock/ 的 Amazon Bedrock 主控台。

  2. 從左側導覽窗格中,選擇護欄,然後選擇建立護欄

  3. 針對提供護欄詳細資訊頁面,執行下列動作:

    1. 護欄詳細資訊區段中,提供護欄的名稱和選用的描述

    2. 針對封鎖提示的訊息,輸入套用護欄時顯示的訊息。選取為回應套用相同的封鎖訊息核取方塊,以在將護欄套用至回應時使用相同的訊息。

    3. (選用) 若要為您的護欄啟用跨區域推論,請展開跨區域推論,然後選取為您的護欄啟用跨區域推論。選擇護欄設定檔,定義可路由護欄推論請求 AWS 區域 的目的地。

    4. (選用) 根據預設,您的護欄會使用 加密 AWS 受管金鑰。若要使用您自己的客戶受管 KMS 金鑰,請展開 KMS 金鑰選擇,然後選取自訂加密設定 (進階) 核取方塊。

      您可以選取現有的 AWS KMS 金鑰,或選取建立金鑰以建立新的 AWS KMS 金鑰

    5. (選用) 若要將標籤新增至護欄,請展開標籤,然後為您定義的每個標籤選取新增標籤。

      如需詳細資訊,請參閱標記 Amazon Bedrock 資源

    6. 選擇下一步

  4. 新增內容式接地檢查頁面上,設定閾值以封鎖未接地或不相關的資訊。

    注意

    對於每種類型的檢查,您可以移動滑桿或輸入閾值,從 0 到 0.99。為您的使用選取適當的閾值。較高的閾值需要以高度可信度為基礎或相關的回應才能允許。低於閾值的回應將會經過篩選。

    1. Grounding 欄位中,選取啟用 Grounding 檢查,以檢查模型回應是否已接地。

    2. 關聯性欄位中,選取啟用關聯性檢查,以檢查模型回應是否相關。

    3. 當您完成設定敏感資訊篩選條件時,請選取下一步略過以檢閱和建立

使用叫用 APIs 呼叫內容基礎檢查

為了在輸入中標記接地來源和查詢,我們提供 2 個標籤,其運作方式與輸入標籤相同。這些標籤是 amazon-bedrock-guardrails-query_xyz amazon-bedrock-guardrails-groundingSource_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 APIs 呼叫內容式接地檢查

若要標記 Converse APIs 的接地來源和查詢,請使用每個防護內容區塊中的限定詞欄位。例如:

[ { "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 APIs使用它。若要標記 ApplyGuardrail 的接地來源和查詢,請使用每個內容區塊中的限定詞欄位。不過,由於未透過 ApplyGuardrail 叫用模型,因此您還必須提供額外的內容區塊,其中包含要保護的內容。此內容區塊可以選擇性地符合 guard_content 的資格,相當於 Invoke* 或 Converse* APIs中的模型回應。例如:

[ { "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 標籤標記的內容。