JordyZomer/lemmalog

A Datalog engine for LLM agent memory: stratified rules, provenance-tracked facts, incremental derivation, and an MCP server that lets your harness use it as a shared brain.

Lemmalog – 基於 Datalog 的 LLM 代理記憶引擎

是什麼 – Lemmalog 是一個 Rust 庫(含 CLI 和可選的 MCP 伺服器),讓 LLM 驅動的代理能將觀察結果儲存於 演繹資料庫,而非純粹的向量儲存。事實以三元組形式宣告(主語 --rel[信賴度]→ 客體),Datalog 引擎推導出額外事實、時間視圖、聚合與標準化實體名稱。引擎可回答查詢、解釋事實成立的原因,並在不修改真實儲存的情況下模擬「如果……會怎樣」的更新。

為什麼使用 Datalog? – 作者主張,代理的記憶應具備 可驗證性增量更新能力。透過將記憶視為分層 Datalog 程式,Lemmalog 可以:

  • 保留溯源資訊(每個事實由哪個事件產生),
  • 傳播信賴度分數,
  • 僅重新計算新事實到達時實際變更的部分資料庫。

核心功能(皆於 README 中標示為 ✅)

  • 支援分層、否定即不存在、循環偵測的完整 Datalog 解釋器。
  • 採用增量維護的半 naïve 不動點評估,實現快速增量更新。
  • 支援雙時態事實(valid_from, valid_to, asserted_at)與 now() 內建函數。
  • 信賴度註解(乘積 t-範數)與重新推導時合併的溯源集合。
  • 生成證明樹(why())並具備循環保護機制。
  • 規則頭中支援算術運算(例如 D = Dm + 1),線性求解。
  • 透過魔數集(ask_deep)實現高效點查詢評估。
  • 使用索引與 WAM 風格回溯,可在數百萬筆事實中實現亞微秒級查找。
  • LLM 查詢的混合檢索:在渲染後的事實上使用 BM25 + 實體增強 + 預算感知的位置組裝。
  • 提供提取層(Extractor trait),包含模擬提取器與基於 LLM 的提取器。
  • 透過星型別名邊、標準視圖投影與衝突偵測實現實體解析。
  • 透過快照儲存/載入實現持久化;支援增量串流變更供應(Added, Retracted, Cleared)。
  • 支援「如果……會怎樣」模擬,可將儲存恢復至先前的位元級完全一致狀態。
  • 提供 MCP 伺服器(JSON-RPC),使 Claude Code 或 Kimi CLI 可將 Lemmalog 當作工具呼叫。
  • 提供 REPL,支援互動式規則編輯、查詢與除錯。
  • 提供評估框架(scenario::run_eval),可對 LongMemEval 基準測試的準確性、令牌使用量與延遲進行測量。

如何使用

  1. 觀察 – LLM 從對話中提取三元組,並透過 lemmalog_observe 發送(行協定 S --rel[conf]--> O)。
  2. 規則安裝 – 安裝領域特定的 Datalog 規則(例如 reports_to(X,Y) :- current(X,"manager",Y).)。
  3. 查詢 – 代理提出目標查詢(lemmalog_query),接收繫結結果;亦可請求證明(lemmalog_why)。
  4. 上下文組裝 – 在回答使用者問題前,AgentMemory::context_for_query 使用 BM25 + 實體增強建構一個令牌預算內的上下文,僅將最相關的事實輸入 LLM。
  5. 工具整合 – MCP 伺服器透過 JSON-RPC 暴露相同操作,使 Claude Code 或 Kimi CLI 可將 Lemmalog 視為原生工具使用。

基準測試 – 在 LongMemEval 與 MemEval 套件中,Lemmalog 達成:

  • 102 題的 MemEval 基準測試中 F1 ≈ 0.49(約 50 萬回答階段令牌,遠少於全上下文基線)。
  • LoCoMo 基準測試中具競爭力的得分(F1 ≈ 0.57,僅次於 PropMem)。
  • 400 萬事實儲存中亞毫秒級查詢延遲。

成熟度 – README 將所有列出功能標示為已實作(✅),僅「Leapfrog triejoins(最壞情況最優連接)」與「DBSP 串流增量」仍在規劃中。包含全面測試套件(450 個隨機程式 vs. 簡單 Oracle、解析器模糊測試、差異測試),並提供 REPL 供手動實驗。

誰會受益?

  • 需要 可解釋可增量更新 記憶的 LLM 代理研究人員。
  • 希望以規則驅動知識庫取代原始向量儲存的 AI 助手開發者。
  • 任何需要對提取事實進行決定性溯源推理的人(例如審計追蹤、多代理協作)。

快速上手 – 克隆倉儲,執行 cargo run --bin lemmalog 啟動 REPL,或使用 cargo build --release --features mcp 建構 MCP 伺服器,並依 README 指示註冊至 Claude Code/Kimi。

相關

  • 專案
  • 專案
  • 專案
  • 專案