症狀:你的 Agent 查得到文件,卻記不住使用者偏好、未完成任務與上次決策。
最快解法:只需外部知識就選 RAG;需要跨工作階段保存使用者與任務狀態,就加入 Agent Memory;多數長期運作的 AI Agent 採用雙軌架構,但必須分開設定寫入、證據追溯與刪除規則。
這篇適合三類讀者:正在補齊多輪記憶能力、避免把聊天記錄全部塞入向量索引的開發者;已有企業 RAG 系統、想判斷能否沿用現有元件的團隊;以及負責隱私、權限與維運稽核的技術主管。
最後更新於 2026 年 8 月 10 日;專案狀態與設定資料核實自 TencentDB-Agent-Memory 官方 README、官方設定檔 與 版本記錄。
Agent Memory RAG 的分工,先看資料要回答什麼問題
RAG 的核心問題是:「外部資料中,哪一段內容可以支撐這次回答?」它適合產品手冊、內部規範、技術文件、最新公告與可引用的知識庫。標準流程通常是文件攝取、切分、加入中繼資料、向量化,再於查詢時取回相關片段。這種設計的優點是來源相對清楚,也比較容易在回答中附上文件位置或引用依據。RAG 原始研究將這類架構描述為把生成模型與外部非參數記憶結合,目的正是改善知識密集型問答的可追溯性與更新能力。(arxiv.org)
Agent Memory 要處理的問題不同:「這位使用者是誰?目前任務進展到哪裡?哪些決策下次仍然有效?」例如:
- 使用者說:「我偏好先看台灣市場的價格,再比較美國方案。」這是使用者偏好。
- 使用者說:「付款流程已完成,下一步要寄出測試報告。」這是任務狀態。
- 使用者說:「不要修改仍被行動版使用的驗證模組。」這是專案約束。
- 一段長對話中形成的工作背景,則可能需要整理成場景摘要。
如果把這些內容與產品文件全部放進同一個索引,更新責任會變得模糊:文件過期時應重新攝取,使用者偏好改變時應覆寫或標記失效,任務狀態完成後則應停止召回。三者不是同一種資料生命週期。
第一個指標:寫入與更新是否能被控制?
RAG 通常由資料管線明確攝取。你知道哪個文件進來、哪個版本被切分、哪個索引需要重建。這並不代表 RAG 只能處理靜態文件;即時資料、資料庫記錄與 API 回應也可以成為檢索來源,只是它們需要額外設計同步與權限過濾。
Memory 則更接近持續捕獲與後處理。它可能先保存原始對話,再抽取事實、偏好與事件,之後聚合成場景或使用者畫像。官方設定檔目前列出自動捕獲、背景提取、去重與衝突偵測等能力;其中 L1 記憶提取預設每個 session 最多 20 條,並啟用去重設定。(raw.githubusercontent.com)
這裡有三個容易被忽略的限制:
- 寫入延遲:記憶不一定在使用者說完下一句後立刻可用,背景提取可能需要等待管線執行。
- 錯誤放大:一次錯誤抽取若被聚合成高階摘要,之後每次召回都可能重複影響決策。
- 更新衝突:「使用者偏好深色介面」與「使用者改用淺色介面」不能只靠向量相似度決定哪一筆正確,必須保留時間、來源與狀態。
TencentDB-Agent-Memory 的官方設計把對話拆成 L0 Conversation、L1 Atom、L2 Scenario、L3 Core/Persona 四個層級。高階層適合快速恢復背景,低階層則保留具體事實與原始證據;這比單純把每段聊天轉成向量後永久保留,更容易處理修正與追溯。(github.com)
中段決策表:兩套架構應該怎樣分工?
| 評估指標 | RAG | Agent Memory |
|---|---|---|
| 主要資料 | 文件、規範、產品資料、外部知識 | 使用者偏好、事實記憶、任務狀態、歷史決策 |
| 寫入時機 | 文件上架、資料更新或同步時 | 對話捕獲後,經提取、去重與聚合後寫入 |
| 召回目標 | 找到能支撐答案的證據 | 恢復使用者與任務上下文 |
| 更新責任 | 文件版本、索引重建、權限同步 | 記憶衝突、過期、修正、降級與刪除 |
| 回答形式 | 應保留來源與引用位置 | 應保留來源鏈,不宜只注入一段無法驗證的摘要 |
| 適合場景 | 一次性問答、企業知識問答 | 個人助理、客服歷史、編碼 Agent、長期任務 |
| 主要風險 | 過期文件、錯誤切分、權限漏過濾 | 錯誤記憶、跨使用者污染、刪除不完整 |
因此,「向量資料庫」不能直接等同於 Agent Memory。向量資料庫主要解決儲存、索引與相似度搜尋;Memory 還需要決定什麼值得保存、誰能讀取、何時降級、如何撤銷,以及如何回到原始對話。這也是為什麼同一套向量搜尋能力可以同時出現在 RAG 與 Memory 中,但兩者的產品責任仍然不同。
第二個指標:召回結果是否有證據鏈?
RAG 的召回結果通常需要回答「這個結論來自哪份文件」。如果客服 Agent 引用退款規則,最好能帶出文件版本、章節或段落。若只回傳一段向量相似的文字,當文件更新後,你很難判斷答案是來自新規則還是舊片段。
Memory 的召回則重點在「恢復上下文」,不一定每次都直接展示給使用者。例如編碼 Agent 可能需要知道某個模組仍被行動版使用,但不必把整段歷史對話顯示出來。不過,內部仍應保留來源鏈,否則一旦 Agent 因錯誤記憶而拒絕修改程式,你只能重新翻查大量日誌。
TencentDB-Agent-Memory 官方 README 描述了從 Persona、Scenario、Atom 回到 Conversation 的追溯路徑,並以混合召回方式結合 BM25、向量搜尋與 RRF 排序。其設定檔也提供召回數量、字元上限與超時控制;目前文件列出的 recall.maxResults 預設值為 5,recall.timeoutMs 為 5000 毫秒,超時時可跳過記憶注入,不阻塞對話。(github.com)
這些設定不應直接視為品質保證。你仍要用固定對話集測試:
- 正確偏好能否被召回。
- 已被新偏好取代的舊記憶是否停止出現。
- 高階摘要能否回到原子記憶與原始對話。
- 不同使用者的相似問題是否出現跨租戶污染。
- 召回超時時,Agent 是否能安全地退回無記憶模式。
哪些場景選單軌,哪些場景選雙軌?
你可以用以下條件直接做架構決策:
- 若 Agent 只回答外部知識、文件與規範,且每次對話相對獨立,選 RAG。
- 若 Agent 必須跨工作階段記住使用者偏好、任務狀態或歷史決策,加入 Agent Memory。
- 若答案既需要企業文件,又需要個人化背景,採用 RAG + Memory 雙軌。
- 若資料涉及多租戶、敏感個人資料或高風險決策,先分離索引與權限,再考慮合併召回。
- 若團隊尚未建立來源、刪除與稽核流程,不要因為「想要更聰明」就先開啟全量記憶。
例如客服 Agent 面對「我的退款何時到帳?」時,RAG 應查找退款規則與處理時限,Memory 則提供該使用者的案件編號、已完成步驟與過往聯絡偏好。兩者混在同一個索引中,可能把某位使用者的案件狀態誤當成通用規則,也可能把內部文件片段錯誤地當成個人承諾。
第三步:上線前用五個測試封住風險
1. 先定義資料分類
至少把資料分成外部知識、使用者記憶、任務狀態、短期會話與原始證據。每一類都寫清楚來源、擁有者、敏感程度與預定留存時間。
2. 分開寫入入口
文件由 RAG 攝取管線處理;使用者偏好與任務狀態則由 Memory 捕獲或由明確工具寫入。不要讓模型自行把所有聊天內容都標記為永久記憶。
3. 為記憶設定更新規則
每筆記憶至少帶上時間、來源、使用者或 Agent 身分,以及目前狀態。遇到衝突時,優先標記新舊版本與待確認狀態,不要單純以相似度最高者覆蓋全部內容。
4. 建立可追溯召回記錄
記錄查詢內容、召回層級、候選記憶、排序結果、實際注入內容與權限過濾結果。這些資料可放入受控的維運記錄,不應直接暴露給一般使用者。
5. 測試重啟與延遲
關閉 Agent 後重新啟動,確認任務狀態能否復原;再測試記憶管線尚未完成時,Agent 是否會錯誤宣稱「已經記住」。官方文件目前也提醒,部分知識處理流程是非同步,必須等待資產進入可用狀態。(github.com)
6. 測試刪除傳播
刪除使用者記憶時,不只刪除向量項目。還要檢查原始對話、L1 原子記憶、L2 場景摘要、L3 個人畫像、快取與備份是否仍能召回。TencentDB-Agent-Memory 的設定檔目前提供 L0/L1 本地檔案留存設定,預設值為 0,代表不自動清理;這個值不能直接套用到有個資要求的生產環境。(raw.githubusercontent.com)
Agent Memory 的隱私策略不能沿用 RAG 預設值
RAG 的權限通常圍繞文件、資料夾、租戶或角色;Memory 的權限則要進一步限制到使用者、Agent、工作階段與記憶資產。兩者都需要隔離,但隔離邊界不完全相同。
你至少要分開處理四件事:
- 文件權限:使用者只能檢索自己有權查看的文件。
- 記憶隔離:A 使用者的偏好與案件狀態不能因語意相似而被 B 使用者召回。
- 留存週期:原始對話、衍生記憶、備份與稽核記錄應有不同期限。
- 刪除傳播:刪除要求必須沿著原始資料、衍生摘要、向量索引與快取傳遞。
本地部署可以減少資料外發路徑,但不等於自動完成合規。你仍要確認誰能登入儲存層、備份是否加密、日誌是否含敏感內容、刪除是否可驗證,以及模型供應商或嵌入服務是否會接觸原始資料。若你要把這套架構放到長期執行的 Agent 環境,建議先閱讀 Kvmzen 支援中心的環境與連線說明,再決定資料放置位置。
FAQ:四個部署前最容易忽略的判斷
Agent Memory 和向量資料庫有什麼不同?
向量資料庫是基礎儲存與搜尋元件,不會自動替你處理記憶提取、衝突修正、權限隔離與刪除傳播。Agent Memory 是完整生命週期,向量搜尋只是其中一個召回工具。
已經有 RAG,還需要長期記憶嗎?
如果 Agent 只查文件,不一定需要。若它要記住使用者偏好、案件進度、編碼決策或跨工作階段上下文,RAG 本身不會自動提供這種個人化狀態,應另外加入 Memory。
對話記錄應該全部保存嗎?
不應把「保存」與「召回」視為同一件事。原始對話可作追溯證據,但只有經過分類、遮罩、權限判斷與留存設定的內容,才適合成為長期記憶。
長期記憶召回錯誤如何追溯?
由最後注入的高階摘要開始,依序回到場景、原子記憶與原始對話,並檢查抽取、版本、權限與排序記錄。沒有來源鏈的記憶系統,很難在生產環境中安全修正。
最後的採購判斷:先確認你缺的是知識,還是持續狀態
如果你目前依賴一般雲端伺服器部署 Agent,常見問題是環境長期閒置仍需付費、網路延遲受共享資源影響,以及測試不同本地記憶後端時缺少可重建的固定環境。對需要短期驗證 RAG、Memory、重啟復原與資料隔離的團隊來說,這些成本往往比單次安裝更麻煩。
你可以先用 RAG 完成知識檢索,再決定是否加入長期記憶;若要測試完整雙軌架構,又不想立即購買並維護實體設備,租用 Kvmzen 的 Mac 環境會更適合作為短期驗證方案。你可以先比較 Mac 雲端租用方案,確認連線方式、資料隔離與使用週期,再把固定的測試對話集跑過一次。長期穩定重負載、需要實體介面或必須完全掌控硬體的人,則應評估自購 Mac;若只是驗證 Agent Memory 與 RAG 的路由、召回和刪除流程,先租用可重建的測試環境,通常更容易控制風險與時間成本。
