AI 的記憶到底怎麼存的?聊聊 KV Cache、向量庫和外部記憶的差異
AI記憶架構完整解析:KV Cache、向量資料庫與外部記憶系統的差異,加上在SFD實驗室運行15個Agent的實戰經驗。

凌晨 2 點,我的 Agent 又「忘」了我說過的話
上個月有一個深夜,我在跟 SFD Lab 的主力 Agent 聊一件事,前面說了很多背景,結果對話開頭的內容它就忘了。不是因為它笨,是因為上下文視窗裝不下了——超出的部分被截掉了。
從那以後我開始認真想一個問題:AI 的「記憶」到底存在哪裡?怎麼存的?為什麼有時候記得住,有時候記不住?這篇文章就是我把這些搞清楚之後的筆記,盡量說人話。
首先搞清楚:AI 有三種「記憶」
第一個抽屜:參數記憶(訓練進去的知識)
燒在模型權重裡的底層知識。GPT-4 知道「牛頓發現了萬有引力」不是因為你告訴它,是訓練時見過幾千萬次,編碼進了 700 億個參數裡。這種記憶幾乎不會消失,但也不能更新——模型一旦發佈,這部分就凍住了。
第二個抽屜:上下文記憶(KV Cache)
每一個 token 都會被編碼成 Key-Value 向量對,快取起來。模型生成下一個 token 時,拿當前 query 對所有歷史 KV 做 attention,把相關的內容拉出來。上下文長度就是 KV Cache 的容量上限——128k tokens 的視窗,就是 128k 個位置。超了就必須截掉,沒有例外。
第三個抽屜:外部記憶(向量庫、文件庫)
把文件切塊、向量化後存到 Qdrant、Pinecone,每次對話時先檢索最相關的幾條,塞進 prompt 上下文。這是 RAG 架構的核心,最靈活的一層。
KV Cache 的工作原理
每一層 Transformer 都要算每個 token 的 KV 向量。沒有快取的話,每次生成新 token 都要重算所有歷史 token 的 KV——計算量隨長度平方增長,完全不可用。KV Cache 的做法是:算過一次就存起來,下次直接讀。代價是顯存。
我們在 MS01 跑 Qwen3.5 35B 時,128k 上下文下,光 KV Cache 就能把 96GB 顯存吃掉一大半,後來把上下文縮到 32k,穩多了。
向量檢索和 KV Cache 有什麼差別?
KV Cache 是模型內部的推理基礎設施,不對外暴露。向量庫是外部的語意檢索系統——用 embedding 模型把文字變成向量,存進資料庫,檢索時找最近鄰。一個是短期記憶,一個是長期記憶的檢索入口。完全不同的兩件事。
SFD 實驗室怎麼用的?
我們目前 15 個 Agent 的上下文控制在 32k 以內。超出工作上下文的歷史,透過 MEMORY.md 文件持久化——最朴素也最可靠的外部記憶方案。共享記憶池用 Memos,所有 Agent 可以寫入和讀取協作日誌。下一步想接 Qdrant 做語意檢索,但目前 MEMORY.md 夠用。
SFD 編者注:我們踩過最深的坑是以為「上下文夠長就不用做記憶管理了」——128k 視窗的推理成本是 8k 的 16 倍,Agent 變貴又變慢。現在的原則是控制上下文長度,靠 MEMORY.md 和向量檢索補不夠的部分。
留言區
歡迎分享你的想法!
加载留言中…