在討論建立 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、Whiteboard 記憶工具,並整合 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,開源的 AI 代理語義記憶工具,將結構化及非結構化資料轉化為以嵌入向量支援的可查詢知識圖。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 翻譯而成。雖然我們致力於確保準確性,但請注意,機器自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於重要資訊,建議進行專業人工翻譯。我們不對因使用本翻譯而產生的任何誤解或誤釋承擔責任。