MOSAIC - 沉默的錯誤累積:為何 LLM Agent 記憶需要儲存時衝突檢測
一句話核心結論
現有 LLM agent 記憶系統(Mem0、Zep、A-Mem、MemGPT…)全是 append-only——新資訊直接寫入,不檢查是否與既有記憶衝突。6 個 baseline 的衝突檢測率僅 2%–14%,幾乎等於不檢測。MOSAIC 用三層機制解決:(1) 實體類型圖譜(event / persona / relationship)保留關係結構以支援多跳和時序推理;(2) 儲存時衝突檢測——新實體寫入前對圖鄰居做 LLM 矛盾檢查,衝突率檢測達 66%(4.7× baseline);(3) 雜湊加速雙路徑檢索——用 locality-sensitive hashing 取代昂貴的 LLM 分類,平均檢索延遲 0.58 秒。LoCoMo 長對話 QA 準確率 89.35%(+27.21pp vs Mem0),其中多跳推理從 51%→82%、時序推理從 58%→90%。論文還提出鄰居條件穩定原則(NCS):節點重要性只需在其圖鄰居變動時重算——從理論上將每次對話的成本從 O(|V|) 降到 O(Δmax)。
LoCoMo 整體準確率
89.35%(Mem0 62.14%,+27.21pp);多跳 81.56%(+30.41pp);時序 90.34%(+32.21pp)
HaluMem-Medium
Extraction F1 86.77%(最佳)、QA correctness 73.10%(最佳)、extraction recall 83.94%
衝突檢測
66% 整體(33/50),baseline 最高 14%。隱含錯誤 72.7% 檢測率 > 顯式 64.1%
檢索延遲
0.58 秒/查詢(LSH 雜湊加速),HNSW 索引最近 5 鄰居檢索
問題:append-only 記憶的錯誤累積(Error Compounding)
論文用臨床場景做了一個警示意義極強的範例:
- Agent 正確記錄了高血壓 guideline:目標血壓 <130/80 mmHg
- 後續對話中使用者說「我記得目標是 <160/100」,Agent 直接 append 這筆記錄
- 現在記憶庫中有 兩筆互相矛盾的記錄——但沒有任何系統偵測到
- 下游用藥建議基於錯誤的 160/100 給出處方→錯誤從記憶層一路傳播到推理層到行動層
這不是 LLM 幻覺——這是記憶系統的結構性缺陷。現有所有生產級記憶系統(Mem0、Zep、MemGPT)都只有 retention(確保能記住),沒有 conflict detection(確保記的東西不矛盾)。論文的錯誤累積測試用高血壓 guideline 手動注入 50 個事實衝突(數值 14 個、語義 13 個、邏輯 23 個),結果:全部 baseline 幾乎 = 0(2-14%),MOSAIC = 66%。
核心架構:實體類型圖譜 + 鄰居條件穩定
MOSAIC 把記憶組織為 typed directed graph G=(V,E,τ),每個節點 v 是一個元組 (entity_text, type, embedding, confidence, timestamp):
- 三種實體類型 τ:event(事件)、persona(個人特質)、relationship(人際關係)。抽取用 LLM pipeline + all-MiniLM-L6-v2 embedding
- 雙子圖設計:prerequisite subgraph G_P(邏輯依賴——哪個資訊必須先取得才能問下一個)+ association subgraph G_A(語義關聯——哪個話題和哪個話題相關,用 Leiden algorithm 做社群偵測)
- 鄰居條件穩定(NCS, §3.3):一個節點的重要性分數只需在其 graph 鄰居變動時重算。這將每次對話的成本從 O(|V|) 降到 O(Δmax),同時避免全域重新評分的震盪行為
- 節點評分公式:Score(v) = α·Ĩ(v) + β·T(v) + γ·C(v),其中 Ĩ 是正規化重要性、T 是 PageRank 中心性、C 是社群連續性(與上一輪查詢實體同社群加分)
機制 1:儲存時衝突檢測(Save-Time Conflict Detection)
這是 MOSAIC 與所有現有系統最關鍵的差異——不是事後發現、而是寫入時攔截:
- 鄰居檢索:新實體 v_new 寫入前,用 embedding 相似度在既有圖譜中找出 k 個最近鄰居
- 衝突評估:對每個鄰居 u,LLM 判斷 v_new 是否在數值、語義、邏輯上與 u 矛盾
- 解決策略:(a) 新證據更權威→更新舊實體;(b) 既有證據更強→拒絕寫入;(c) 兩者難判斷→標記雙方待人工審查
這個設計等同於在記憶管線的最前端(ingestion)加了一道防火牆——矛盾在儲存前就被攔截,不會進入後續的 retrieval → reasoning → action 階段造成級聯放大。
特別值得注意的結果:隱含錯誤的檢測率(72.7%)高於顯式錯誤(64.1%)。論文解釋:圖鄰居走訪自然地完成了多步推理——處理新實體時順著圖邊走到相關實體,恰好就是識別隱含矛盾所需的跨節點推理。
機制 2:雜湊加速雙路徑檢索
現有記憶系統(Mem0、A-Mem)用 LLM 對每筆記憶做分類來決定檢索路徑,這在互動式部署中完全不可行。MOSAIC 用 locality-sensitive hashing (LSH) 替代:
- 快速路徑(LSH):對查詢 embedding 做 LSH → 常數時間定位到候選社群 → 只在該社群內做精確語義搜尋
- 精確路徑(LLM):當 LSH 信心不足時才回退到 LLM 分類。雙路徑結合使整體檢索精度幾乎不損失(vs 純 LLM),但延遲從數秒降到 0.58 秒/查詢
- 儲存層:HNSW (Hierarchical Navigable Small World) 近似最近鄰索引,每查詢取 top-5
機制 3:信心閘門與 Bayesian 信念更新
抽取出的實體需通過信心閘門(ρmin=0.6)才能寫入長期記憶:
- 信心評分基於三因素:直接性(明確陳述 vs 推斷)、一致性(與既有值的吻合度)、具體性(精確值 vs 模糊範圍)
- 低信心實體被標記為不可靠,在下一個合適時機觸發針對性澄清,而非強行記入記憶
- 信念分布用 Bayesian 更新規則 b_{v,k}^{(t+1)} ∝ b_{v,k}^{(t)} × ℓ(o_v|s_k),結合規則匹配和 LLM 評估
- 已確認實體(ρ≥0.6 且 entropy H(v)≤δ)寫入持久化 JSON 儲存,含 entity ID、值、信心、時間戳、來源 turn、證據片段、信念分布
實驗結果精華
- LoCoMo 1,540 QA(Table 1):MOSAIC 89.35% vs Mem0 62.14%(+27.21pp)。Single-hop 92.87%(+25.74pp)、Multi-hop 81.56%(+30.41pp)、Temporal 90.34%(+32.21pp)、Open 78.12%(相對優勢最小,因依賴 LLM 參數知識而非記憶)
- HaluMem-Medium(Table 2):Extraction F1 86.77%(所有系統最高)、QA correctness 73.10%(最高)、extraction recall 83.94%(最高)。記憶更新 correctness 55.77% 仍落後 MemOS 62.11%——寫入路徑仍需更保守的更新策略
- HaluMem-Long:Extraction recall 90.66%、update correctness 83.33%、QA correctness 70.75%——全部領先
- 衝突檢測(Table 3):MOSAIC 66% vs baseline 最高 14%。數值 64.3%、語義 69.2%、邏輯 65.2%——三種錯誤類型均勻強勁。baseline 只在語義錯誤有零星命中(因表面文字相似性偶然觸發)
兩個理論貢獻
- 定理 1 - Coverage 的次模性:實體覆蓋函數 f(S) = Σ w(v)·1[H(v)≤δ] 是單調次模的。每輪選取最高分 frontier 實體的貪婪策略可達 (1-1/e) 近似最優覆蓋
- 定理 2 - NCS 收斂性:在 NCS 下,分數更新最多在 L 輪傳播後收斂(L = G_P 中最長有向路徑)。每次更新成本 O(Δmax),與總圖大小 |V| 無關
對 Hermes / DKY 的啟發
- Hermes 的 fact_store 目前是 append-only:新的 fact 直接寫入,不檢查是否與既有 fact 矛盾。MOSAIC 的儲存時衝突檢測可直接套用——寫入前先做 embedding 相似度檢索既有的 k 個鄰居、LLM 判斷是否矛盾、自動更新或標記衝突
- sleep consolidation 需要 NCS 原則:Hermes 每週做記憶固化時是全部重算——這違反 NCS。改進:只對「鄰居有變動」的記憶節點做 re-consolidation,節省大量 token
- Leiden 社群偵測可優化記憶檢索精度:當前 Hermes 用 flat 語義搜尋檢索記憶,MOSAIC 的 community-aware retrieval 顯示:先定位查詢所屬的記憶社群、只在該社群內檢索——精度更高且延遲更低
- 信心閘門是最低成本的品質提升:ρ<0.6 的模糊資訊不寫入長期記憶,改標記「待澄清」。這個機制幾乎零成本,但能顯著減少記憶庫中的低品質雜訊
- LSH 加速對 Hermes 可能意義不大:Hermes 的記憶量遠小於論文場景(數百筆 vs 數萬筆),flat 語義搜尋已足夠。但若未來擴展到跨用戶記憶,LSH 雙路徑是確定性加速方案
限制
- 衝突檢測僅在單一領域(高血壓 guideline)測試,50 個人工注入錯誤樣本偏小
- 34% 未檢出的衝突有兩個主因:(1) 邏輯矛盾跨距超出 k-nearest neighbor 搜尋半徑(~60% 漏檢);(2) 數值錯誤在合理範圍內,LLM 衝突評估器覺得不明顯(~40% 漏檢)
- HaluMem-Medium 記憶更新 correctness(55.77%)仍落後 MemOS(62.11%)——寫入路徑需更保守策略
- 只測試一種 LLM(qwen3.5-plus),不同模型間的泛化性未驗證
- LoCoMo 僅 10 組對話,開放域問題相對優勢最小(78.12% vs Zep 76.60%)——結構化記憶對參數知識無幫助
Hermes Lab 論文筆記 · 原文 arXiv:2607.16211 · CC BY 4.0