Memoryfields:代理記憶作為可攜式檔案格式

代理記憶應被視為可攜式資料格式,而非多階段處理流程。Memoryfields 提案主張,現有的代理記憶系統——無論是專有平台鎖定的工具、過於複雜的資料庫架構,或僵化的知識圖譜——之所以失敗,是因為它們將記憶視為一個過程,而非資料。透過將記憶表示為一組 Markdown 檔案,並搭配可選的 SQLite 向量索引,代理可以以顯著更低的延遲和更高的彈性來維護與檢索資訊。

現有記憶系統的失敗

傳統的代理記憶系統通常可分為三類,每類都有其獨特的缺點:

  • 專有工具: 這些系統通常從對話歷史中挖掘資訊,過度關注使用者特定資料,而非一般世界知識,並將使用者鎖定在特定供應商平台。
  • 複雜架構: 某些系統依賴 pgvector、Neo4j 圖資料庫與專用 LLM 的組合,僅為判斷什麼值得記憶。這種複雜性帶來管理上的負擔,且經常混淆模型。
  • 高現代主義知識圖譜: 這些系統將資訊從其上下文中剝離,以創造精煉的事實或邏輯命題。這種方法使資訊與代理和使用者脫節,變得毫無意義。

Memoryfield 規格說明

Memoryfield 是一種可攜式記憶檔案格式,通常以 .zip 檔案歸檔,包含:

  1. Markdown 頁面: 記憶的主要儲存位置,以散文形式撰寫。
  2. YAML 前置欄位: 每頁的可選元資料(標題、建立日期、更新日期、UUID 和摘要)。
  3. SQLite 向量索引: 可選的語意搜尋索引,讓代理能直接跳轉至相關內容。

設計決策 1:散文優於區塊

與傳統 RAG(檢索增強生成)中複雜的區塊化與重排序流程不同,Memoryfields 使用散文。由於代理本身撰寫記憶,它可直接以 Markdown 格式撰寫——這正是它已優化過的格式。

為確保與向量嵌入相容,每頁設有約 8KB(~2,000 個詞元)的軟性上限。此限制鼓勵創建多個聚焦頁面,而非單一巨幅文件,這對代理與檢索器而言都是有益的約束。

設計決策 2:語意跳轉 vs. 圖譜遍歷

知識圖譜(如 Karpathy 維基)要求代理依序遍歷連結,導致「N+1 工具呼叫問題」。若相關資訊位於 N 層深度,代理必須進行 N+1 次串行工具呼叫,每次增加數秒延遲。此外,若頁面標題或連結文字未完美優化,代理往往難以找到資訊。

Memoryfields 以語意搜尋取代圖譜遍歷。這讓代理能根據內容直接跳轉至所有相關頁面,並行讀取。此過程最多僅需兩次工具呼叫:一次搜尋,一次讀取。

設計決策 3:模型擴展的低機制

透過使用簡單的檔案格式而非複雜的 API,Memoryfields 讓代理能發揮其本質優勢——如 Bash、Markdown 和 SQLite 的熟練度——自行發明存取模式。這種「低機制」方法確保系統能隨著模型邊界前進而擴展;隨著模型能力提升,它們能更智慧地管理記憶,而不受固定 API 的限制。

設計決策 4:傳輸無關性

為避免被鎖定,此格式為開放且傳輸無關。雖然標準歸檔格式為 ZIP 檔案,但規格允許記憶透過本地檔案、Amazon S3、GitHub 或 HTTP 提供。這確保使用者累積的知識可在不同代理與模型間自由攜帶與交換。

實作與技術限制

對於嵌入模型,規格建議使用 nomic-embed-text-v1.5。此模型因其大小(270MB)與效能的平衡而被選中,可在非 GPU 硬體上運行,同時仍是廣泛推薦的預設選擇。

安全考量

由於記憶會直接注入至上下文視窗,因此易受提示注入攻擊。作者強調,使用者不應與不可信的第三方共享上下文視窗或 memoryfields。使用靜態 ZIP 檔案格式,讓使用者能手動審查並透過 sha256sum 固定記憶檔案以確保安全。

社群觀點與反駁

技術使用者之間的討論突顯了幾個關於檔案式記憶的重要考量:

  • 「污染」問題: 有些使用者認為,記憶中單一行「污染」或錯誤的文字可能對所有下游輸出產生負面影響。一位使用者建議,簡單的文件目錄比正式的記憶系統更佳,以避免雜訊與漂移。
  • 與 RAG 的比較: 雖然有些人認為這「只是 RAG」,但其他人指出,差異在於代理是記憶的作者,創造出一個既優化於寫作也優化於閱讀的系統。
  • 外化缺口: 一種哲學批判認為,將資料庫套用在轉換器上只是一種「權宜之計」。論點是,真正的記憶應整合至模型的訓練或架構中,而非作為外部支架。
  • 維護負擔: 批評者指出,語意搜尋無法解決「遺忘」或更新過時資訊的問題。若某記憶被證明錯誤,它仍可能在未來搜尋中顯示語意相關,可能導致代理沿著過時路徑前進。

"無關的內容根本不會被語意搜尋浮現……這太樂觀了。有很多『記憶』或過去與代理的對話應該被抑制並遺忘,因為它們當時尋找的方向錯誤,或最終被證明是錯誤的。"

資料優先工作流程總結

  1. 撰寫: 代理以 Markdown 檔案形式撰寫記憶。
  2. 嵌入: 檔案被嵌入,向量儲存至 SQLite 資料庫。
  3. 檢索: 代理使用語意搜尋,並行找出並讀取相關記憶。

Sources

相關

  • Dispatch
  • 專案
  • Dispatch
  • 專案
  • 專案