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 實作結構化記憶,自動構建由嵌入支持的知識圖譜、視覺化圖譜及智慧檢索

學習目標

完成本課程後,你將能:

區分各種 AI 代理的記憶類型,包括工作記憶、短期記憶與長期記憶,以及專門形式如人格記憶及情節記憶。

為 AI 代理實作與管理短期與長期記憶,使用 Microsoft Agent Framework,運用 Mem0、Cognee、白板記憶等工具,並整合 Azure AI Search。

理解自我改進 AI 代理背後的原理,及穩健的記憶管理系統如何促使持續學習與適應。

了解 AI 代理記憶

本質上,AI 代理的記憶指的是允許它們保留與回憶資訊的機制。這些資訊可能是對話的具體細節、使用者偏好、過去的行動,甚至是學習到的模式。

沒有記憶,AI 應用程式通常是無狀態的,意思是每次互動都從頭開始。這會導致重複且令人沮喪的使用體驗,代理「忘記」先前的上下文或偏好。

為何記憶重要?

代理的智力深深連結於回憶與使用過去資訊的能力。記憶讓代理能:

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

互動:在持續對話中維持上下文。

主動與被動反應:根據歷史數據預測需求或適當回應。

自主:能更獨立運作,憑藉儲存的知識。

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

記憶類型

工作記憶

想像這是代理在單一、持續任務或思考過程中使用的草稿紙,它持有計算下一步所需的立即資訊。

對 AI 代理而言,工作記憶通常擷取對話中最相關的資訊,即使完整聊天記錄很長或被截斷。它聚焦於抽取類似需求、建議、決策與行動等核心元素。

工作記憶範例

在旅行訂票代理中,工作記憶可能擷取使用者當前的請求,例如「我想訂一趟巴黎的旅行」。這項具體需求被保留在代理的即時上下文中以引導當前互動。

短期記憶

此類記憶保留資訊於單一對話或工作階段期間。它是當前聊天的上下文,使代理得以回顧對話中的過去交換內容。

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

短期記憶範例

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

長期記憶

這是能跨多次對話或會話持續保留的資訊。它使代理能記住使用者偏好、歷史互動或一般知識,且持續期間較長,非常重要於個人化。

長期記憶範例

長期記憶可能儲存「Ben 喜歡滑雪及戶外活動、喜歡山景咖啡、因過去受傷而避免高難度滑雪道」等信息。這些從先前互動學習來的資訊會影響未來旅遊規劃的推薦,使其高度個人化。

人格記憶

此專門記憶類型幫助代理發展一貫的「個性」或「人格」。它使代理能記得自身或預期角色的細節,讓互動更流暢且聚焦。

人格記憶範例

若旅行代理被設計為「專業滑雪規劃師」,人格記憶可能強化此角色,使回應更符合專家的語氣與知識。

工作流程/情節記憶

此記憶存儲代理在執行複雜任務時的步驟序列,包括成功與失敗。它像是記住特定「情節」或過往經歷來學習。

情節記憶範例

如果代理試圖訂某班機卻因無座位失敗,情節記憶可記錄此失敗,使代理能嘗試替代航班或在下一次嘗試時更詳情告知使用者。

實體記憶

這包含從對話中抽取並記住特定實體(如人物、地點或物件)與事件,使代理能建立對討論關鍵元素的結構化理解。

實體記憶範例

從談論過去旅程的對話中,代理可能擷取「巴黎」、「艾菲爾鐵塔」與「Le Chat Noir 餐廳晚餐」等實體。未來互動中,代理可回憶起「Le Chat Noir」並主動提供預訂服務。

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

儘管 RAG 是較廣泛的技術,但「結構化 RAG」被強調為強大的記憶技術。它從各類來源(對話、電子郵件、圖片)中提取密集且結構化的資訊,並用以提升回應的精確度、召回率和速度。與僅依賴語意相似度的經典 RAG 不同,結構化 RAG 利用資訊的固有結構。

結構化 RAG 範例

結構化 RAG 不只是關鍵詞匹配,它能解析電子郵件中的航班細節(目的地、日期、時間、航空公司)並以結構化形式儲存。這讓查詢「我星期二訂了什麼飛往巴黎的航班?」變得精確可行。

實作與儲存記憶

為 AI 代理實作記憶涉及系統化的記憶管理流程,包括生成、儲存、檢索、整合、更新,甚至「忘記」(或刪除)資訊。檢索是其中極為重要的一環。

專門記憶工具

Mem0

管理代理記憶的一種方式是使用像 Mem0 這類專門工具。Mem0 作為持久化記憶層,讓代理能回顧相關互動、儲存使用者偏好與事實背景,並從成功與失敗中學習。核心理念是讓無狀態代理轉變為有狀態代理。

它透過兩階段記憶流程:抽取與更新來運作。首先,新增到代理對話串的訊息會送至 Mem0 服務,該服務利用大型語言模型(LLM)摘要對話歷史並抽取新記憶。接著,LLM 驅動的更新階段決定是否新增、修改或刪除記憶,這些記憶儲存在融合向量、圖譜和鍵值資料庫的混合型資料存儲中。此系統支援多種記憶類型,也可納入圖譜記憶,管理實體間的關係。

Cognee

另一強大方案是使用 Cognee,一款開源語意記憶工具,能將結構化與非結構化資料轉化為由嵌入支持的可查詢知識圖譜。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 翻譯服務 Co-op Translator 進行翻譯。雖然我們努力追求準確性,但請注意自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應視為權威來源。對於關鍵資訊,建議採用專業人工翻譯。我們不對因使用此翻譯所產生的任何誤解或誤譯承擔責任。