總結:我們沒有使用微調,而是結合使用提示鏈和預處理/后處理來將幻覺發生率降低一個數量級,但這確實需要對 OpenAI 進行 3-4 倍的調用。還有很大的改進空間!
使用 GPT 等大型語言模型面臨的最大挑戰之一是它們傾向于捏造信息。
這對于生成用于創意寫作或頭腦風暴會議的文本等用例來說可能沒什么問題,但當輸出用于客戶支持等商業應用時,這可能是災難性的。幻覺或虛假信息的產生在這些情況下尤其有害,并可能導致嚴重后果。
即使一次虛假信息的產生也可能損害公司的聲譽、導致法律責任并損害客戶的利益。
有幾種方法可以解決這一挑戰。
一種常用方法是使用微調來提高模型在特定領域數據集上的準確性。微調的問題在于,當你擁有多租戶 SaaS 產品時,收集特定領域的數據集很困難,因為每個客戶的用例和用戶角色都略有不同。所以我們必須找到其他方法來解決這個問題。
以下是我們目前所做的工作
提示詞鏈接(Prompt Chaining)
我們嘗試的第一件事是使用提示鏈技術將復雜的提示分解成幾個部分,并讓 GPT 在每一步“檢查其答案”。
例如,我們不是使用用戶輸入和注入的內容單獨調用 GPT,而是首先要求 GPT 評估它是否可以回答問題并證明其響應的合理性。我們目前有 3 個步驟——預處理步驟、評估步驟和響應步驟。
以下是我們在評估步驟中使用的提示示例。它只是要求 GPT 回答它是否可以根據提供的內容回答問題。"""<|im_start|>system You found the following content by searching through documentation. Use only this content to construct your response. {content}<|im_end|>
<|im_start|>user First, determine if the content found is sufficient to resolve the issue. Second, respond with a JSON in the format:
{
"content_contains_answer": boolean, // true or false. Whether the information in the content is sufficient to resolve the issue.
"justification": string // Why you believe the content you found is or is not sufficient to resolve the issue.
}
The inquiry: {inquiry}<|im_end|><|im_start|>assistant {
"content_contains_answer":<|im_end|>"""
請注意,我們要求 GPT 以 JSON 格式返回答案,并使用預期結構為助手的答案提供種子。這確保我們能夠解析響應,并且幾乎 100% 的時間都有效。
我們還注意到,content_contains_answer即使我們不使用它做任何事情,只需要求模型提供理由就可以提高其預測的準確性。你只需要叫出 GPT 的胡說八道!
這種方法將幻覺的發生率從20%降低到了5%。
后期處理
接下來幫助我們將效率從 5% 降至 2% 的是對 GPT 的輸出進行后處理。這有幾個步驟:
- 檢查 token 的 e^(logprob) 是否true低于 90%。如果是,我們重新運行評估提示并強制content_contains_answer為假。我們發現這可以減少誤報,而不會對誤報產生太大影響。
- 如果content_contains_answer為假,我們將使用返回的理由并再次調用 GPT API 來重新措辭理由以將其定位到用戶。這減少了我們最終輸出出現奇怪措辭(如“用戶應該……”)的可能性。這不完全是幻覺,也不是最佳體驗。
預處理
這是我們最近添加的步驟,使我們的幻覺率低于 2%。我們做的第一件事是讓 GPT 對用戶查詢的意圖進行分類。根據意圖,我們將在評估和響應步驟中使用不同的提示。
我們還在嘗試對用戶輸入進行額外的預處理,使其更有可能在搜索步驟中找到相關結果。這可以通過從用戶的查詢中提取實體并在稀疏嵌入上以更高的權重運行向量搜索來實現。這有助于解決技術性問題并涉及特定標記組合(如) ,因為對于這些情況,關鍵字搜索比語義搜索更有用。這一切都是通過 Pinecone 的新混合搜索功能keras.save_model實現的。
最后的想法
最后一條可能有用的提示是將內容包裝在 <Content></Content> 標簽中。這有助于 GPT 理解不同來源之間的差異,甚至返回稍后可以str.replace()使用鏈接的占位符(例如 Content1)。您還可以對注入提示的任何其他數據執行此操作。
總體而言,我們發現,結合使用提示鏈、預處理和后處理可以很好地降低幻覺風險并提高 GPT 的準確性。缺點是它需要更多的 API 調用,但隨著最近價格下降 90%,這現在非常可行。
?
歡迎你分享你的作品到我們的平臺上:www.shxcj.com 或者 www.2img.ai 讓更多的人看到你的才華。
創作不易,覺得不錯的話,點個贊吧!!!
?