iT邦幫忙

2025 iThome 鐵人賽

DAY 19
0
生成式 AI

可愛又迷人的提示詞工程 Prompt Engineering系列 第 19

Day19. 持久化與遺忘機制

  • 分享至 

  • xImage
  •  

我們在上下文的容量限制與策略設計有提到 Token 的限制是每個模型不可違背的規則,所以我們總希望在有限的 Token 條件下,可以保存長期有用的記憶,又能避免無關的資訊一直變多。

如果擁有一些機制與策略做應對,就不用讓過多的歷史資料浪費運算資源,也會降低模型的干擾判斷,這就是持久化與「遺忘機制的重要性。簡單來說,持久化讓 AI 記得該記的事,遺忘則讓它忘掉該忘的事。兩者相輔相成,缺一不可。

長對話中的記憶管理問題

當對話持續進行,上下文就會像滾雪球一樣越積越多,若缺乏有效的管理機制,很快就會遇到瓶頸。

記憶飽和與干擾

一旦上下文累積過多無用的資訊,將會導致以下問題:

  • 關鍵訊息被稀釋:重要的指令或資訊被淹沒在大量的歷史對話中,導致模型忽略重點
  • 對話焦點偏離:模型可能被早期的、已不相關的話題帶偏,無法專注於當前的任務
  • 處理效率降低:過長的上下文會顯著增加模型的運算負擔,導致回應延遲

此外,一個更深層的問題是當模型學習新的資訊時,可能會突然覆蓋或破壞先前已學會的知識。在對話系統中,這會導致模型對新舊資訊產生混淆,無法做出一致性的判斷。

記憶不一致與重複矛盾

在長對話中,使用者的觀點或提供的資訊可能會改變。例如,使用者一開始說我喜歡藍色,後來又提到綠色是我最愛的顏色。如果系統只是單純地累積所有訊息,就會同時存在兩條矛盾的記憶,導致後續的回應產生混淆。

記憶更新與版本管理

有效的記憶管理系統必須決定如何處理新的資訊。這涉及到幾個決策點:

  • 覆蓋:用新資訊完全取代舊的相關記憶
  • 附加:在舊記憶的基礎上,補充新的內容
  • 版本化:將新舊資訊都保留下來,但標註不同的時間戳或版本,供模型參考

遺忘機制與剪枝策略

為了解決上述問題,我們可以設計多種策略,讓系統能夠主動或被動地刪除、壓縮不再重要的記憶。以下介紹幾種常見且有效的作法。
https://ithelp.ithome.com.tw/upload/images/20251002/20120631qSiPPQg6n7.png

時間衰減

這個策略的核心思想很簡單,就是記憶會隨著時間流逝而變得模糊。

系統會為每一條記憶標記時間戳記,其重要性權重會隨著時間推移而逐漸衰減。當權重低於某個預設的門檻時,該記憶就會被自動刪除或歸檔。這完美地模擬了人類記憶的遺忘曲線,有興趣的朋友可以查查艾賓浩斯遺忘曲線,非常適合用於學習唷。

最近最少使用

這個 策略源自系統的快取管理機制,意思是如果一個記憶在最近很少被使用,那它在未來被使用的機率也很低。系統會追蹤每條記憶被檢索或引用的頻率,當記憶庫容量達到上限時,會優先刪除那些最久未被使用的記憶。

關聯性評分

這是一種更動態的評估方式。系統會根據當前的對話主題或任務,為每一條歷史記憶計算一個關聯性分數。這個分數綜合了多種維度,例如語義相似度、使用頻率、時間遠近...等,當需要清理記憶體時,系統會淘汰分數最低的記憶。

固定滑動窗口

這是一種簡單粗暴但最有效的策略,我們讓系統保留最近的 N 條對話紀錄或記憶。一旦有新的對話產生,最舊的一條紀錄就會被自動捨棄。雖然這種方法可能會丟失重要的長期記憶,但對於許多不需要深度歷史背景的應用來說,已經足夠。

濃縮摘要替代

與其直接刪除舊記憶,不如將其濃縮成精華。系統可以定期將一段冗長的對話歷史,透過語言模型自身的能力,自動生成一段簡潔的摘要。這個摘要會取代原始的詳細記錄,從而釋放出大量的上下文空間,同時保留了核心資訊。

多階層記憶分類與冷熱分層

我們可以將記憶比喻為儲存資料,依據其重要性與存取頻率,分為不同的層級:

  • 熱記憶:最重要、最頻繁使用的核心資訊,常駐於模型的上下文視窗中
  • 溫記憶:次要但仍可能相關的資訊,以摘要形式保存
  • 冷記憶:長期歸檔的歷史資料,平時不載入,僅在特定檢索需求時才被調用

模型如何選擇性遺忘以維持效能

更高階的記憶管理,是讓模型本身具備選擇性遺忘的能力,而不僅僅依賴外部的規則。

主動遺忘

有些人覺得模型應該像人腦一樣,能夠主動判斷哪些記憶不再重要並將其遺忘。這種刻意遺忘的能力,有助於模型擺脫過時資訊,提升對新情境的適應性與靈活性。

結合模型內部機制

這是在更底層的技術上實現遺忘。例如如何直接對模型的內部參數進行剪枝,動態移除那些不再活躍或貢獻度低的連結,從根本上做到忘記特定資訊的效果。

倒退學習 / 忘卻學習

在某些特定情境下,我們需要模型完全、徹底地忘記某些資訊,例如涉及使用者隱私的敏感資料,或是因應法規要求需要刪除的內容。這就需要忘卻學習的技術,透過特定的演算法調整模型權重,使其狀態回復到從未學習過該資訊的樣子。

記憶重審與重訪

為了防止重要記憶因時間流逝而被遺忘,系統可以設計一個複習機制。我們可以定期重訪那些被標記為高價值的記憶,強化模型對它們的印象。

例如,Think-in-Memory 框架提出模型不應只儲存對話原文,而應儲存從中提煉出的歸納性思緒,讓模型在重訪時能更好維持邏輯的一致性。

提示詞範例

我們可以透過提示詞,引導模型執行記憶清理或壓縮的任務。

記憶清理指令

這是目前的記憶庫摘要 (包含 20 條記憶)。
請幫我刪除與主題「健身」、「飲食」無關,且超過 30 天未被使用的記憶條目。
最後,請回傳更新後的記憶庫摘要,以及被刪除的項目清單。

記憶摘要替代

以下是長度為 1000 Tokens 的對話歷史紀錄。
請將其濃縮為一段 200 Tokens 以內的摘要,並保留其中最重要的三到五個關鍵記憶點。
未來,這段摘要將會取代原始的詳細記憶,納入我的永久上下文中。

重複記憶偵測與刪除

請從以下的記憶庫清單中,找出內容重複或語義高度相似的條目。
對於重複的內容,請只保留資訊最完整、最新的那一個版本,並刪除其他的冗餘版本。
最後回報更新後的記憶庫內容與被刪除的項目。

小結

上下文的持久化與遺忘機制,是上下文工程中比較複雜但關鍵的一環。

一個好的記憶系統就像大腦一樣,可以在記憶與遺忘之間取得微妙的平衡。如果沒有好的遺忘策略,系統會被沉重的歷史包袱拖垮;但如果遺忘得太多,模型又會變得健忘,無法提供連貫且個人化的體驗。

我們可以透過設計精良的時間衰減、LRU、關聯性評分、摘要替代...等策略,讓記憶庫保持在最佳狀態,並搭配主動遺忘、忘卻學習 ... 等功能,讓 AI 變得愈來愈智慧。


上一篇
Day18. 如何設計上下文的三個角色
系列文
可愛又迷人的提示詞工程 Prompt Engineering19
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言