ホームへ戻る

代理框架

Lemmalog、Datalogでエージェントの記憶を維持管理し、事実の撤回に応じて下流の結論を自動的に無効化

Lemmalogはエージェントの記憶を、LLMが抽出する事実と、ルールエンジンが維持管理する検証可能な状態に分割する。初期評価では、回答段階のコンテキストを大幅に短縮できることが示された一方、全体的な精度は依然として事実抽出とエンティティアライメントの制約を受けている。

Steve Jurvetson · CC BY 2.0 · Image source
zh-Hant

Lemmalogは長期的なエージェント記憶を、過去の会話から類似する断片を検索する仕組みではなく、「継続的に更新される演繹データベース」として再定義する。LLMは自然言語、コード、デバッグ出力を構造化された事実へ変換する役割を担う。一方、Rustで実装されたDatalogエンジンはルールの閉包を計算し、有効期間と出典を保持するとともに、基礎事実が修正された際には影響を受ける下流の結論だけを再計算する。これにより、ベクトル検索では対処しにくい問題を解決する。古い情報は意味的に関連していても、すでに無効になっている可能性があるからだ。

システムは、階層化Datalog、半ナイーブ固定点計算、負の事実の撤回、信頼度とprovenanceの注釈、および導出チェーンを表示できる`why()`をサポートする。名前の正規化により、異なるセッション内のローカルエンティティを共通の対象へマッピングする。BM25、エンティティグラフ、embeddingによって、曖昧検索の機能も維持される。さらにプロジェクトは12個のMCPツールを提供しており、Claude CodeやKimi CLIからクエリの実行、ルールのインストール、`what_if`シナリオのシミュレーション、セッションをまたぐsnapshotの保存が可能だ。[著者による技術解説](https://pwning.systems/posts/llm-memory-program-analysis/)と[MITライセンスのリポジトリ](https://github.com/JordyZomer/lemmalog)は、いずれも公開されている。

著者はClaude Sonnet 4.6を用いて情報を一度だけ抽出し、その後はMemEvalのreaderと評価プロセスを使用した。LongMemEvalを3回実施した結果、平均F1は0.463で、PropMemの0.550を下回った。ただし、回答モデルが各問題で受け取るのは約2,700 tokenにとどまり、全履歴は約104,000 tokenに達する。LoCoMoではF1が0.533で、コンテキストは約6分の1に短縮された。知識更新と誤った前提を含む問題では比較的優れた性能を示した一方、セッション横断と暗黙的推論は弱かった。

これらの数値を、そのままコスト削減率に換算することはまだできない。事実の構築には一度限りとはいえLLMによる抽出コストが発生し、比較対象のシステムが完全に同一のフロントエンドモデルを使用しているとも限らないためだ。今後、エンジニアリングチームは、抽出漏れ、条件付き知識の表現、複数writer間の整合性、そして信頼できないコンテンツが誤った事実を通じて導出チェーン全体を汚染し得るかを検証する必要がある。

出典

  1. I accidentally turned LLM memory into program analysis
  2. JordyZomer/lemmalog