智慧體記憶:從對話歷史到持久化知識
文章深入探討了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為這一目標提供了一個強大的基礎設施。