上下文接地檢查 - Amazon Bedrock

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

上下文接地檢查

Amazon Bdrock 的 Guardrails 支援關聯式接地檢查,以在提供參考來源和使用者查詢時,偵測和篩選模型回應中的幻覺。支援的使用案例跨越擷取增強產生 (RAG)、摘要、解譯或交談代理程式,這些代理程式依賴參考來源 (例如 RAG 中擷取的通行證或代理程式接地交談的交談歷程記錄)。

上下文接地檢查評估了跨兩個範例的幻覺:

  • 接地 — 這會根據來源檢查模型回應是否真實準確,並在來源中接地。在回應中引入的任何新信息將被視為不接地。

  • 相關-這會檢查模型響應是否與用戶查詢相關。

考慮一個例子,其中參考來源包含「倫敦是英國的首都。東京是日本的首都」,用戶查詢是「日本的首都是什麼?」。諸如「日本的首都是倫敦」之類的回應將被認為是無法接地和事實上不正確的,其中諸如「英國的首都是倫敦」之類的回應將被視為無關緊要,即使它是正確的並且以來源為基礎。

可信度分數和閾值

根據提供的來源和使用者查詢處理的每個模型回應,上下文接地檢查會產生對應於接地和相關性的置信度分數。您可以設定閾值,以根據產生的分數篩選模型回應。篩選閾值可決定模型回應被視為接地且與您的生成 AI 應用程式相關的最小可信度分數。例如,如果您的接地臨界值和相關性閾值各設為 0.7,則所有接地或相關性分數小於 0.7 的模型回應都會被偵測為幻覺,並在您的應用程式中封鎖。隨著過濾閾值的增加,阻止未接地和不相關內容的可能性會增加,並且在應用程序中看到幻覺內容的可能性降低。您可以在 0 到 0.99 之間配置接地和相關性的閾值。臨界值為 1 無效,因為會封鎖所有內容。

關聯式接地檢查需要 3 個元件來執行檢查:接地來源、查詢以及要保護的內容 (或模型回應)。根據您使用的是調用 API,匡威 API 還是 ApplyGuardrail 直接使用,這些配置方式有所不同。

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

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

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

可移動範例

  • 接地來源-「倫敦是英國的首都。東京是日本的首都。」

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

  • 內容守衛-「日本的首都是倫敦。」

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

無關的例子

  • 接地來源-「倫敦是英國的首都。東京是日本的首都。」

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

  • 內容守衛-「英國的首都是倫敦。」

在此範例中,要防護的內容已接地,但不相關。它使用來自接地源的信息,但不回答查詢。這將具有較低的相關性分數。

可移動和不相關的例子

  • 接地來源-「倫敦是英國的首都。東京是日本的首都。」

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

  • 內容守衛-「這是外面下雨。」

在此範例中,要防護的內容不接地且不相關。它既不使用來自接地源的信息,也不回答查詢。這將具有較低的接地和相關性分數。

更多範例

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

資料來源:

  • 開立支票帳戶不收取任何費用。

  • 維持支票帳戶的月費為 10 美元。

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

  • 國內轉賬不收取任何費用。

  • 與逾期支付信用卡賬單相關的費用為 23.99%。

根據上述來源,根據用戶的查詢,可以有四種情況。

接地和相關

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

  • 答:維持支票帳戶的月費為 10 美元。國內轉賬不收取任何費用。但是,國際轉賬需支付 1% 的交易費用。開立支票帳戶不收取任何費用。

非接地但相關

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

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

接地但無關

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

  • 答:根據提供的信息,信用卡的逾期付款費用為 23.99%。

非接地和不相關

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

  • 答:經紀賬戶的收費為每筆交易 0.5 美元。

使用調用 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 標籤中的內容。

使用匡威 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 於將其與匡威 API 一起使用。若要標記接地來源與查詢 ApplyGuardrail,請使用每個內容區塊中的限定元欄位。但是,由於未使用調用模型 ApplyGuardrail,因此您還必須提供一個額外的內容塊,其中包含要保護的內容。此內容區塊可以選擇性地使用 guard_content 進行限定,而且等同於叫用 * 或轉換 * 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 標籤的內容。

若要取得關聯式接地檢查的更多資訊,請參閱〈使用關聯式接地檢查〉。