在討論建立 AI 代理的獨特好處時,主要會討論兩件事:調用工具完成任務的能力以及隨時間改進的能力。記憶是建立能自我改進代理的基礎,能為使用者創造更佳體驗。
在本課程中,我們將探討 AI 代理的記憶是什麼,以及如何管理和運用記憶來提升應用程式的效益。
本課程將涵蓋:
• 了解 AI 代理記憶:什麼是記憶及其對代理的重要性。
• 實作與儲存記憶:為 AI 代理加入記憶功能的實用方法,重點放在短期與長期記憶。
• 讓 AI 代理自我改進:記憶如何使代理能從過去互動中學習並隨時間進步。
本課程包含兩個完整的筆記型教程:
• 13-agent-memory.ipynb: 使用 Mem0 和 Azure AI Search,搭配 Microsoft Agent Framework 實作記憶。
• 13-agent-memory-cognee.ipynb: 使用 Cognee 實作結構化記憶,自動建立以嵌入(embeddings)為基礎的知識圖譜,且可視化圖譜並智能檢索。
完成本課程後,您將能:
• 分辨各種 AI 代理記憶類型,包括工作記憶、短期記憶與長期記憶,以及特化形式如角色記憶和事件記憶。
• 使用 Microsoft Agent Framework 實作和管理 AI 代理的短期與長期記憶,並運用 Mem0、Cognee、Whiteboard 記憶和整合 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 範例
不僅是關鍵字匹配,結構化 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 進行翻譯。雖然我們努力追求準確性,但請注意自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應視為權威來源。對於關鍵資訊,建議採用專業人工翻譯。我們不對因使用此翻譯所產生的任何誤解或誤譯承擔責任。