Skip to main content
Back to blog

MAGMA:AI Agents 多圖記憶架構-從便利貼到偵探白板, 閱讀筆記與批判性反思

一般分享

By 賴彥霖

Content

論文:MAGMA: A Multi-Graph based Agentic Memory Architecture for AI Agents
作者:Dongming Jiang、Yi Li、Guanpeng Li、Bingzhe Li
發表:ACL 2026 Long Papers (pp. 36848-36865)

一、問題出發:Vector Store 的尷尬

想像你問 AI 助理:「我為什麼取消登山?」

助理翻了半天,找到你買登山杖、研究登山路線,每一段都跟「登山」有關,可是都沒有回答為什麼;但真正的線索藏在更早的對話裡,你說「腳踝受傷,醫師叫我不能負重」。

這就是記憶系統尷尬的地方:東西存了,卻不一定找得到該用的那一段;向量搜尋擅長找語意相近的段落,但「相近」不等於「足以回答問題」;一條因果線,光靠相似度不一定浮得出來。

MAGMA 的核心想法:把散落的便利貼,變成一張偵探白板。
記憶不只是一堆存好的句子,還要知道誰跟誰有關、哪件事導致哪件事。

二、四張圖譜:四種顏色的毛線

MAGMA 把事件之間的關係分成四種,就像在偵探白板上用四種顏色的毛線把便利貼串起來:

圖譜

代表什麼

適合補充的資訊

Semantic(語意)

概念相近的事件,如登山杖與登山鞋

同主題、同活動、同義表達

Temporal(時間)

事件先後,如受傷在前、取消行程在後

Before/After、何時、順序

Causal(因果)

原因導致結果,如腳踝受傷導致取消登山

Why、原因鏈、行動依賴

Entity(實體)

同一實體的不同記憶,如 Alex 的音樂經歷

跨 session 追蹤同一人或物件

註:時間和因果要分開,先發生不代表造成後者,例如「早上打噴嚏、下午下雨了」,不表示打噴嚏導致下雨;四張圖也不是四個資料庫,它們共用事件,只是用不同顏色的毛線表示不同關係。

三、系統架構:三層設計

MAGMA 多圖 Agentic Memory 架構,包含 Semantic、Temporal、Causal、Entity 四種關係圖與 Adaptive Traversal

圖片來源:Jiang, D., Li, Y., Li, G., and Li, B. (2026).MAGMA: A Multi-Graph based Agentic Memory Architecture for AI Agents.Proceedings of the 64th Annual Meeting of the Association for Computational Linguistics (ACL 2026), p. 36850

架構分成三層,由下往上看:

  1. 寫入層:使用者說了一句話,先記事件、時間、向量,再排進佇列,慢慢補複雜關係。先貼便利貼,再整理毛線。

  2. 記憶庫:圖結構和向量索引一起保留。

  3. 查詢層:問題進來,找起點,沿線走,把證據整理成精簡上下文,交給 LLM 回答。

這套設計針對過度檢索(Over-fetching):找到一個相關事件後,如果不斷往外擴張,很容易把大量無關內容也塞給模型。論文透過自適應走訪修剪分支,再整理上下文,讓 LLM 少讀一些用不到的證據。

Table 3 報告每次查詢的 token 從 Full Context 的 8.53k 降到 MAGMA 的 3.37k,平均延遲從 1.74 秒降到 1.47 秒。這可理解為提高提示中的有效訊息比例,但論文沒有直接量測「Prompt 訊號雜訊比」,也不能把全部效益單獨歸因於修剪。

四、兩個核心公式

4.1 RRF:搜尋起點

第一個公式負責找起點,倒數排名融合(Reciprocal Rank Fusion),想成三個人各給一份排行榜「向量語意相似度」、「關鍵字比對」、「時間訊號匹配度」;不同排行榜的原始分數不好直接比,所以改比名次:

Sanchor = TopK( ∑m 1 / (k + rm(n)) )
其中 m ∈ {vec, key, time}

小寫 k=60 是平滑常數(不是要找 60 個節點),大寫 K 才是要留下幾個起點,這個設計的優點:不同檢索器不用共享同一種分數尺度。

4.2 走訪策略:路線選擇

第二個公式決定路線,沿著哪條毛線走。拆成兩部分:

  • 關係適合度:這種邊適不適合現在的問題?問「為什麼」,因果線加分;問「哪天」,時間線加分。

  • 語意相關性:沿線找到的內容,跟問題有沒有關?

公式:

S(nj | ni, q) = exp( λ1 * φ(type(eij), Tq) + λ2 * sim(nj, q) )

4.2.1 怎麼讀這個分數?

在問題 q 下,從目前節點 nᵢ 走到鄰居 nⱼ,值不值得?公式主要看兩件事:

  • φ「關係」,依查詢意圖 Tq,判斷這種關係適不適合。問 WHY,因果邊的權重就可以提高。

  • sim「內容」,用節點與問題的向量餘弦相似度,衡量下一段記憶是否相關。

  • λ₁、λ₂「權衡」,控制關係適合度與內容相似度各占多少。

所以,登山裝備雖然很像問題的主題,「腳踝受傷」仍可能因為因果關係而優先被追蹤。外面的 exp 把加權結果轉成正分數;這不是已正規化的機率。論文 Algorithm 1 再用 Heuristic Beam Search(啟發式集束搜尋)保留高分候選,公式本身不等於完整搜尋演算法。

五、實驗成績一覽

LoCoMo 基準測試:Table 1 完整 Judge 欄位|論文報告值,未獨立重現

方法

Multi-Hop
多跳

Temporal
時間

Open-Domain
開放領域

Single-Hop
單跳

Adversarial
對抗性

Overall
整體

Full Context

.468

.562

.486

.630

.205

.481

A-MEM

.495

.474

.385

.653

.616

.580

MemoryOS

.552

.422

.504

.674

.428

.553

Nemori

.569

.649

.485

.764

.325

.590

MAGMA

.528

.650

.517

.776

.742

.700

註:Judge 是 [0,1] 的語意評分,允許部分給分;0.700 不等於「70% 題目完全答對」。A-MEM、MemoryOS、Nemori 是其他研究者提出的 AI 長期記憶架構。MAGMA 的 Overall、Single-Hop、Adversarial 表現突出,但 Multi-Hop 低於 Nemori 與 MemoryOS。只看 Overall,會錯過它在不同題型上的差異。

消融實驗:Table 4|論文報告值,未獨立重現;下降幅度為相對完整 MAGMA 的分數差。

變體

Judge 分數

下降幅度

完整 MAGMA

.700

—

移除 Adaptive Policy

.637

-.063

移除 Causal Links

.644

-.056

移除 Temporal Backbone

.647

-.053

移除 Entity Links

.666

-.034

註:表中降幅最大的是移除「自適應走訪策略」:.700 → .637。這讓我更想測試策略本身的作用:同樣一組關係,依問題換路線,究竟能多找回多少有用證據?

六、心得

6.1 這篇最漂亮的設計是什麼?

讀完這篇論文,我覺得 MAGMA 最值得學習的,不只是「建了四張圖」,而是把「記憶裡存什麼關係」和「問題該沿什麼關係找證據」分開設計。

換句話說:

  • 四張圖是表示層(representation),記住世界的不同面向。

  • Adaptive Traversal Policy 是控制層(control),根據問題決定怎麼搜索。

這個解耦(decoupling)的好處非常實際:同一張白板可以換路線,問題變了,不用重新建一份記憶;問「為什麼」的時候走因果線,問「什麼時候」的時候走時間線,底層資料完全不用動。

我最有興趣的不是增加圖的數量,而是把關係變成可以控制、量測與否證的設計,例如:開啟 Entity Graph 後是否真的補齊跨 session 事實?錯誤因果邊增加時,系統表現何時開始變差?

6.2 公開程式碼:沿著資料流查下去

本文是論文與公開程式的對照閱讀,沒有重跑完整 benchmark。檢視固定在 commit 467cb70b67ac337b22fdb42194d37c04ad701b62,沿著記憶建置、查詢走訪與評估流程追蹤。以下結論限定這個版本;這些程式不足以證明作者產生論文數字時的歷史執行環境。我最想借鑑的是「表示與策略分離」。但公開實作讓我先停在幾個更基本的問題:同名的人怎麼分開?一條因果邊憑什麼成立?評估時,答案資訊到底有沒有流進作答過程?如果這些地方沒有處理好,後面的高分就很難解讀。

6.2.1 關係品質與搜尋路徑

  • 同名不等於同人。 create_entity_links 把抽取出的實體字串做 lower().strip(),再按相同字串分組。假設健身教練和軟體工程師都叫 Alex,就有誤連風險。這是建邊規則的限制;不能因此說前面的實體抽取也完全沒有用 LLM。查證:create_entity_links · L722

  • 先後不等於因果。 _infer_latent_edges 雖然準備了提示文字,該函式卻沒有呼叫 LLM,而是檢查前三個鄰居,把時間較早者接成 LEADS_TO,信心值固定為 0.5。「早上打噴嚏、下午下雨」正好說明這種判準缺少什麼:先發生,沒有回答為什麼造成後者。這是規則風險的示意,不是實測錯答。查證:_infer_latent_edges · L610。同檔另有呼叫 LLM 的 _infer_causality;這裡指出的是上述簡化路徑,並非所有因果方法。

  • 輪次不等於時間。 建圖程式以 session timestamp + timedelta(hours=turn_number) 產生事件時間戳。多說一輪話,就被當成多過一小時;這改變了時間關係的語意,不能直接當成情境中事件真正發生的時間。查證:事件時間戳 · L285

  • Beam Search 函式存在,但主要查詢路徑沒有走它。 論文 Algorithm 1 描述 Heuristic Beam Search。公開程式保留了 _probabilistic_beam_search,但我追蹤的主要 query 路徑呼叫的是 _adaptive_graph_traversal,註解稱為 Adaptive BFS(調適性廣度優先搜尋)。集束搜尋每層保留高分候選;這個 BFS 路徑則逐層擴展並套用過濾條件。探索順序、證據集合和成本都可能不同,不能視為同一方法的等價重現。查證:query · L682、_probabilistic_beam_search · L1002、_adaptive_graph_traversal · L1099

6.2.2 評估洩漏:三種資訊進了三個不同環節

三種情況分別是拿正解選答案、提供真實題型,以及標出答案所在資料;介入的位置與資訊量都不同。

  • 正解選答(Gold-answer leakage)就像先寫三份答案,再翻標準解答,挑最接近的那份交卷。LoCoMo 入口預設 --best-of-n=3、--best-of-n-method=llm_judge;選答函式把 expected 正解交給 evaluator,保留分數最高的候選。問題出在正解參與了最終答案的選擇;即使生成候選時沒有把正解直接塞進 prompt,這也已經不是獨立作答。Best-of-N 本身不是洩漏,拿 gold answer 挑答案才是。查證:預設參數 · L364、_answer_question_best_of_n · L94

  • 題型提示(Benchmark-label leakage)就像考試時有人先告訴你「這題是多跳推理」。程式讀取真實 qa.category,把 multi-hop 的 top_k 設成 30,其他設成 15,並將 category 傳入 QA prompt,切換作答提示。題型不是正解,但它是 benchmark 提供的額外標籤(privileged label)。若要測試系統從問題自行判斷策略的能力,就不應把這份標籤提前交給它。查證:題型與檢索設定 · L277;同檔 _answer_question_single 的 category 提示分支。

  • 答案位置(Gold-evidence leakage)就像翻出幾頁資料後,有人指出哪一頁藏著答案。LongMemEval 以 answer_session_ids 辨識已召回的正解會話,優先選入上下文,並依是否為正解會話採取不同的內容抽取路徑,最後還加上 CONTAINS ANSWER 標記。它不是無條件補入所有未召回的正解資料,但仍把測試答案的位置用來篩選與標註證據。這會干預原本應由檢索器自己完成的工作。查證:正解會話優先選擇 · L1400、分流抽取 · L1450、CONTAINS ANSWER · L1596

這些資料流足以否定「直接跑這套預設流程,就是乾淨盲測」的說法。 要用分數支持架構有效,必須先切斷這些標籤與作答流程的連接,再重新比較基線與消融。

6.3 三個值得借鑑的設計

如果要重新實作,我會保留以下設計:

  • 記憶有關聯
    能從「取消登山」沿關係追到「腳踝受傷」,補充只靠相似度排名可能漏掉的證據。

  • 同板可換路線
    問題變了,不用重建記憶,只需要換走訪策略;同一份記憶因此能比較不同檢索策略。

  • 先記再整理
    Fast Path 先留下可查詢的骨架,Slow Path 再補複雜關係;兼顧即時性與完整性。

6.4 如果要自己做,如何調整?

如果要把 MAGMA 的思想落地,我認為路線應該是:

  1. 先建乾淨的基線:Semantic + Temporal + Entity,用明確規則和小型資料驗證;先觀察實體誤連與時間解析錯誤,確認每條邊都能回到來源。

  2. 再加因果作為獨立變因:有來源的 Causal Edge,搭配品質量測(例如「因果邊錯誤率 vs. 表現下降」的曲線),不要一開始就假設因果邊一定有用。

  3. 最後比較策略:Fixed Policy(固定走所有邊)vs. Intent-aware Policy(依意圖調整權重),在完全相同的圖和 token 預算下比較。

這樣的模組化實驗設計,可以幫助分辨「方法有效」和「某段 benchmark 特化規則有效」,後者不等於前者。

七、我的取捨

  我會借鑑 MAGMA 把關係表示與檢索策略分開的設計,同一份記憶可以換不同路線,讓「哪種關係有幫助」變成能逐項測試的問題。論文的消融結果提供了值得驗證的假設,卻不能代替乾淨的評估流程。如果由我重新實作,我會先重做關係品質控制,把建圖、檢索、作答與評分拆開,讓正解只在答案固定後進入評分器。接著用相同資料與 token 預算,比較固定走訪、自適應走訪和各種關係消融,要確認的是:拿掉這些額外提示後,多圖記憶究竟還能帶來多少改善。

八、來源與資料說明

本文表格均為論文報告值,未獨立重現;登山、Alex 與打噴嚏情境是教學示意,非模型實測輸出。

程式證據固定於 467cb70b67ac337b22fdb42194d37c04ad701b62,各處查證連結指向該版本。

Jiang, D., Li, Y., Li, G., and Li, B. (2026). MAGMA: A Multi-Graph based Agentic Memory Architecture for AI Agents. Proceedings of the 64th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), pp. 36848–36865. 架構:Figure 2;公式:Eq. (4)–(6)、Algorithm 1;LoCoMo:Table 1;查詢成本:Table 3;消融:Table 4;RRF 常數:Table 6。

Referenced paper

https://doi.org/10.18653/v1/2026.acl-long.1709(opens in a new tab)