智能體記憶:從對話歷史到持久化知識
文章深入探討了AI智能體記憶的概念、類型及其重要性。LLM本身是無狀態的,但通過不同類型的記憶(如對話記憶、語義記憶、情景記憶、程序記憶、實體記憶、工作記憶和摘要記憶),智能體可以實現持續交互和個性化服務。文章還討論了記憶系統的挑戰,包括判斷什麼應該被記住、何時更新、如何檢索以及防止記憶泄露。最後,介紹了Oracle的AI Agent Memory Package (OAMP) 如何利用AI數據庫實現高效的智能體記憶管理。
智能體記憶是當前人工智能領域一個令人着迷的概念。大語言模型(LLM)本質上是無狀態的,這意味着它們沒有過去交互的記憶或意識。每次向LLM發送的提示都被視為完全孤立的事件。然而,當你與AI智能體進行持續對話時,它似乎能記住之前的消息。這實際上是界面在“假裝”記憶——智能體在後台將整個對話歷史重新發送給LLM,作為一個巨大的組合提示。
為了讓智能體真正擁有記憶,不同組織、研究人員和獨立開發者都在努力破解這一難題。一旦智能體能夠記住,整個交互方式就會改變:它可以基於學到的信息構建,適應使用者,在重啓後恢復工作,併產生連續性。
最近,本文作者與Oracle的Richmond Alake進行了深入交流,他一直在從事智能體記憶的研究。他們的對話涵蓋了不同類型的記憶、記憶為何比聽起來更困難,以及如何構建在生產環境中真正有用的記憶系統。
七種記憶類型
對話記憶是最常見的記憶類型,它存儲用户與助手之間的消息交換。如果用户問“我剛才説這項任務的最終目標是什麼?”,智能體需要訪問對話才能回答。但這種記憶系統容易出現問題:最直接的嘗試是將之前的消息不斷附加到提示中。短期內有效,但對話過長時,模型會接收到一個包含重要細節、過時信息和完全不相關內容的巨大上下文塊。真正的記憶工程需要決定存儲什麼、存儲在哪裏、如何檢索,以及何時需要總結、遺忘或壓縮。
語義記憶存儲持久性事實,這些事實應該超出具體對話而存在。例如“用户更喜歡Python而非TypeScript進行後端開發”。語義記憶通過向量搜索實現,智能體無需重放完整對話,只需檢索與當前請求相關的少數持久性事實。
情景記憶存儲事件,記錄“發生了什麼”。例如“智能體搜索了最近的API網關模式”或“工作流在合規審查步驟失敗”。這對於調試、審計和長期運行的工作流特別有用,通常受益於結構化存儲。
程序記憶是關於“如何做”的記憶,幫助智能體改進流程。例如調查失敗部署時,先檢查日誌,再檢查配置變更,然後檢查依賴更新。這使智能體能在混亂的現實環境中重用經過驗證的方法。
實體記憶存儲關於特定人物、賬户、項目、系統、工單或對象的事實。例如“Acme公司有嚴格的數據駐留要求”。這要求記憶系統具有強作用域功能,防止不同用户或項目之間的上下文泄露。
工作記憶是當前任務的短期暫存區,用於臨時信息。它通常不需要持久化,因為如果每個臨時想法都存儲為長期記憶,記憶庫會很快變得嘈雜,智能體可能將不成熟的假設當作事實。
摘要記憶解決上下文窗口限制問題。當對話過長時,需要壓縮。智能體發送摘要而非全部80輪對話,例如“用户正在構建SaaS客服智能體,偏好Python和FastAPI,部署在OCI上,希望智能體在草擬回覆前檢索過往工單。”
記憶的挑戰
記憶看似簡單,但真正的困難在於判斷,而非存儲。智能體需要區分哪些細節值得記住,哪些只是臨時上下文。此外,記憶需要更新策略:當用户改變偏好時,舊記憶是刪除、覆蓋還是保留時間戳?檢索多少記憶也很關鍵:太少會丟失上下文,太多則引入噪音。防止記憶泄露同樣重要,尤其是在多用户或多租户的企業系統中。最終,記憶應改善智能體行為:減少重複問題、提高連續性、降低令牌使用率、提升相關性。如果記憶只增加複雜性而不改善結果,則沒有價值。
Oracle的智能體記憶方案
Oracle正在通過Oracle AI Agent Memory Package(OAMP)應對這一挑戰,該包基於Oracle AI Database 26ai構建。這是一種AI數據庫,能夠存儲和查詢AI應用所需的數據類型——不僅包括傳統的行和列,還包括嵌入向量、JSON文檔、文本搜索和常規SQL。這些數據在數據庫中並存,智能體無需在多個系統間切換來獲取上下文。
OAMP提供以下核心功能:
- 用户和智能體:用於作用域記憶所有權
- 記憶:用於持久性事實和提取的知識
- 線程:用於對話歷史和連續性
- 上下文卡片:用於緊湊、即用型記憶檢索
- 摘要:用於長對話
- 向量搜索:用於語義回憶
- 數據庫持久化:確保重啓後記憶不丟失
以下是一個簡單代碼示例,展示了使用OAMP的基本流程:
from oracleagentmemory.core import OracleAgentMemory
from oracleagentmemory.core.llms import Llm
client = OracleAgentMemory(
connection=connection,
embedder="text-embedding-3-small",
llm=Llm("gpt-5.5"),
extract_memories=True,
schema_policy="create_if_necessary",
)
client.add_user("angie", "Developer exploring agent memory patterns.")
client.add_agent("memory-demo-agent", "Assistant that demonstrates Oracle AI Agent Memory.")
client.add_memory("Angie is fascinated by agent memory and prefers practical examples over abstract explanations.", user_id="angie", agent_id="memory-demo-agent")這段代碼展示了OAMP如何通過OracleAgentMemory客户端橋接智能體應用和Oracle AI數據庫。數據庫連接指定記憶存儲位置,嵌入器將記憶文本轉化為向量用於語義檢索,LLM支持自動記憶提取和摘要生成。用户和智能體註冊實現記憶所有權作用域,防止跨用户或跨智能體的上下文泄露。
OAMP的設計理念是:智能體記憶不僅僅是向量搜索問題,有些記憶需要語義檢索,有些需要有序讀取或精確SQL過濾。基於數據庫的記憶系統能夠支持所有這些模式。
總之,智能體記憶是一個充滿挑戰但潛力巨大的領域。通過理解不同類型的記憶並採用合適的存儲和檢索策略,開發者可以構建出真正具有連續性和適應性的AI智能體。Oracle的OAMP為這一目標提供了一個強大的基礎設施。