在討論建立 AI 代理的獨特優勢時,主要有兩件事會被討論:調用工具以完成任務的能力以及隨時間改善的能力。記憶是創建能自我改進、為用戶創造更好體驗的代理的基礎。
在本課程中,我們將探討 AI 代理的記憶是什麼,如何管理和利用它來造福我們的應用。
本課程將涵蓋:
• 理解 AI 代理記憶:記憶是什麼以及它為什麼對代理很重要。
• 實作與存儲記憶:為您的 AI 代理新增記憶功能的實際方法,重點是短期和長期記憶。
• 使 AI 代理自我提升:記憶如何使代理從過去互動中學習並隨時間改進。
本課程包含兩個完整的筆記本教程:
• 13-agent-memory.ipynb:使用 Mem0 和 Azure AI Search 以及 Microsoft Agent Framework 實作記憶
• 13-agent-memory-cognee.ipynb:使用 Cognee 實作結構化記憶,自動構建由嵌入支援的知識圖,視覺化圖形並進行智能檢索
完成本課程後,您將了解如何:
• 區分各種類型的 AI 代理記憶,包括工作記憶、短期記憶和長期記憶,以及專門形式如角色記憶和章節記憶。
• 實作和管理 AI 代理的短期和長期記憶,使用 Microsoft Agent Framework,利用 Mem0、Cognee、白板記憶等工具,並整合 Azure AI Search。
• 理解自我提升 AI 代理背後的原理,以及強大記憶管理系統如何促進持續學習和適應。
本質上,AI 代理的記憶是指允許它們保留和回憶資訊的機制。這些資訊可以是某次對話的具體細節、用戶偏好、過去行為,甚至是學習到的模式。
沒有記憶,AI 應用通常是無狀態的,意味著每次互動都是從頭開始。這導致重複且令人沮喪的用戶體驗,代理「忘記」了先前的上下文或偏好。
代理的智能深深依賴於回憶和利用過往資訊的能力。記憶讓代理能夠:
• 反思:從過去的行動和結果中學習。
• 互動:在持續對話中維持上下文。
• 前瞻及回應:基於歷史資料預測需求或適當回應。
• 自主:藉由調用儲存的知識更獨立地運作。
實作記憶的目標是讓代理更可靠且有能力。
可以將其視為代理在單一進行中任務或思考過程中使用的草稿紙。它保留計算下一步所需的即時資訊。
對 AI 代理而言,工作記憶通常擷取對話中最相關的資訊,即使整個聊天歷史較長或被截斷。它專注於萃取關鍵要素如需求、提案、決策和行動。
工作記憶示例
在旅遊預訂代理中,工作記憶可能捕捉用戶當前需求,例如「我想訂巴黎的行程」。這特定需求被保存在代理的即時上下文中以指導當前互動。
此類記憶保留資訊於單一對話或會話期間。它是當前聊天的上下文,使代理能回顧對話中的先前回合。
在 Microsoft Agent Framework Python SDK 範例中,這對應到 AgentSession,用 agent.create_session() 建立。該會話是框架內建的短期記憶:只要會話持續重用,該對話上下文即可用,但會話結束或應用重啟時不會保留。需要跨會話保留的事實和偏好,應使用長期記憶,通常透過資料庫、向量索引或其他持久存儲。
短期記憶示例
如果用戶問「飛往巴黎的機票多少錢?」隨後又問「那住宿怎麼樣?」,短期記憶可確保代理知道此處「那裡」指的是同一對話中的「巴黎」。
這是跨多次對話或會話持續的資訊。它讓代理記得用戶偏好、歷史互動或長時間的一般知識,對個人化非常重要。
長期記憶示例
長期記憶可能儲存「Ben 喜歡滑雪和戶外活動,喜歡山景咖啡,曾因過去受傷避開高難度滑雪道」的資訊。這些從先前互動學來的資訊會影響未來旅遊規劃中的建議,使其高度個人化。
這種專門記憶類型幫助代理發展一致的「人格」或「角色」。讓代理記住自身或其角色的細節,使互動更流暢且有焦點。
角色記憶示例
如果旅遊代理被設計成「滑雪專家」,角色記憶會強化這個角色,影響其回應以符合專家語氣和知識。
此記憶儲存代理在複雜任務中所採取的步驟序列,包括成功與失敗。它像記住特定「章節」或過往經驗,以便從中學習。
章節記憶示例
若代理嘗試訂某航班失敗(因為無空位),章節記憶可記錄此失敗,使代理在下次嘗試時能換飛機或更有資訊告知用戶問題。
涉及從對話中抽取並記住特定實體(如人、地點或物件)以及事件。它讓代理建立關鍵元素的結構化理解。
實體記憶示例
在談論過去旅程的對話中,代理可能抽取出「巴黎」、「艾菲爾鐵塔」及「Le Chat Noir 餐廳晚宴」等實體。未來互動時,代理可回想起「Le Chat Noir」並提議重新預訂。
雖然 RAG 是更廣泛的技術,「結構化 RAG」被突出為強大的記憶技術。它從各種來源(對話、電郵、圖片)抽取密集的結構化資訊,用於提升回答的精確度、召回率及速度。不僅依賴語義相似度,結構化 RAG 利用資訊的內在結構。
結構化 RAG 示例
不僅是關鍵字匹配,結構化 RAG 能從郵件中解析航班細節(目的地、日期、時間、航空公司)並以結構化方式存儲。這讓您能精準查詢「我星期二訂了去哪裡的航班?」
為 AI 代理實作記憶涉及系統化的記憶管理流程,包括生成、存儲、檢索、整合、更新,甚至「遺忘」(或刪除)資訊。檢索尤其重要。
管理代理記憶的一種方法是使用專用工具如 Mem0。Mem0 作為持久記憶層,讓代理能回憶相關互動、存儲用戶偏好和事實上下文,並從成功與失敗中學習。理念是將無狀態代理轉為有狀態。
它透過兩階段記憶管線:擷取與更新運作。首先,加入代理主題的訊息會送到 Mem0 服務,用大型語言模型 (LLM) 摘要對話歷史並萃取新記憶。接著,LLM 驅動的更新階段判定要新增、修改或刪除這些記憶,並將它們存於包含向量、圖形及鍵值資料庫的混合資料庫中。系統支持各類記憶並可結合圖形記憶管理實體間關係。
另一強大方法是使用 Cognee,一個開源的 AI 代理語義記憶,將結構化與非結構化資料轉成可查詢的嵌入知識圖。Cognee 採用雙庫架構,結合向量相似度搜尋和圖形關係,使代理理解不只資訊相似度,更關注概念間如何相互連結。
它擅長混合檢索,結合向量相似度、圖結構和 LLM 推理——從原始段落查找到具圖知識的問答。此系統維持活記憶,隨著時間演進成長,並保持連接的圖形結構,可同時支援短期會話上下文及長期持久記憶。
Cognee 筆記本教程(13-agent-memory-cognee.ipynb)演示打造此統一記憶層,實例包括導入多樣化資料源、視覺化知識圖,及根據代理需求採用不同搜尋策略查詢。
除了專用記憶工具如 Mem0,你也可利用強大的搜尋服務如 Azure AI Search 作為記憶存取後端,特別是結構化 RAG。
這能以您自有資料為基礎,讓代理回答更貼切且精確。Azure AI Search 可用於存儲用戶特定的旅遊記憶、產品目錄或任何其他領域知識。
Azure AI Search 支援類似結構化 RAG 的功能,出色於從大型資料集(如對話歷史、電郵、圖片)中抽取和檢索密集結構化資訊,提供超越傳統文字段落切割與嵌入方法的「超人般精準和召回」。
自我提升代理的一個常見模式是引入「知識代理」。此獨立代理觀察用戶和主要代理間的對話。其角色是:
辨識有價值的資訊:判斷對話中是否有應保存為一般知識或特定用戶偏好的內容。
萃取與摘要:濃縮出對話中的學習重點或偏好。
存入知識庫:將萃取資訊持續存於向量資料庫,以便日後檢索。
擴充未來查詢:當用戶發起新查詢時,知識代理會檢索相關存儲資訊並附加於用戶提示,為主要代理提供關鍵上下文(類似 RAG)。
• 延遲管理:為避免拖慢用戶互動,可先使用較便宜且快速的模型初步檢查是否有資訊值得存取,只有必要時才調用較複雜的擷取/檢索過程。
• 知識庫維護:面對不斷成長的知識庫,較少使用的資訊可移到「冷存儲」以控制成本。
加入 Microsoft Foundry Discord,與其他學習者交流,參加辦公時間並獲取 AI 代理的相關問題解答。
免責聲明: 本文件使用 AI 翻譯服務 Co-op Translator 進行翻譯。雖然我們力求準確,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於重要資訊,建議尋求專業人工翻譯。我們不對因使用本翻譯而引起的任何誤解或曲解承擔責任。