向量數據庫真的能滿足所有 AI Agent 的記憶需求嗎?
作者 | Debmalya Biswas
編譯 | 岳揚
圖:Agentic AI 記憶管理(圖片由作者提供)
1.Agentic AI 系統簡介
AI Agent 是當前的熱門話題。我之前對此有過撰述,其他人也正在熱議這個話題。然而,圍繞 Agentic AI 系統的具體定義,卻有不少爭議。它們與生成式 AI(Gen AI)或大語言模型(LLM)智能體究竟有何區別?
本節旨在通過分析 Agentic AI 系統在實施具體營銷案例時的功能性與非功能性需求,為這場討論撥云見日 —— 具體見圖 1。
圖 1:Agentic AI 在營銷案例中的應用(圖片由作者提供)
面對用戶任務,Agent 平臺的目標是找出能夠勝任該任務的 Agent(或 Agents 集群)。首先,我們需要的是一個能夠將任務拆分為子任務的編排層(orchestration layer),并由編排引擎來協調各 Agent 的執行。
目前,我們依靠 LLM 來處理任務分解,這就是與 Gen AI 的重疊之處。但遺憾的是,這也意味著當前 Agentic AI 的推理能力受限于大語言模型(LLM)。
以 GPT4 為例,其對以下提示詞的任務分解在圖 1 中有詳細展示:“生成一項量身定制的電子郵件營銷計劃,目標是一個月內實現 100 萬美元的銷售目標。相關產品及其性能數據可在 [url] 查詢。請接入 CRM 系統 [integration],獲取客戶姓名、電子郵件地址和人口統計詳細信息。”
分解步驟為:(分析產品)—(確定目標群體)—(創建定制電子郵件營銷活動)。
接下來,系統將監控執行過程和執行環境,并自主進行調整。在本案例中,Agent 意識到無法達成銷售目標,便自主增加了以下任務:(尋找替代產品)—(利用客戶數據)—(進行A/B測試)。
值得一提的是,對于多數應用場景,與企業系統的集成(如本例的 CRM 系統)是不可或缺的。例如,可以參考 Anthropic 最近提出的模型上下文協議(MCP)[1],該協議旨在將 AI Agents 與存儲企業數據的外部系統相連接。
鑒于這類任務的長期運行性質,Agentic AI 系統的內存管理顯得尤為關鍵。一旦啟動了初步的電子郵件營銷活動后,Agents 就需要對其進行為期一個月的監控。
這就涉及到在任務間共享上下文以及在長時間內維持執行上下文的連續性。
目前的做法是利用向量數據庫(Vector DBs)來外部存儲 Agents 的記憶,確保數據項在需要時能夠被訪問。接下來,我們將深入探討以下細節:
- 如何通過向量數據庫管理 AI Agents 的記憶
- 以及相應的數據質量問題。
我們會發現,盡管向量數據庫在處理會話記憶(如問答對(Q&A pairs))時足夠用,但對于 agentic 任務來說,它們在管理以下額外記憶類型時顯得力不從心:
- 語義記憶(通用知識)
- 情景記憶(個人體驗)
- 程序記憶(技能與任務流程)
因此,我們強調需要采用其他形式(例如,知識圖譜、有限狀態機)來有效地對記憶存儲進行管理。
2.利用向量數據庫進行會話記憶管理
向量數據庫(Vector DBs)是專為存儲向量數據而設計,并能基于向量間的相似度來處理查詢。這類數據庫當前是存儲和提取對話智能體所需數據(記憶)的核心工具。圖 2 展示了如何利用向量數據庫對對話智能體進行編碼和記憶管理。
圖 2:基于向量數據庫的編碼技術,用于 LLMs(圖片由作者提供)
這一過程涉及到選擇一個編碼器模型,該模型獨立于主流程,負責將不同類型的原始數據(如文本、音頻和視頻)離線轉換為向量。在編碼空間中,相似的對話數據會被映射到彼此靠近的向量上。
例如,文本必須轉換為數值向量才能被計算機處理,這一轉換是通過分詞器(Tokenizers)完成的。token 可以是字節、字符、字符組合、單詞甚至是完整的句子。目前,字節對編碼(BPE)是最常用的分詞方法,它將一對相鄰的字節作為一個 token。
選擇合適的“token”至關重要,因為它不僅決定了神經網絡能夠捕捉的 token 間關系,還影響著訓練該網絡的計算復雜度。
這些編碼后的數據存儲在向量數據庫中,在推理階段,可以基于向量相似度,使用相同的編碼器模型來檢索這些數據。在對話過程中,對話智能體可以通過編碼查詢(query)內容并在向量數據庫中搜索相關信息來訪問長期記憶系統。隨后,智能體會利用檢索到的信息來回答用戶的查詢(query),這些信息是基于之前存儲的數據。
2.1 向量數據庫中的數據質量問題
盡管數據質量對 AI 的重要性得到了普遍認同,但目前企業對數據質量的關注主要集中在對結構化數據 / SQL 數據的處理上。非結構化數據,如文本、圖像、音頻和視頻,幾乎占據了與企業生成式 AI(Gen AI)使用場景相關的 80% 的數據,卻往往被忽視。本節我們將探討:
對于存儲在向量數據庫中的非結構化數據,數據質量的標準是什么?特別是在檢索增強生成(RAG)的應用場景中。
結合微調技術,RAG 成為了將預訓練的大語言模型(LLM)與企業數據相結合,增強其上下文相關性和同時在此過程減少幻覺產生的關鍵手段之一(見圖 3 的 Gen AI 生命周期階段)。
圖 3:Gen AI 生命周期階段(圖片由作者提供)
面對用戶查詢,RAG 流程包括以下三個步驟(見圖 4):
- 檢索:將用戶查詢轉換為向量形式的嵌入,以計算其與其他內容的相似度得分。
- 增強:利用從向量存儲中檢索到的最新搜索結果/上下文進行信息補充。
- 生成:通過將檢索到的信息片段整合到提示詞模板中,為 LLM 提供額外的上下文,從而生成針對查詢的上下文響應。
我們首先來看看當前結構化數據 / SQL 數據世界中常見的數據質量維度:
- 準確性:數據反映現實情況的精確度如何?
- 完整性:數據是否存在缺失值或空值?
- 一致性:信息在不同位置存儲時是否保持一致?
- 及時性:數據的時間戳反映了其新鮮程度。
接下來,我們將它們應用于非結構化數據領域/向量數據庫 —— 具體見下圖 4。
圖 4:RAG — 向量數據庫中的數據質量問題(圖片由作者提供)
在向量數據庫領域,集合(collection)相當于 SQL 數據庫中的表(table),每個集合項通常包含:唯一標識符(ID)、向量(實際數據,以浮點數數組形式存儲)和元數據(例如,時間戳)。
準確性:指的是向量存儲中數據的精確度。試想,如果 AI 基于錯誤信息撰寫新聞,可能會產生虛假新聞而非有價值的內容。我們通過以下兩個指標來衡量這一點:
- 正確性:涉及 LLM 響應的事實準確性,
- 基礎性:涉及 LLM 響應與底層知識庫(KB)的關系。
研究發現[2],即使模型響應是正確的,也可能缺乏適當的依據。
錯誤和不一致的向量:由于嵌入過程中的問題,一些向量可能受損、不完整,或者以錯誤的維度生成,這可能導致 AI 輸出混亂或脫節。例如,如果 AI 基于音質參差不齊的錄音生成音頻,結果可能會顯得不連貫。在文本生成中,數據中的語法或語氣不一致可能導致內容生硬或脫節。
缺失數據的形式可以是缺失向量或元數據。例如,如果生成式 AI 從數據不完整的數據集中生成視覺設計,可能會產出帶有缺失元素的設計。
及時性:如果為 RAG pipeline 中的提示詞提供上下文向量的數據庫中的文檔已經過時,那么生成式 AI 系統可能會產生不相關的輸出。例如,如果一個啟用了生成式 AI 的聊天機器人基于過時的政策文件回答問題,就可能會提供不準確且具有誤導性的答案。
3.Agentic Memory
盡管上述方法能夠有效地將對話存儲為問答對并實現檢索,但它并不足以滿足 Agentic AI 系統所需的其他記憶類型,這些記憶類型對于復制或改進人類行為至關重要,尤其是以下四種:
- 語義記憶(Semantic memory) —— 存儲事實、概念、意義等通用知識。
- 情景記憶(Episodic memory) —— 記錄與過去特定事件和情境相關的個人經歷。
- 程序記憶(Procedural memory) —— 存儲如駕駛汽車等運動技能,以及完成任務的相應程序步驟。
- 情感記憶(Emotional memory) —— 保存與個體經歷相關的情感體驗。
3.1 理解人類記憶
在本節中,我們首先探討人類大腦如何處理短期記憶和長期記憶 —— 如圖 5 所示。
圖 5:人類大腦的記憶管理(圖片由作者提供)
記憶的形成始于感覺系統,來自外界的信息首先進入感覺記憶(sensory memory)。這一初始階段以原始形式保存感覺信息,但持續時間極短,通常僅有幾百毫秒。
隨后,被我們注意到的信息會轉移到短期記憶(STM)。短期記憶的容量有限,僅能保存大約 7 個信息塊,且持續時間約為 20 到 30 秒。它是我們進行思考、解決問題和做出決策等有意識心理活動的場所。
信息要從短期記憶轉移到長期記憶(LTM),需要經過編碼過程,將其轉化為更持久且具有意義的表征。
編碼通過多種機制實現(例如重復、精細加工,或與已有知識建立關聯)。
成功編碼后,信息會進入長期記憶。長期記憶的容量極大,能夠存儲信息長達數小時,甚至一生。
記憶的檢索系統依賴于與上下文信息的關聯。外部和內部的檢索線索通過重現編碼時的情境,幫助我們提取特定記憶。
- 回憶是指在沒有外部線索的情況下,主動重建信息的過程。
- 再認則是指在多個選項中識別出之前遇到的信息。
- 此外,檢索策略如促發(priming)、記憶技巧(mnemonic techniques)、分塊(chunking)和復述(rehearsal),能夠顯著提升記憶的提取效率。
3.2 映射到 Agentic 記憶
基于我們對人類大腦的理解和 AI Agents / 應用的要求,我們需要考慮以下記憶類型 —— 如圖 6 所示:
- 語義知識:來自外部(如 Wikipedia)和內部系統(如 Sharepoint、Confluence、文檔、消息平臺等)的信息。
- 情景記憶:特定過去事件和情境的記憶。這些內容是在 AI Agents 運行過程中獲得的。
- 程序記憶:類似于人類記住游泳或開車等運動技能的方式。它涵蓋了描述 AI Agents 如何實現特定任務的工作流和程序。
- 情感記憶:記錄與個體經驗相關的情感。涉及用戶關系、偏好、反應和相關數據,使 AI 在用戶交互中更具人性,并在用戶互動中保持一致。
語義記憶可能是目前唯一在 LLM 中通過預訓練和嵌入可實現的記憶類型 —— 其他記憶類型仍在開發中。
在后續部分,我們將展示如何為 Agentic AI 系統實現一個全面的記憶管理模塊 —— 如圖 6 所示。
圖片
圖 6:Agentic AI 記憶管理(圖片由作者提供)
記憶路由器默認總是將請求路由到長期記憶 (LTM) 模塊,以查看是否存在現有模式來響應給定的用戶提示詞。如果有,它就會檢索并立即做出響應,根據需要進行個性化處理。
如果 LTM 失效,記憶路由器將其路由到短期記憶 (STM) 模塊,該模塊然后使用其檢索過程(函數調用、API 等)將相關上下文檢索到 STM(工作記憶)中,并充分利用適用的數據服務。
STM-LTM 變換模塊始終處于活動狀態,并不斷獲取檢索到的上下文,從中提取“recipes”(例如,參考可教學智能體和 AutoGen 中的“recipes”概念),并存儲在語義層(通過向量數據庫實現)。與此同時,它還在收集其他相關屬性(例如,token 數量、產生模型響應的成本、系統狀態、執行的任務/生成的響應),并創建一個 episode,然后將其存儲在知識圖譜中,其中底層過程存儲在有限狀態機(FSM)中。
4.Conclusion
總而言之,記憶管理對于長期運行的 AI Agents 的廣泛應用至關重要。雖然向量數據庫在處理對話式智能體時表現出色,但我們發現它們無法滿足復雜 Agentic AI 任務多樣化的記憶需求,尤其是情景記憶(episodic memory)和程序記憶(procedural memory)。
在這篇文章中,我們提出了一種 Agentic 記憶架構的初步設計方案,其中記憶路由器(memory router)負責在短期記憶模塊(STM)和長期記憶模塊(LTM)之間進行請求調度。我們的主要貢獻是一個從 STM 到 LTM 的轉換器模塊,該模塊能夠將情景記憶抽象并存儲在知識圖譜(knowledge graphs)中,將程序記憶存儲在有限狀態機(FSMs)中。目前,我們正在積極優化 Agentic AI 系統中長期記憶(LTM)的存儲和檢索機制(包括探索其他形式的方法)。