01쓰기 허용 게이트
출처 함의로 각 쓰기를 허용·강등·거부. 여기 경쟁사는 없습니다.
에이전트 메모리의 문제
Verimem은 지속 메모리 계층입니다. add()는 모든 쓰기를 반작화 허용 게이트로 통과시키고——출처가 정말로 그 사실을 함의하는가?——search()는 읽을 때마다 출처를 반환합니다. 문 앞에 공증인을 둔 해마입니다.
✓ 100% 무료 & 오픈소스 —— MIT 라이선스. 셀프호스팅·로컬 우선: 계정 불필요, API 키 불필요, 과금 없음.
다른 메모리 계층은 추출기가 내놓는 것을 무엇이든 저장합니다. Verimem은 아닙니다.
쓰기 시 후보 사실은 허용·강등·거부됩니다——인용된 출처가 실제로 그것을 함의하는지에 따라 결정됩니다. 값싸고 LLM이 필요 없는 어휘 스크린이 먼저 「된다 / 검증됨 / 완료」 같은 근거 없는 주장을 강등하고, 가장 엄격한 모드는 출처⊢사실 함의 검사를 더합니다. SNLI에서 측정하면 AUROC 0.971에 이르며, 이 수치는 심판과 무관합니다.
mem0, Zep, Letta, Cognee, MemOS를 구조적으로 검토한 결과, 어느 것도 쓰기 허용 게이트를 갖고 있지 않습니다. 그 게이트——그리고 매 읽기가 되돌려 주는 출처——가 핵심의 전부입니다.
예시 —— 세 가지 판정으로 보는 게이트
읽기는 텍스트만 반환하지 않습니다——각 사실에 대해 쓰기 시점의 status와 grounding_score를 반환하므로, 코드가 맹목적으로 믿는 대신 신뢰도로 조건을 걸 수 있습니다. 그리고 update()는 옛 사실을 결코 파괴하지 않고 대체(supersede)하여, 감사 가능한 history() 자취를 남깁니다.
memory.py · 쓰기는 게이트를 지나고, 읽기는 출처를 반환
from engram import Memory
mem = Memory() # local SQLite, offline
mem.add("The deployment uses PostgreSQL 16.") # write goes THROUGH the gate
for hit in mem.search("which database?"): # read returns provenance
print(hit["text"], hit["status"], hit["grounding_score"])
# -> The deployment uses PostgreSQL 16. ADMITTED 0.97 | 지표 | 결과 | 기록으로 |
|---|---|---|
| 쓰기 게이트 entailment | AUROC 0.971 | 출처⊢사실, 심판과 무관(SNLI). 쓰기 경로의 해자. |
| 다운스트림 환각 | 95.9% → 12.2% | −83.7 pp; McNemar p≈6e-44, 2개 시드에서 재현. 작화를 기권으로 바꾸는 방식(누락 3%→85%)이며 정확도를 올리는 것이 아닙니다 —— 그리고 이 축은 심판과 결합되어 있습니다. |
| 깨끗한 사실의 과도 거부 | 30–39% | 엄격한 임계값에서의 정직한 비용. 증류된 로컬 게이트(v2)는 깨끗한 사실의 0.924를 허용하여 이를 대부분 메웁니다. |
| Retrieval recall@5 · LongMemEval-s | 0.8745 | 전체 500, 심판 없음, 동일한 e5 임베더, 외부 API 0. Fusion ON 대 0.8525 OFF(+2.2 pp). 이전 n=300은 0.909 —— 낙관적이며, 전체 500 수치가 정직한 값입니다. 이것은 recall@k이며, 엔드투엔드 QA 정확도가 아닙니다. |
| 이탈리아어 retrieval | MRR +52% | e5 임베더로 전환 시 0.466 → 0.710, 영어 회귀 0. |
| 모순 감지 · HaluMem | TPR 0.66 / FPR 0.0125 | 시간적 대체 수정 이후. |
| 테스트 스위트 | 5,830 그린 | 테스트 파일 764개, 약 8.4만 줄. 자체 실행, 저장소에서 재현 가능. |
여기의 모든 수치는 자체 실행이며 저장소에서 재현 가능합니다 —— 제3자 순위표의 순위가 아닙니다. retrieval 수치는 recall@k이며 Mem0와 Zep가 내세우는 엔드투엔드 QA 정확도가 아니므로 직접 비교할 수 없습니다.
출처 함의로 각 쓰기를 허용·강등·거부. 여기 경쟁사는 없습니다.
각 사실이 status + grounding_score 반환; update()는 대체, history()는 감사 가능.
valid_until 하드 만료 —— 사실이 언제 참이 아니게 됐는지 아는 메모리.
Hosted MCP 모드: API 키 없음, 토큰 과금 없음 —— 호스트의 LLM이 일합니다.
쓰기 시 prompt-injection 차단 —— 영어뿐 아니라 이탈리아어 포함.
세션 시작 시 228개 메모리 도구. Claude Code, Cursor, Cline, Continue, Zed.
| 시스템 | 쓰기 게이트 | 읽기 출처 | 접근 | 성숙도 |
|---|---|---|---|---|
| Mem0 | ✗ | ✗ | 평면 벡터 + LLM 요약 | 확립, 널리 채택 |
| Zep / Graphiti | ✗ | 부분(시간적) | 시간적 지식 그래프 | 상용, 성숙 |
| HippoRAG | ✗ | ✗ | OpenIE + PageRank | 연구 |
| Verimem | ✓ | ✓ | 융합 리콜 + 게이트 + 수면 통합 | 완전 새것 · 아직 채택 0 |
경쟁사 점수와 채택은 출처와 시기에 따라 달라집니다; 우리가 서 있는 두 열 —— 쓰기 게이트와 읽기 출처 —— 는 마케팅 표가 아니라 구조적 검토에서 나왔습니다.
완전 새 공개 릴리스. 아직 아무도 의존하지 않습니다 —— 메인테이너의 일상 사용을 빼면 우리도.
지금은 소스 / git에서 설치. engram-memory 패키지는 v0.4.0 이후 목표입니다.
모든 수치는 저장소에서 재현 가능하지만 제3자 감사는 없습니다. 인증이 아니라 재현 가능으로 취급하세요.
단일 사용자·로컬. 멀티테넌트 스코프는 사실 계층에 있으나 호스팅 / 분산 스토어는 없습니다.
엔티티+PageRank 엔진은 실제 데이터로 동작하나 추출기는 결정적 regex이며 백필로 실행 —— 아직 라이브 쓰기 경로에 연결되지 않음.
적대적 검토가 첫 answer-conditioning 데모를 부풀려졌다고 판정. 자체 증거로 서는 것은 쓰기 경로의 해자뿐 —— 그래서 그것만 주장합니다.
① Python —— 소스에서
pip install "git+https://github.com/aureliocpr-ctrl/verimem.git" engram 명령과 from engram import Memory SDK 제공. 로컬 SQLite, 오프라인, 게이트 기본 활성.
github.com/aureliocpr-ctrl/verimem ↗ · MIT · README · BENCHMARKS.md
② MCP 서버로 —— Claude Code, Cursor, Cline, Zed
{
"mcpServers": {
"engram": {
"command": "engram",
"args": ["mcp"],
"env": { "ENGRAM_HOSTED": "1" }
}
}
} 호스트를 재시작하면 메모리 도구를 API 키 없이 호출할 수 있습니다. 엔진은 현재 engram으로 배포 —— Verimem으로의 개명이 진행 중입니다.