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 + 實體增強 + 預算感知的位置組裝。
- 提供提取層(
Extractortrait),包含模擬提取器與基於 LLM 的提取器。 - 透過星型別名邊、標準視圖投影與衝突偵測實現實體解析。
- 透過快照儲存/載入實現持久化;支援增量串流變更供應(
Added,Retracted,Cleared)。 - 支援「如果……會怎樣」模擬,可將儲存恢復至先前的位元級完全一致狀態。
- 提供 MCP 伺服器(JSON-RPC),使 Claude Code 或 Kimi CLI 可將 Lemmalog 當作工具呼叫。
- 提供 REPL,支援互動式規則編輯、查詢與除錯。
- 提供評估框架(
scenario::run_eval),可對 LongMemEval 基準測試的準確性、令牌使用量與延遲進行測量。
如何使用
- 觀察 – LLM 從對話中提取三元組,並透過
lemmalog_observe發送(行協定S --rel[conf]--> O)。 - 規則安裝 – 安裝領域特定的 Datalog 規則(例如
reports_to(X,Y) :- current(X,"manager",Y).)。 - 查詢 – 代理提出目標查詢(
lemmalog_query),接收繫結結果;亦可請求證明(lemmalog_why)。 - 上下文組裝 – 在回答使用者問題前,
AgentMemory::context_for_query使用 BM25 + 實體增強建構一個令牌預算內的上下文,僅將最相關的事實輸入 LLM。 - 工具整合 – 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。
相關
- 專案
- 專案
- 專案
- 專案