逆向工程:ChatGPT 的記憶是如何工作的
這篇文章是名為eric 工程師對ChatGPT記憶系統的深度逆向工程和技術實現推測。它詳細拆解了“可保存記憶”和包含“當前會話歷史”、“對話歷史”、“用戶洞察”三個子系統的“聊天歷史”,分析了它們的工作原理、可能的實現方案(如向量數據庫、聚類算法),并探討了這些記憶系統如何顯著提升ChatGPT的用戶體驗,認為“用戶洞察”是體驗提升的關鍵。
文章深度剖析了“用戶洞察”(User Insights)高級記憶系統,分析了ChatGPT如何從你的多輪對話中自動學習、總結你的專業背景(如對Rust編程的深入理解)、知識領域乃至溝通偏好,并附上置信度和時間范圍,悄然注入后續對話的上下文中。這正是ChatGPT能提供“千人千面”且高度相關回復的核心秘密。
地址:https://macro.com/app/md/54115a42-3409-4f5b-9120-f144d3ecd23a
原文很長,這里做一個重點梳理。
ChatGPT的記憶系統:不止一種,而是一套組合拳
Eric發現,ChatGPT的記憶并非單一系統,而是主要由兩大部分構成:“可保存記憶(Saved Memory)”和“聊天歷史(Chat History)”。
可保存記憶 (Saved Memory)
這個比較好理解,就是用戶可以主動控制、讓ChatGPT記住一些關于你的事實。比如你可以明確告訴它:“記住,我喜歡簡潔的技術解釋”,或者“記住,我是個素食主義者”。這些信息會被ChatGPT存起來,并在后續對話中作為背景知識(注入系統提示)使用。用戶還可以通過一個簡單的界面查看和刪除這些記憶條目。
有趣的是,這個系統在去重和矛盾檢測方面做得比較“粗放”,即使是高度相關的信息,也可能作為獨立的記憶條目共存。
聊天歷史 (Chat History):復雜且強大的“幕后功臣”
這部分就厲害了。雖然名字叫“聊天歷史”,但Eric通過實驗發現,它實際上可能包含了三個子系統,并且是提升助手響應質量的主要功臣。
? 當前會話歷史 (Current Session History): 這部分記錄了用戶在其他對話中最近發送的少量消息(比如過去一天內,少于10條)。這使得ChatGPT能捕捉到你最近的一些零散想法或上下文,盡管Eric表示在實際使用中不太容易察覺到這個系統的作用。
? 對話歷史 (Conversation History): 這是真正的“聊天記錄”精華。ChatGPT能夠從過去的對話中提取相關上下文,甚至能直接引用你在其他對話中發送過的消息!實驗表明,它能準確引用長達兩周前的消息。超過兩周后,雖然不能精確引用,但也能提供消息的摘要。這暗示著消息檢索系統同時基于對話摘要和消息內容進行索引。不過,ChatGPT自身的回復,引用準確性似乎要差一些,要么是沒存,要么是存得更粗略。
? 用戶洞察 (User Insights): 這才是重量級選手,堪稱“可保存記憶”的自動化、高級版。根據Eric“套”出來的ChatGPT上下文信息,這些洞察是這樣的格式:
> “用戶在Rust編程方面擁有豐富的經驗和知識,尤其是在異步操作、線程和流處理方面”
> “用戶在2024年底至2025年初的幾次對話中,多次詢問關于Rust編程的詳細問題,包括異步行為、trait對象、serde實現和自定義錯誤處理”
> “置信度=高”
看到沒?這些洞察是跨多個對話生成的,還帶有時間范圍和置信度!置信度可能代表了用于生成該洞察的消息向量的相似度或數量。這些洞察的生成,顯然依賴于一個比兩周直接引用窗口更大的數據集。
技術實現猜想:向量數據庫、聚類與LLM的巧妙配合
Eric作為工程師,自然會思考這些功能背后可能的技術實現。
可保存記憶: 可能通過一個類似“bio”工具的函數實現。用戶說“記住XX”,就調用這個工具,LLM將用戶消息轉化為事實列表,進行簡單的檢查后存入數據庫。這些事實隨后會被注入到系統提示中。
當前會話歷史: 實現起來相對簡單,可能就是對聊天消息表按時間篩選用戶最近的消息。
對話歷史: 這部分就復雜了。Eric推測使用了向量數據庫。消息被嵌入(embedding)后存入,一個庫按消息內容索引,另一個按對話摘要索引。當用戶發送新消息時,系統會查詢這兩個向量空間,找出兩周內的相似內容。對于更早的對話,則可能查詢一個存儲了對話摘要和消息摘要的第三個向量空間。
用戶洞察: 這是最復雜也最核心的部分。Eric認為這可能是一個批處理任務,比如每周運行一次的定時任務(cron job):
找出過去一周活躍的用戶。
對每個用戶運行一個“洞察更新”程序。
這個程序的核心可能是對用戶的消息歷史(嵌入表示)進行**聚類分析**(比如k-NN算法),目標是找到一些有意義的消息簇。
然后,將每個簇內的消息文本喂給一個LLM,用特定提示詞(prompt)讓LLM生成洞察摘要,并附上時間戳和置信度。
最后,這些洞察被存起來,并在用戶與ChatGPT對話時加載到上下文中。
為什么ChatGPT用起來那么爽?
通過ChatGPT平臺使用模型,體驗遠超直接調用API,這幾乎是共識。除了提示工程的優化,記憶系統絕對是幕后功臣。
可保存記憶最直接,用戶主動定制,讓ChatGPT更“合身”。缺點是,不那么懂技術的用戶可能不知道怎么用。
用戶洞察彌補了這個不足。它自動學習用戶的偏好和知識背景(比如Eric的洞察顯示他懂Rust,喜歡技術性解釋),從而讓ChatGPT的回答更符合用戶的“胃口”,避免雞同鴨講,減少溝通成本。Eric甚至認為,用戶洞察系統貢獻了80%以上的體驗提升!
當前會話歷史理論上能讓新對話更快進入狀態,但實際感知不強。
對話歷史則賦予了ChatGPT一種“人類對話者”應有的上下文感知能力,避免重復和矛盾。