Skip to content

Latest commit

 

History

History
170 lines (88 loc) · 10.6 KB

File metadata and controls

170 lines (88 loc) · 10.6 KB

AI 代理人的記憶

代理人記憶

在討論建立 AI 代理人的獨特優勢時,主要會談到兩件事:呼叫工具來完成任務的能力以及隨時間改進的能力。記憶是建立能自我改進、為使用者創造更好體驗的代理人的基礎。

在本課程中,我們將探討 AI 代理人的記憶是什麼,以及如何管理和使用它來讓應用程式受益。

介紹

本課程將涵蓋:

了解 AI 代理人的記憶:什麼是記憶,以及為何對代理人至關重要。

實作與儲存記憶:為 AI 代理人新增記憶能力的實務方法,重點放在短期與長期記憶。

讓 AI 代理人自我改進:記憶如何讓代理人從過去互動中學習並隨時間改進。

可用的實作

本課程包含兩個完整的筆記本教學:

13-agent-memory.ipynb: 使用 Mem0 與 Azure AI Search 並結合 Semantic Kernel 框架來實作記憶

13-agent-memory-cognee.ipynb: 使用 Cognee 實作結構化記憶,自動建構由嵌入支持的知識圖譜、視覺化圖譜,並進行智慧檢索

學習目標

完成本課程後,您將知道如何:

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

使用 Semantic Kernel 框架實作並管理 AI 代理人的短期和長期記憶,利用 Mem0、Cognee、Whiteboard memory 等工具,並整合 Azure AI Search。

理解自我改進型 AI 代理人的原則,以及健全的記憶管理系統如何促進持續學習與適應。

了解 AI 代理人的記憶

其核心來說,AI 代理人的記憶是指允許它們保存與回憶資訊的機制。該資訊可以是關於對話的具體細節、使用者偏好、過去的操作,或甚至學到的模式。

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

為什麼記憶很重要?

代理人的智慧深深依賴於其回憶與利用過去資訊的能力。記憶讓代理人能夠:

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

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

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

自主運作:透過調用已儲存的知識,更獨立地運作。

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

記憶類型

工作記憶

可以將其視為代理人在單一、正在進行的任務或思考過程中使用的一張便條紙。它保存計算下一步所需的即時資訊。

對於 AI 代理人而言,工作記憶通常會擷取對話中最相關的資訊,即使完整的聊天記錄很長或被截斷。它專注於抽取關鍵元素,如需求、提案、決策與行動。

工作記憶範例

在一個旅遊訂票代理人中,工作記憶可能會擷取使用者當前的請求,例如「我想預訂一趟去巴黎的行程」。這個具體需求會保存在代理人的即時上下文中,以指引當前互動。

短期記憶

這種類型的記憶在單次對話或會話期間保留資訊。它是當前聊天的上下文,讓代理人能回溯對話中的先前回合。

短期記憶範例

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

長期記憶

這是在多次對話或會話之間持久存在的資訊。它允許代理人記住使用者偏好、歷史互動或長期的一般知識。這對個人化非常重要。

長期記憶範例

長期記憶可能會儲存「Ben 喜歡滑雪和戶外活動、喜歡有山景的咖啡,以及因過去受過傷而想避開高級滑雪道」等資料。這些從先前互動中學到的資訊會影響未來的旅遊規劃建議,使之高度個人化。

角色記憶

這種類型的專門記憶有助於代理人發展一致的「人格」或「角色」。它允許代理人記住關於自身或其預期角色的細節,使互動更流暢且有焦點。

角色記憶範例 如果旅遊代理人被設計為「滑雪專家」,角色記憶可能會強化這個角色,影響其回應以符合專家的語氣與知識。

工作流程/情節記憶

這種記憶儲存代理人在執行複雜任務時所採取的步驟順序,包括成功與失敗。它就像記住特定的「情節」或過去經驗以從中學習。

情節記憶範例

如果代理人嘗試預訂某班特定航班但因為無法取得而失敗,情節記憶可以記錄這次失敗,使代理人在之後的嘗試中嘗試替代航班或更有資訊地告知使用者問題所在。

實體記憶

這涉及從對話中抽取並記住特定實體(如人物、地點或事物)和事件。它允許代理人建立對討論中關鍵元素的結構化理解。

實體記憶範例

從一段關於過去旅程的對話中,代理人可能會擷取出「巴黎」、「艾菲爾鐵塔」以及「在 Le Chat Noir 餐廳用餐」等實體。在未來互動中,代理人可以回想起「Le Chat Noir」並主動提出幫忙重新訂位。

結構化 RAG(Retrieval Augmented Generation)

雖然 RAG 是一種較廣泛的技術,但「結構化 RAG」被突顯為一項強大的記憶技術。它從各種來源(對話、電子郵件、影像)中抽取密集且結構化的資訊,並用於提升回應的精確度、檢索率與速度。與僅依賴語意相似度的傳統 RAG 不同,結構化 RAG 會處理資訊的內在結構。

結構化 RAG 範例

結構化 RAG 不只是匹配關鍵詞,還可以從電子郵件中解析航班細節(目的地、日期、時間、航空公司)並以結構化方式儲存。這允許精確查詢,例如「我在星期二預訂到巴黎的哪班航班?」

實作與儲存記憶

為 AI 代理人實作記憶涉及一個系統性的「記憶管理」流程,其中包括產生、儲存、檢索、整合、更新,甚至「遺忘」(或刪除)資訊。檢索是一個特別關鍵的面向。

專門的記憶工具

Mem0

一種儲存和管理代理人記憶的方法是使用像 Mem0 這樣的專門工具。Mem0 作為一個持久化的記憶層,允許代理人回想相關互動、儲存使用者偏好和事實性上下文,並隨時間從成功與失敗中學習。這個概念是把無狀態的代理人轉變成有狀態的代理人。

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

Cognee

另一個強大的方法是使用 Cognee,一個為 AI 代理人提供語意記憶的開源方案,可將結構化與非結構化資料轉換成由嵌入支持、可查詢的知識圖譜。Cognee 提供一個雙儲存架構,將向量相似度搜尋與圖形關係結合,讓代理人不僅理解資訊間的相似性,還能理解概念彼此之間的關聯。

它在混合檢索方面表現出色,融合了向量相似度、圖形結構與 LLM 推理 —— 從原始區塊查找到具圖形感知的問答。該系統維持一個會演化與成長且仍可作為一個連結圖譜查詢的持續演進的記憶(living memory),支援短期會話上下文與長期持久記憶。

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](https://github.com/Azure/co-op-translator)進行翻譯。儘管我們力求準確,請注意自動翻譯可能包含錯誤或不精確之處。原始語言版本的文件應視為具權威性的來源。對於重要資訊,建議採用專業人工翻譯。我們對因使用此翻譯而產生的任何誤解或錯誤詮釋概不負責。