ChatGPT的記憶機(jī)制被公開了
ChatGPT新版記憶功能居然被民間大佬逆向工程了!
能引用歷史記錄,甚至還能悄悄藏個(gè)人資料?
最近OpenAI推出了一項(xiàng)名為聊天歷史記錄的額外記憶功能,允許ChatGPT引用歷史對(duì)話以進(jìn)行個(gè)性化交互。
相較于原有的保存記憶功能,新功能更私人、更懂你。

相關(guān)功能默認(rèn)關(guān)閉,需要用戶自行在“設(shè)置->個(gè)性化->參考聊天記錄”中啟用。

非全面開放、無法通過API供開發(fā)者使用,于是各路技術(shù)大佬開始著手破解起新記憶功能的具體機(jī)制和技術(shù)實(shí)現(xiàn)路徑,甚至披露了連官方都沒有透露的聊天記錄系統(tǒng)的三大子系統(tǒng)細(xì)節(jié)。

那記憶功能到底是怎么工作的呢?結(jié)合多位大佬的分析,我們總結(jié)如下:
記憶系統(tǒng)是如何工作的
據(jù)官網(wǎng)介紹,目前已知存在兩種記憶功能:參考保存記憶和參考聊天記錄。

但在具體實(shí)驗(yàn)中發(fā)現(xiàn),聊天記錄系統(tǒng)實(shí)際上可以細(xì)分為當(dāng)前對(duì)話歷史記錄、對(duì)話歷史記錄和用戶洞察三個(gè)子系統(tǒng)。
接下來我們依次進(jìn)行單獨(dú)闡述。
保存記憶系統(tǒng)
首先是大家最熟悉的保存記憶系統(tǒng),簡(jiǎn)單、用戶可控,用以保存用戶自定義信息,例如你的姓名、喜歡的顏色或飲食偏好。
這些信息會(huì)被引入系統(tǒng)提示,用戶需要使用類似“Remember that I …”的提示明確要求ChatGPT記住。此外還可以通過用戶界面查看和刪除信息。
具體的實(shí)現(xiàn)過程如下:
- 由于ChatGPT通過bio工具保存記憶,可以使用以下代碼創(chuàng)建工具的合理近似值:

- 將其定義為LLM調(diào)用,以接受用戶消息和現(xiàn)有事實(shí)列表,然后返回新事實(shí)列表或拒絕,此外需要進(jìn)行測(cè)試和迭代以確保行為正確。

- 以上便完成了用戶信息到系統(tǒng)提示的注入。另外如果想要實(shí)現(xiàn)與ChatGPT的功能對(duì)等,還可以再構(gòu)建一個(gè)簡(jiǎn)單的UI來檢查和刪除這些信息。
聊天記錄系統(tǒng)
而新功能聊天記錄系統(tǒng)實(shí)際要復(fù)雜得多,且很有可能在助手響應(yīng)速度的提升中發(fā)揮重要作用。
- 當(dāng)前對(duì)話歷史記錄
這是用戶在其他對(duì)話中發(fā)送的近期消息的簡(jiǎn)單記錄,小到只包含最近一天的信息。
同時(shí),由于該系統(tǒng)和對(duì)話RAG系統(tǒng)都可能將用戶的直接引用內(nèi)容添加到模型上下文中,從而難以界定信息來源。
它可以直接通過過濾ChatMessage按時(shí)間排序,并設(shè)置有消息限制的用戶消息表來輕松實(shí)現(xiàn)。
- 對(duì)話歷史記錄
該系統(tǒng)包含先前對(duì)話的相關(guān)上下文,直接援引其他對(duì)話中的信息,提供更簡(jiǎn)短但不具體的舊對(duì)話背景。
但ChatGPT無法正確維護(hù)消息順序,也無法在明確的時(shí)間范圍內(nèi)回憶,例如:“引用在過去一小時(shí)內(nèi)發(fā)送的所有消息”,因此它應(yīng)當(dāng)是通過對(duì)話摘要和消息內(nèi)容進(jìn)行消息檢索。
于是據(jù)推測(cè),在該系統(tǒng)中很有可能存在一個(gè)用戶查詢列表,用來存儲(chǔ)整個(gè)對(duì)話摘要索引的匯總。
它的技術(shù)實(shí)現(xiàn)過程為:
- 首先配置兩個(gè)向量空間,其索引分別為message-content和conversation-summary。

- 將發(fā)送的信息插入到message-content向量空間,當(dāng)對(duì)話處于非活動(dòng)狀態(tài)一段時(shí)間后,再將用戶信息添加到conversation-summary空間,另外配置一個(gè)由摘要索引并包含摘要的第三個(gè)向量空間。

在對(duì)話創(chuàng)建后的兩周內(nèi),對(duì)話摘要和消息將要插入此空間。
當(dāng)用戶發(fā)送消息時(shí),就會(huì)嵌入其中,并在兩周的時(shí)間范圍內(nèi)對(duì)兩個(gè)空間進(jìn)行相似性過濾查詢。
此外同時(shí)還會(huì)查詢摘要空間,過濾超過兩周的信息以避免重復(fù),最后將結(jié)果全部放入系統(tǒng)提示。
- 用戶洞察
用戶洞察是保存記憶的更高級(jí)、更隱晦的版本,源自對(duì)多個(gè)對(duì)話的分析,例如:
用戶在 Rust 編程方面擁有豐富的經(jīng)驗(yàn)和知識(shí),特別是在異步操作、線程和流處理方面;用戶在 2024 年末至 2025 年初的幾次對(duì)話中詢問了有關(guān) Rust 編程的多個(gè)詳細(xì)問題,包括異步行為、特征對(duì)象、serde 實(shí)現(xiàn)和自定義錯(cuò)誤處理。;置信度 = 高。
用戶洞察通過在消息歷史空間中搜索鄰近向量并生成摘要來創(chuàng)建,彼此之間各不相同,并標(biāo)注有并不固定的時(shí)間范圍和置信度(指示消息向量的相似性),且很可能引用的是摘要存儲(chǔ)嵌入向量或完整消息嵌入向量的集合。
據(jù)推測(cè),ChatGPT的用戶洞察實(shí)現(xiàn)方式很可能基于RAG實(shí)施方案中所描述的一個(gè)或多個(gè)向量空間,使用某種cron工作進(jìn)行批處理完成更新。
下面介紹一個(gè)較為簡(jiǎn)單的實(shí)現(xiàn)方式:
- 配置一個(gè)每周運(yùn)行一次的lambda。
- 查詢ChatMessage表以查找上周發(fā)送消息的用戶列表。
- 對(duì)以上用戶都運(yùn)行一個(gè)insightUpdate lambda
此外考慮到LLM環(huán)境限制,洞察的數(shù)量需要保持在一定范圍內(nèi)最大限度,因此可以額外進(jìn)行一個(gè)聚類優(yōu)化實(shí)驗(yàn),找到小于k的聚類數(shù)量,并保持較低的聚類內(nèi)方差,排除異常值。

找到聚類后,即可運(yùn)行LLM生成洞察,最后將其存儲(chǔ)在表中并附在模型上下文內(nèi)。

首波記憶功能體驗(yàn)反饋來了
在記憶新功能推出后,網(wǎng)友和技術(shù)專家們第一時(shí)間進(jìn)行了體驗(yàn),但感受卻是兩極分化嚴(yán)重。


好的方面,記憶系統(tǒng)幫助ChatGPT平臺(tái)上的OpenAI模型,提供比API更好的用戶體驗(yàn)。
由于系統(tǒng)允許用戶自行設(shè)置偏好,并量身定制響應(yīng),可以有效節(jié)省內(nèi)存。
詳細(xì)的洞察系統(tǒng)消除了查詢歧義,并最大程度地理解用戶需求;當(dāng)前對(duì)話歷史記錄讓ChatGPT更理解用戶近期行為;而對(duì)話歷史記錄則有助于避免重復(fù)、矛盾的互動(dòng)。
其中據(jù)推測(cè)約80%的性能提升都來自于用戶洞察系統(tǒng)。
但更多的網(wǎng)友反饋卻是這個(gè)功能它不工作!



以及超多的bug:
例如無法保存超過64個(gè)單詞到內(nèi)存中,即使顯示它已被保存。

例如依舊嚴(yán)重的幻覺。

還有更多值得修改的建議。




































