現今的 AI 代理無法記住過去的互動。它們必須重複接收相關資訊,或從外部來源檢索,這使得它們在處理更長、更複雜的任務時效率低下。為了擴展代理的能力,我們需要一種更有效的方式來長期保留和存取資訊。

Memora 是一個可擴展的記憶系統,它透過將儲存內容(豐富的記憶內容)與檢索方式(輕量級抽象和提示錨點)分離,巧妙地平衡了抽象性與細節,大幅提升了代理在長期任務中的生產力。

Memora 在 LoCoMo 和 LongMemEval 基準測試中創下了新的最先進水準,表現優於 Mem0、RAG 和全上下文推論,同時減少了高達 98% 的上下文 token 使用量。

Memora 的論文已於 ICML 2026 發表。Memora 的程式碼可在 https://github.com/microsoft/Memora 取得。

想像一個工作場所的 AI 助理,協助你執行一個為期數個月的專案。在數週的對話中,你分享了限制、商定了里程碑、修改了截止日期,並提出了數十種利害關係人的偏好。當你之後要求它為同事起草一份更新時,它應該不僅能回憶起最新的決定,還能回溯達成該決定的過程:嘗試過什麼、排除了什麼、誰參與了討論。現今的 AI 代理在這一點上卻力不從心。

現代大型語言模型(LLM)雖然具備強大的推理能力,但它們實際上是無狀態的:每次會話都從零開始,每次冗長的對話都迫使模型重新閱讀其全部歷史,而每條新資訊要麼以原始文本形式儲存(零碎且雜亂),要麼被壓縮成模糊的摘要(精確細節遺失)。隨著 AI 助理和自主代理應用於長期部署,例如追蹤專案數月的協作助理,或是透過長期使用累積領域專業知識的研究代理,缺乏一套有原則的記憶系統已成為關鍵瓶頸。

越來越多的研究工作已開始填補這一空白。例如 Mem0 等系統從對話中提取原子事實;檢索增強生成(RAG)方法索引原始文本片段以供日後回憶;而 Zep 和 GraphRAG 等基於圖的記憶系統則透過實體關係來施加結構。這些都代表了實質性的進步,但它們都面臨著同樣的困境:現有設計在特異性(保留細緻細節)和抽象性(隨著記憶增長而有效組織)之間,存在著不可避免的權衡。Memora 的設計旨在讓代理同時擁有這兩者。

Memora 是一個專為長期 AI 代理設計的代理記憶框架。Memora 的核心洞察在於將「儲存什麼」與「如何檢索」分離。記憶內容可以保持豐富和具表達性,例如專案時間表或關於限制的多輪討論,而一個獨立、輕量級的結構層則負責索引和檢索。

其結果是一個可擴展的記憶系統:它將相關資訊整合到穩定的單元中,在需要時呈現細緻的細節,並讓代理無需重新閱讀所有內容即可瀏覽其歷史。在標準的長對話基準測試中,Memora 創下了最先進的性能,同時比將完整歷史傾倒到上下文中所消耗的 token 減少了高達 98%。

現有的記憶系統分為兩個極端。RAG 和 Mem0 等內容碎片化系統直接嵌入提取的事實或文本片段,這雖然保留了細節,但產生了脆弱、孤立的條目,失去了敘事連貫性。粗略抽象系統將經驗壓縮成簡潔的摘要,它們效率高,但摘要會剝離掉使記憶有用的限制、邊緣案例和數字細節。

基於圖的系統在內容之上增加了結構,但仍然依賴內容本身進行檢索,並且通常需要僵化的本體論,無法跨領域通用。這些方法都未能解決抽象性(保持記憶效率)和特異性(賦予記憶實用性)之間潛在的矛盾。

Memora 透過一種諧波組織來解決這種矛盾。每個記憶條目包含兩個部分:一個「主要抽象」(primary abstraction),這是一個捕捉記憶核心內容的簡短詞組(6-8 個詞),以及一個儲存豐富內容本身的「記憶值」(memory value)。關鍵在於,只有主要抽象會被嵌入用於相似性搜尋;記憶值從不直接透過其內容被檢索。

這種分離意味著關於一個不斷演變主題的新資訊會合併到現有記憶條目中,並歸於相同的主要抽象之下,而不是碎片化成一連串部分重複的內容。作為主要抽象的補充,「提示錨點」(cue anchors)是從每個記憶值中提取的簡短、具上下文意識的標籤,為相同的記憶提供了替代的存取路徑。它們作為靈活、有機生成的元數據發揮作用。

舉例來說:假設使用者說:「Dave 和 Sarah 同意將原型推遲到 4 月 1 日,試點推遲到 5 月 2 日,MVP 推遲到 5 月 30 日。」一個知識圖譜系統將需要預定義的實體類型和關係模式:人物 → 同意 → 里程碑 → 具有日期 → 日期,任何新的關係類型都需要擴展模式。

而在 Memora 中,「Dave 和 Sarah 同意更新 Orion 專案時間表」這個主要抽象作為規範的存取點,而「Dave Orion 專案更新」、「Orion 專案原型排程」和「Orion 專案試點時間」等提示錨點則提供了替代的檢索路徑,所有這些都無需預設本體論。

之後關於 Dave 最近貢獻、原型排程或試點時間的查詢,都可以透過不同的提示錨點導向相同的底層記憶,並在記憶值中保留完整的細節。

除了這種表示方式,Memora 還引入了一個「策略引導檢索器」(policy-guided retriever),它將記憶存取視為一個主動的推理過程。該策略檢索器不是一次性返回前 k 個語義相似的項目,而是迭代地精煉其查詢,透過提示錨點擴展以浮現相關但不相似的記憶,並決定何時停止。

這使得代理能夠導航到純語義搜尋可能遺漏的相關非局部上下文,像人類回憶相關事件一樣追蹤多跳依賴關係。檢索策略可以透過強大的 LLM 手動提示,或透過強化學習蒸餾成一個小得多的模型。

我們在兩個長上下文基準測試中評估了 Memora:LoCoMo(對話平均 600 輪)和 LongMemEval(上下文長度達 115,000 token)。Memora 在兩者上都達到了新的最先進性能:在 LoCoMo 上達到 86.3% 的 LLM 判斷準確度,在 LongMemEval 上達到 87.4%,表現優於 RAG、Mem0、Nemori、Zep、LangMem,甚至全上下文推論。

在多跳推理方面,差距最大,Memora 透過遍歷提示錨點的能力帶來了最大的效益。效率方面的表現同樣令人驚訝:Memora 每場對話儲存的記憶條目約是 Mem0 的一半(344 對 651),並且相對於全上下文推論,token 消耗減少了高達 98%。更少的閱讀、更少的儲存,卻能獲得更好的答案。

Memora 的設計影響深遠,不僅限於基準測試性能。我們將這項工作視為邁向 AI 代理的一步,這些代理能夠與使用者維持長期協作,並在數月甚至數年內累積組織知識,而不僅僅是在單一會話中。

在此基礎上,我們正在探索幾個互補的方向。MemLoop 探討記憶系統如何從檢索和任務失敗中學習,將錯誤歸因於記憶管道的特定階段,並隨時間自我改進。延遲記憶(Deferred Memory)研究何時應推遲記憶的建構,直到有足夠的上下文、證據或未來效用可用時再進行,而不是過早地決定儲存什麼。

群組記憶(Group Memory)則探討知識如何在團隊和代理之間共享,同時保留來源、存取權限、所有權和敏感上下文。我們隨論文發布了程式碼,並邀請社群在此表示法上進行建構,探索當 AI 代理不再是無狀態時,可能實現的各種可能性。

我們要感謝 Shantanu Dixit(研究員)、Paramaguru Harimurugan(研究員)、Rujia Wang、Victor Rühle 和 Robert Sim 對此專案的貢獻。