該留什麼、該忘什麼 — Rate-Distortion 統一 LLM 記憶壓縮四層架構
一句話核心結論
KV cache 刪除、prompt 壓縮、架構狀態限縮、agent 記憶合併——四個幾乎互不引用的獨立研究社群,實際上在解決同一個數學問題:rate-distortion 權衡(用多少記憶換多少任務準確度)。UC Irvine 的 Colaco 和 Lahjouji 用單一資訊理論公式統一了 ~70 種方法,提出七軸分類法,並發現兩個跨層共通失敗模式:(1) 全部用注意力分數或時間新近度決定保留什麼,在查詢到來前就不可逆地丟棄關鍵資訊;(2) agent 反覆壓縮記憶的誤差累積效應幾乎無人量測。論文還提出五個設計原則和 COMPACT-Bench 基準提案。
涵蓋方法
~70 種,橫跨 KV cache、prompt、架構、agent 四層
分類維度
7 軸(粒度、生命週期、失真度、查詢適應性、可學習性、機制、儲存)
通用下限(Eq. 2)
P_e ≥ (H(Y|Q)-B-1)/log|Y|:預算低於任務資訊量時,任何方法都無法避免錯誤
設計原則
5 個(可逆性、查詢條件化、任務適應預算、重複壓縮量測、統一基準)
核心洞察:四個社群在解決同一個問題
論文開篇就指出一個荒謬的現狀:
- KV cache 社群:用注意力分數決定刪除哪些 token(H2O、SnapKV、StreamingLLM),或用 2-bit 量化壓縮每 token 的位元數(KIVI、KVQuant)
- Prompt 壓縮社群:用 LLM 摘要或學習 gist token 替換長上下文(LLMLingua、Gist、ICAE)
- 架構設計社群:把記憶綁死在固定大小的 recurrent state(Mamba、RWKV、Titans、Infini-attention)
- Agent 記憶社群:在任務間 consolidate、summarize、forget(MemGPT、Mem0、RAPTOR、MemoryBank)
這四個社群幾乎不互相引用,各自有自己的 benchmark 和成功指標。但論文用一個公式證明它們全是同一個問題的變體:所有方法都是從歷史 H 壓縮出 Z(滿足預算 B),然後用 Z 回答查詢 Q。差別只在三個維度:壓縮的單位是什麼(token?bit?fact?)、在生命週期的哪個階段做、以及是否能看到查詢再決定。
統一形式化:Rate-Distortion 目標與 Fano 下限
論文的核心數學貢獻是一個層級無關的壓縮公式:
minθ E[L(U(Cθ(H), Q), Y)] s.t. rate(Z) ≤ B
其中 H 是模型能取用的全部歷史(KV cache + prompt + recurrent state + 先前回合的記憶),C 是壓縮算子,U 是使用算子(通常是繼續模型的計算)。
從這個目標可以直接匯出 Fano 下限(Eq. 2):當壓縮預算 B 低於任務資訊量 I*(Q) 時,所有方法——無論架構——都必須犯錯。這代表:
- 精確檢索任務(multi-hop QA)壓縮得差 → 因為答案需要很多位元
- 摘要任務壓縮得好 → 因為答案的熵很低
- 同一個 KV 刪除器在摘要上近乎無損、在檢索上崩潰 → 不是方法的問題,是任務的資訊量不同
- 查詢未知前就壓縮(query-agnostic)必須支付額外的查詢熵 H(Q) 的代價
七軸分類法(Seven-Axis Taxonomy)
論文用七個正交維度分類 ~70 種方法,揭示跨層的結構化共通性:
- 粒度(Granularity):從 bit(量化)→ token(KV 刪除)→ block/page → hidden dim(低秩)→ NL span(prompt 壓縮)→ soft token → recurrent state → semantic item(agent 記憶)
- 生命週期(Lifecycle):預訓練 → prefill 時 → decode 時 → serving runtime → within-task 策展 → between-task 合併 → offline 索引
- 失真度(Fidelity):無損 → 近似無損 → 均勻失真 → 多層(精確層+壓縮層)
- 查詢適應性(Query-adaptivity):query-agnostic(可離線快取)vs query-conditioned(線上決策)vs task-aware(學到的 reward)
- 可學習性(Learnability):零訓練啟發式 → post-training adapter → 從頭訓練架構 → RL 學到的 policy → LLM 作為控制器
- 機制(Mechanism):刪除/驅逐 → 選擇性檢索(保留全部)→ 合併/聚類 → 量化/編碼 → 低秩分解 → 摘要/改寫 → 編碼到潛在向量 → recurrent write-forget
- 儲存基質(Storage):GPU KV → host/SSD → 模型參數 → 外部文字/向量儲存 → 知識圖譜 → in-context dense vector
關鍵發現:四層之間差異最大的三個軸正好是粒度、生命週期、查詢適應性——這正是 rate-distortion 框架預測為決定性的三個維度。
兩個跨層共通失敗模式
失敗模式 1:注意力分數 + 新近度偏見。所有層級決定「保留什麼」的信號都是注意力大小或時間新近度——在查詢到來前就不可逆地丟棄了查詢後來需要的資訊。KV 層 evict 錯 token、prompt 層摘要刪掉關鍵句子、架構層 recurrent state 容量不足、agent 層 consolidate 丟掉跨任務細節。
失敗模式 2:重複壓縮的誤差累積。單次壓縮在 long-context benchmark 上被精心量測,但 agent 會對同一批記憶反覆壓縮(每回合 summarize、每 session consolidate)。這個重複壓縮的誤差累積幾乎沒有任何 benchmark 在量測——論文用小型實驗證明了誤差確實會累積。
推論 ↔ Agent 記憶橋接:跨層機制移植
- SnapKV 的「觀察 attention pattern 決定保留」→ agent 的「先觀察任務上下文再決定查詢哪些記憶」
- Quest 的「保留全部、查詢時選擇性讀取」→ agent 的「保留原始對話、查詢時語義檢索」——保留可逆性!
- GEAR 的「低精度基底 + 高精度殘差」→ agent 的「摘要層(lossy)+ 原始記憶庫(lossless)」雙層架構
- KV quantization 的混合精度→ agent 記憶的「高重要性保留原文 + 低重要性只留摘要」
五個壓縮感知設計原則(§10.5)
- 可逆性優先:能取回被丟棄內容的方法(保留原文+選擇性檢索)優於不可逆方法(驅逐/摘要)
- 查詢條件化:看到查詢再決定保留什麼,永遠優於查詢未知前的壓縮。差距 = 查詢分布的熵
- 任務適應預算:不同任務需要不同資訊量——精確檢索需高預算,摘要可用低預算
- 量測重複壓縮:論文指出的最大盲點——agent 反覆 consolidate 的累積誤差需被 benchmark 覆蓋
- 統一基準:所有層級壓縮方法應放在同一預算軸比較(KV eviction 25% tokens vs quantization 4-bit)
對 DKY / Hermes 的啟發
- 睡眠固化的「先壓縮再檢索」違反原則 1+2:Hermes 的 sleep consolidation 在查詢到來前就用 LLM 做 lossy 摘要/合併。論文指出這類 query-agnostic + irreversible 的壓縮註定在某些查詢上失敗。改進方向:保留原始記憶+索引作為可逆層,查詢時動態選擇 fidelity 層級
- 重複壓縮的誤差累積未被量測:Hermes 每週做 sleep consolidation——對同一批記憶反覆 summarize/merge。建議在下次固化中加入誤差追蹤:固化前後的問答準確率差異
- Quest 的「保留全部+查詢時選擇性讀取」模式可直接套用到 fact_store:不預先壓縮,每次查詢時動態選擇最相關的記憶子集,更接近 attention 原生行為
限制
- 作為 survey 不提出新壓縮演算法,而是統一現有方法的分類和分析框架
- Fano 下限只給出資訊理論極限值,不告訴你「實際上能多好」
- COMPACT-Bench 仍處提案階段,未完整實證
- 跨層機制移植的實作驗證有限(概念性對映,未提供完整 benchmark 結果)
- 七軸分類法中「粒度」和「機制」兩軸在部分方法上有重疊