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