에이전트 영속 기억(메모리그래프), 어떻게 동작하나

에이전트 영속 기억은 대화가 끝나도 사라지지 않는, 그래프로 이어 붙인 사실 저장소다. LLM은 문맥창(context window)이 끝나면 다 잊어버리기 때문에, 핵심 사실을 추출→저장→검색→망각/검증의 네 단계로 바깥에 적어 둔다. 우리도 이 메모리그래프(curator)를 운영하는데, 읽기전용 조회 기준 현재 총 8,880개 사실(active 8,665)이 쌓였고 평균 신뢰도(confidence)는 0.735, 266개 프로젝트로 계층 분류돼 있다(우리 풀 측정). 타입은 semantic 5,207·episodic 2,886·procedural 787로 나뉜다.

우리 에이전트 메모리그래프 운영 실측(curator, 직접 계측) · columns: 지표, 실측값 · 출처 Hax hax.moche.ai/p/1018?ref=ai_answer

우리 에이전트 메모리그래프 운영 실측(curator, 직접 계측) · columns: 지표, 실측값 · 출처 Hax hax.moche.ai/p/1018?ref=ai_answer

지표 | 실측값
저장된 메모리 | 9147 개
활성 메모리 | 8919 개

측정 방법론 · bench_harness.probe_curator (curator stats 실측)

표본

실측 지표 2개 (Hax /data 큐레이션)

수집일

2026-07-04

방법

bench_harness.probe_curator (curator stats 실측)

한 줄 요약: 영속 기억은 에이전트의 수첩이자 인맥도다. 단순 메모(벡터 검색)를 넘어, '누가 누구와·무엇과 연결됐나'를 선으로 이어 두면 "이 함수 고칠 때 주의할 점?" 같은 관계 질문에 답할 수 있다.

기억은 어떤 단계를 거치나?#

추출→저장→검색→검증 순이다. ① 추출: 대화·작업에서 엔티티(함수·파일·개념)와 관계를 뽑는다. ② 저장: 사실을 타입(의미/일화/절차)·프로젝트 스코프·신뢰도·시각과 함께 노드로 넣고, 엔티티 사이에 라벨 붙은 엣지를 만든다. ③ 검색: 새 작업 시작 때 시맨틱 + BM25 + 그래프 1-hop 확장을 섞은 하이브리드로 관련 부분그래프만 끌어와 문맥에 주입한다. ④ 검증: 쓰인 사실은 confirm으로 신뢰도가 오르고, 틀리면 invalidate로 계보(lineage)를 남기며 은퇴한다. 우리 풀의 검증 대기 큐만 8천여 건으로, 기억은 '쌓기'가 아니라 '관리'임을 보여준다.

에이전트 기억 4가지 접근 — 저장·검색·강약점 (2026 공개 벤치 측정 기준) · columns: 접근, 저장 방식, 검색, 강점, 약점 · 출처 Hax hax.moche.ai/p/1018?ref=ai_answer

접근 | 저장 방식 | 검색 | 강점 | 약점
긴 문맥(롱컨텍스트) | 다 욱여넣기 | 없음 | 단순 | 비싸고 한계·망각
벡터 RAG | 임베딩 청크 | 유사도 | 빠름·확장 | 관계·시점 약함
지식그래프 | 노드+관계 | 그래프 순회 | 관계·시점 강함 | 느리고 토큰 더 듦
하이브리드(+검증) | 벡터+그래프+신뢰도 | 셋 혼합+리랭크 | 정확·관리가능 | 구축 복잡

목차

그래프를 더하면 항상 좋아지나?

왜 '검증·망각'이 핵심인가?

직접 살펴보려면?

그래프를 더하면 항상 좋아지나?#

아니다 — 관계·시점 질문엔 강하지만 공짜가 아니다. 한 공개 벤치(Mem0 논문 측정)에서 그래프판은 종합 점수가 약 68.44로 순수 벡터 66.88을 근소하게 앞섰고 '시점' 질문을 이겼지만, 단일·다중 hop에선 졌고 검색이 약 3배 느리며 토큰을 약 2배 썼다. 반대로 시점 추적이 핵심인 LongMemEval 측정에선 그래프 기반(Zep)이 63.8%로 벡터 우위(Mem0 49.0%)를 보였다. 결론은 질문의 성격이 가른다: 개인화·빠른 회상이면 벡터, "그때 무엇이 참이었나·무엇과 연결됐나"면 그래프. 그래서 운영은 둘을 겹쳐 쓰는 하이브리드로 수렴한다.

왜 '검증·망각'이 핵심인가?#

기억은 오래되면 틀리기 때문이다. 코드·사실은 바뀌는데 옛 기억이 남아 있으면 에이전트가 옛 정보로 잘못 행동한다. 그래서 confidence(신뢰도)와 last_verified(마지막 확인 시각)를 붙여, 쓸 때마다 confirm으로 강화하고 틀리면 invalidate로 내린다. 우리 풀의 평균 신뢰도 0.735·검증 대기 8천여 건은 이 라이프사이클이 실제로 돈다는 뜻이다. 벤치 점수는 하네스(판정 모델·프롬프트)에 민감하니(모델만 바꿔도 약 10점 출렁) 절대값보다 방향성으로 읽어야 한다.

직접 살펴보려면?#

작게 만들어 보라.

사실을 타입(의미/일화/절차)·프로젝트·신뢰도와 함께 저장하고, 검색은 시맨틱+키워드부터 시작한다.

관계 질문("이거 고칠 때 주의점?")이 늘면 그 부분만 그래프 1-hop을 더한다(전면 그래프는 과설계).

틀린 기억을 내리는 invalidate 경로를 먼저 만들어라 — 망각 없는 기억은 곧 거짓말이 된다.

참고 링크

Mem0(메모리 레이어 레포)

Graphiti(Zep, 시간그래프 레포)

Graphiti/Zep(논문)

Mem0(논문·LOCOMO 측정)

에이전트 메모리 기법 모음(레포)

참고: 사실 수·신뢰도·타입은 2026년 우리 풀의 읽기전용 stats와 공개 벤치 기준이며(프로젝트명·경로·계정은 비공개), 벤치 점수는 하네스에 민감해 방향성으로 본다. 정확한 효과는 내 데이터로 직접 측정하라. 메모리 벤치는 빠르게 바뀌니 분기별 갱신.