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 – LLM 에이전트를 위한 Datalog 기반 메모리 엔진

무엇인가요 – Lemmalog은 Rust 라이브러리(CLI 및 선택적 MCP 서버 포함)로, LLM 기반 에이전트가 관측 내용을 단순 벡터 저장소가 아닌 추론 데이터베이스에 저장할 수 있게 해줍니다. 사실은 삼항식(S --rel[신뢰도]→ O) 형태로 주장되며, Datalog 엔진은 추가 사실, 시간적 뷰, 집계, 표준화된 엔티티 이름을 도출합니다. 엔진은 쿼리에 응답하고, 사실이 성립하는 이유를 설명하며, 실제 저장소를 변경하지 않고 "만약~라면" 업데이트 시뮬레이션을 수행할 수 있습니다.

왜 Datalog인가요? – 저자들은 에이전트의 기억이 검증 가능하고 단계적 업데이트 가능해야 한다고 주장합니다. 기억을 분층 Datalog 프로그램으로 간주함으로써 Lemmalog은 다음을 가능하게 합니다:

  • 증거 정보(각 사실을 생성한 에피소드)를 유지하고,
  • 신뢰도 점수를 전파하며,
  • 새로운 사실이 도착했을 때 실제로 변경된 부분만 재계산합니다.

주요 기능 (모두 README에 ✅로 표시됨)

  • 분층, 부정의 부재, 사이클 탐지 기능을 갖춘 완전한 Datalog 인터프리터.
  • 델타 유지 기능이 있는 반-나이브 고정점 평가로 빠른 단계적 업데이트.
  • 이중 시간적 사실(valid_from, valid_to, asserted_at)과 now() 내장 함수.
  • 신뢰도 주석(제품 t-노름)과 재도출 시 병합되는 증거 세트.
  • 사이클 보호 기능이 있는 증명 트리 생성(why()).
  • 규칙 헤드에서의 산술 연산(예: D = Dm + 1)을 선형적으로 해결.
  • 마지막 쿼리 평가를 위한 마지크 세트(ask_deep)를 통한 효율적인 포인트 쿼리 평가.
  • 인덱스와 WAM 스타일 백트래킹을 통해 수백만 개의 사실에서 마이크로초 단위 검색 가능.
  • LLM 쿼리용 하이브리드 검색: 렌더링된 사실에 대한 BM25 + 엔티티 부스팅 + 예산 인식형 위치 조립.
  • 모크 추출기와 LLM 기반 추출기를 갖춘 추출 레이어(Extractor 트레이트).
  • 별형 별칭 엣지, 표준 뷰 프로젝션, 충돌 탐지 기반의 엔티티 해결.
  • 스냅샷 저장/로드를 통한 지속성; 단계적 스트리밍 변경 피드(Added, Retracted, Cleared).
  • 이전의 바이트 수준 동일 상태로 저장소를 복원할 수 있는 "만약~라면" 시뮬레이션.
  • JSON-RPC를 통한 MCP 서버로, Claude Code 또는 Kimi CLI가 Lemmalog을 도구로 사용할 수 있음.
  • 상호작용식 규칙 편집, 쿼리, 디버깅을 위한 REPL.
  • LongMemEval 벤치마크와 비교하여 정확도, 토큰 사용량, 지연 시간을 측정하는 평가 허브(scenario::run_eval).

사용 방법

  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에 이어 2위).
  • 400만 사실 저장소에서 밀리초 미만의 쿼리 지연 시간.

성숙도 – README는 모든 기능이 구현됨(✅)으로 표시되어 있으나, "Leapfrog triejoins(최악의 경우 최적 조인)" 및 "DBSP 스트리밍 델타"는 아직 계획 중입니다. 포괄적인 테스트 세트(450개의 랜덤 프로그램 vs. 나이브 오라클, 파서 퍼징, 차이 테스트)가 포함되어 있으며, 수동 실험을 위한 REPL도 제공됩니다.

누가 이득을 볼 수 있나요?

  • 설명 가능하고 단계적 업데이트 가능한 기억이 필요한 LLM 에이전트를 개발하는 연구자.
  • 원시 벡터 저장소를 규칙 기반 지식 기반으로 교체하고 싶은 AI 어시스턴트 개발자.
  • 추출된 사실에 대해 결정론적이고 증거 기반의 추론이 필요한 사람(예: 감사 기록, 다중 에이전트 협업).

시작하기 – 리포지토리를 클론하고 cargo run --bin lemmalog로 REPL을 실행하거나, cargo build --release --features mcp로 MCP 서버를 빌드하고 README에 따라 Claude Code/Kimi에 등록합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트