ai-agents-for-beginners

AI 代理的記憶體

Agent Memory

在討論建立 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 應用通常是無狀態的,意味每次互動都從頭開始。這會造成重複且令人沮喪的用戶體驗,代理「忘記」先前的上下文或偏好。

為什麼記憶很重要?

代理的智慧與其回憶及利用過去資訊的能力密切相關。記憶讓代理能夠:

反思:從過去的行動與結果中學習。

互動:持續對話期間維持上下文。

前瞻與反應:根據歷史資料預測需求或做出適當回應。

自主:通過存取記憶知識更獨立地運作。

實作記憶的目標是讓代理變得更可靠且有能力

記憶類型

工作記憶

可以把它想像成代理在單一的持續任務或思考過程中使用的草稿紙。它保存完成下一步計算所需的即時資訊。

對 AI 代理來說,工作記憶通常提取對話中最相關的資訊,即使完整聊天紀錄很長或被截斷。它重點抓取關鍵元素,如需求、提案、決策及行動。

工作記憶範例

在旅遊訂票代理中,工作記憶可能記錄使用者當前的需求,例如「我想預訂去巴黎的行程」。此具體要求會保存在代理的即時上下文中,以引導當前對話。

短期記憶

這類記憶在單一次對話或會話期間保存資訊。它就是當前聊天的上下文,使代理能參考對話中先前的回合。

Microsoft Agent Framework Python SDK 範例中,短期記憶對應 AgentSession,透過 agent.create_session() 創建。會話是框架內建的短期記憶:保留同一會話中的對話上下文,但當會話結束或應用重啟時,該上下文不會持久保存。需跨會話保存事實和偏好,則使用長期記憶,通常透過資料庫、向量索引或其他持久儲存設備。

短期記憶範例

如果使用者詢問「去巴黎的機票多少錢?」接著問「那裡的住宿呢?」短期記憶確保代理知道「那裡」在同一對話中指的是「巴黎」。

長期記憶

這類資訊能跨多次對話或會話持久保存。它讓代理記住使用者偏好、歷史互動或一般知識,適用於個人化服務。

長期記憶範例

長期記憶可能記錄「Ben 喜歡滑雪和戶外活動,愛喝咖啡搭配山景,且因過去受傷避免高難度滑雪道」。這些從先前互動中學習而來的資訊,影響未來行程規劃建議,使推薦更具個人化。

角色記憶

這種專門的記憶類型協助代理建立一致的「人格」或「角色」。它能讓代理記住關於自己或預定身份的細節,讓互動更流暢和聚焦。

角色記憶範例 若旅遊代理設計為「滑雪專家規劃師」,角色記憶可強化此身分,使代理回應時帶有專家口吻與知識。

工作流程/事件記憶

此記憶保存代理在複雜任務中的步驟序列,包含成功與失敗。就像記住特定「事件」或過去經驗,以便從中學習。

事件記憶範例

若代理嘗試訂票但因無法訂到座位失敗,事件記憶可記錄此失敗,讓代理下次嘗試時能試其他航班或更明確告知使用者問題。

實體記憶

涉及從對話中擷取並記住特定實體(如人物、地點或事物)及事件。讓代理能建立對談論中關鍵元素的結構化理解。

實體記憶範例

從一次談論過去旅程的對話中,代理可能提取「巴黎」、「艾菲爾鐵塔」和「在 Le Chat Noir 餐廳用晚餐」等實體。未來互動時,代理或能回憶起「Le Chat Noir」並主動提出新訂位。

結構化 RAG(檢索增強生成)

雖然 RAG 是較廣泛的技術,「結構化 RAG」被強調為強大的記憶技術。它從各種來源(對話、電子郵件、圖片)抽取密集且結構化資訊,用以提升回應的精確度、召回率及速度。不同於純語義相似度的傳統 RAG,結構化 RAG 利用資訊的內在結構。

結構化 RAG 範例

不僅是關鍵字匹配,結構化 RAG 能解析電子郵件中的航班詳細資訊(目的地、日期、時間、航空公司),並以結構化方式儲存。這讓查詢如「我週二訂了哪班去巴黎的航班?」變得精準易答。

實作與儲存記憶

為 AI 代理實作記憶涉及系統性的記憶管理程序,包括產生、儲存、檢索、整合、更新,甚至「忘記」(或刪除)資訊。檢索尤其關鍵。

專用記憶工具

Mem0

一種儲存與管理代理記憶的方式是使用專用工具如 Mem0。Mem0 作為持久記憶層,讓代理能回顧相關互動,保存使用者偏好與事實上下文,從成功與失敗中學習。這讓原本無狀態的代理變成有狀態。

它透過兩階段記憶流程:擷取與更新運作。代理對話新增信息會送到 Mem0 服務,由大型語言模型(LLM)摘要對話歷史並擷取新記憶。接著,LLM 驅動的更新階段決定要新增、修改還是刪除記憶,並儲存在包含向量、圖譜及鍵值資料庫的混合儲存中。此系統支持多種記憶類型,並可整合圖譜記憶管理實體間關係。

Cognee

另一強力方案是使用 Cognee,這是為 AI 代理設計的開源語義記憶,將結構化與非結構化數據轉成以嵌入支持的可查詢知識圖譜。Cognee 採用雙重儲存架構,結合向量相似度搜索與圖關係,讓代理理解不僅是資訊相似度,還有概念間的關聯。

它擅長混合檢索,融合向量相似度、圖結構與 LLM 推理——從原始區塊查找到具圖譜感知的問答。系統維護可演化成長的活記憶,並作為一體連結圖譜保持可查詢性,支持短期會話上下文及長期持久記憶。

Cognee 筆記型教程(13-agent-memory-cognee.ipynb)示範建構此整合記憶層,提供多元數據源導入、知識圖譜視覺化和依代理需求調整查詢策略的實例。

利用 RAG 儲存記憶

除了專用記憶工具如 Mem0外,您還能利用強大的搜尋服務如 Azure AI Search 作為儲存與檢索記憶的後端,尤其適合結構化 RAG。

這讓您能用自己的數據為代理回應提供依據,確保答案更貼切與精確。Azure AI Search 可用於儲存使用者特定的旅遊記憶、產品目錄或其他領域知識。

Azure AI Search 支援像 結構化 RAG 的能力,善於從大型資料集(如對話歷史、電子郵件甚至圖片)中抽取和檢索密集而結構化的資訊。相較傳統的文字切塊和嵌入法,提供「超人般的精確度與召回率」。

讓 AI 代理自我改進

自我改進代理的一個常見模式是引入一個「知識代理」。此獨立代理觀察使用者與主要代理間的對話,作用是:

  1. 辨識有價值資訊:判斷對話中有無值得保存為一般知識或特定使用者偏好的部分。

  2. 擷取與摘要:提煉對話中的核心學習或偏好。

  3. 儲存於知識庫:將擷取資訊持久化,通常在向量資料庫,以便日後檢索。

  4. 增強未來查詢:當使用者提出新查詢時,知識代理檢索相關記憶並附加在使用者提示中,為主要代理提供關鍵上下文(類似 RAG)。

記憶優化

延遲管理:為避免拖慢用戶互動流程,初期可使用成本較低、速度較快的模型快速判斷資訊是否值得儲存或檢索,僅在必要時調用複雜的擷取/檢索流程。

知識庫維護:對於日益龐大的知識庫,較少使用的資訊可以移至「冷存儲」,以控管成本。

對代理記憶還有疑問嗎?

加入 Microsoft Foundry Discord 與其他學習者交流,參加開放時間並解決您的 AI 代理問題。

上一課

AI 代理的上下文工程

下一課

探索 Microsoft Agent Framework


免責聲明: 此文件已使用 AI 翻譯服務 Co-op Translator 進行翻譯。雖然我們努力追求準確性,但請注意自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應視為權威來源。對於關鍵資訊,建議採用專業人工翻譯。我們不對因使用此翻譯所產生的任何誤解或誤譯承擔責任。