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、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 範例

它不僅是關鍵字匹配,還能從電郵中解析出航班細節(目的地、日期、時間、航空公司)並結構化儲存。這允許精確查詢例如「我星期二訂的飛巴黎航班是什麼?」。

實作與存儲記憶

為 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 翻譯而成。雖然我們致力於確保準確性,但請注意,機器自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於重要資訊,建議進行專業人工翻譯。我們不對因使用本翻譯而產生的任何誤解或誤釋承擔責任。