AI Agent

Mem0 가이드 3편: Zep·Letta·LangMem — 2026년 AI 에이전트 메모리 프레임워크 완전 비교

cell-devlog 2026. 5. 27. 16:20
반응형

"어떤 메모리 프레임워크를 써야 하나?" 2026년 기준 선택지는 4개 이상으로 분화됐고, 각각 근본적으로 다른 아키텍처를 취한다. 잘못 고르면 3개월 후 마이그레이션이다. Mem0·Zep(Graphiti)·Letta(MemGPT)·LangMem — 어떤 게 내 에이전트에 맞는지 구조·벤치마크·비용·선택 기준을 전부 정리했다.


핵심 요약

Mem0 — 오픈소스, 48,000+ GitHub Star, 개인화 에이전트·챗봇 메모리 1순위, 가장 빠른 프로덕션 진입
Zep/Graphiti — 시간적 추론 특화, 변경되는 사실을 추적해야 할 때 LongMemEval 기준 Mem0보다 15점 높음
Letta(MemGPT) — 장기 자율 에이전트 전용, 수일~수주 실행 에이전트에 유일한 선택지, 자체 에이전트 런타임 포함
LangMem — LangGraph 네이티브, LangGraph 이미 쓰는 팀의 가장 쉬운 메모리 추가 경로, 단 LangGraph 외부에서는 불편
→ 2026년 5월 최신 동향: Anthropic "Dreaming"(5월 6일)·Google Memory Bank(5월 19일) 출시 — 플랫폼 레벨 메모리 인프라 등장
→ 결론: 단일 정답 없음 — 에이전트 실행 기간·변경 사실 추적 필요 여부·기존 프레임워크 스택에 따라 선택


1. 네 프레임워크의 근본적 차이

# 아키텍처 철학 비교

Mem0
├── 핵심: 대화 → LLM이 중요 사실 추출 → 벡터 DB 저장
├── 검색: 시맨틱 + BM25 + 엔티티 링킹 + 시간적 추론
├── 포지션: "범용 메모리 API" — 어떤 에이전트에도 꽂기 쉬움
└── 비유: 사용하기 쉬운 스마트 노트앱

Zep / Graphiti
├── 핵심: 모든 사실을 타임스탬프 + 유효 기간이 있는 그래프 노드로 저장
├── 검색: 시간 범위 쿼리, "2월에 사실이었던 것" 정확히 반환
├── 포지션: "시간적 지식 그래프" — 사실 변화 추적이 핵심
└── 비유: 타임라인이 있는 지식 데이터베이스

Letta (MemGPT 진화)
├── 핵심: MemGPT 아키텍처 — 에이전트가 자신의 메모리를 직접 관리
├── 검색: 에이전트 자율 결정 (무엇을 기억할지, 버릴지)
├── 포지션: "에이전트 OS" — 자체 런타임 + 메모리 티어링
└── 비유: 자체 메모리 관리 OS를 가진 에이전트

LangMem
├── 핵심: LangGraph 체크포인터와 통합된 네이티브 메모리 SDK
├── 검색: LangGraph 워크플로우 내에서 메모리 툴로 호출
├── 포지션: "LangGraph 메모리 확장" — 생태계 내 최소 마찰
└── 비유: LangGraph용 플러그인 메모리 모듈

2. 벤치마크 — 숫자로 보는 차이

# 2026년 주요 메모리 벤치마크 결과

LoCoMo (단일홉·멀티홉·시간적·오픈도메인 대화 기억)
Mem0 신알고리즘 (2026년 4월)  91.6점  ← SOTA
Zep/Graphiti                  ~85점
LangMem                       ~78점
OpenAI 내장 메모리             ~70점 (Mem0 대비 26% 낮음)
나이브 풀 컨텍스트             ~65점

LongMemEval (시간적 추론 특화)
Zep/Graphiti     63.8%  ← 시간적 추론 1위
Mem0             ~52%   ← 15점 차이

BEAM (1M 토큰 프로덕션 스케일)
Mem0             64.1점
기타             미발표

# 해석
→ 전반적 정확도: Mem0 1위
→ 시간적 추론: Zep 1위 (15점 차이 — 의미 있는 격차)
→ 토큰 효율: Mem0 (90% 절감)
→ 장기 자율 에이전트: Letta (벤치마크 외 기능 차별화)

3. Mem0 — 범용 메모리 API

# 장점
✅ 가장 빠른 프로덕션 진입 (5분 설정)
✅ 21개 프레임워크 공식 통합
✅ Anthropic SDK·OpenAI·Google ADK 동시 지원
✅ 자체 호스팅 가능 (Docker + Qdrant)
✅ HIPAA BAA (Enterprise 플랜)
✅ 2026년 4월 시간적 추론 추가

# 단점
❌ 복잡한 시간적 쿼리 ("3월에는 뭐였지?")는 Zep보다 약함
❌ 메모리 추출에 LLM 호출 → 쓰기 레이턴시

# 요금 (2026년 5월 기준)
Free: 1,000 메모리 저장 / 월
Pro: $49/월 (5만 메모리)
Enterprise: 문의

# 선택 기준
→ 챗봇·개인화 어시스턴트·고객 지원 봇
→ 빠른 프로토타입 후 프로덕션 전환
→ 다중 에이전트 스택을 운영 중인 팀
# 코드 복잡도: 낮음 (3줄이면 시작)
from mem0 import MemoryClient
client = MemoryClient(api_key="key")
client.add(messages, user_id="user_001")
results = client.search("query", user_id="user_001")

4. Zep / Graphiti — 시간적 지식 그래프

Zep의 핵심 기능은 시간적 지식 그래프다. 단순히 사실을 저장하는 게 아니라 타임스탬프와 관계 맵과 함께 저장한다. 사용자가 "예전에 뉴욕에 살았어요"라고 말하면 Zep은 유효 기간이 끝난 사실로 이전 거주지를 표시하고, 이를 '뉴욕'이라는 그래프 노드와의 관계로 저장한다.

# Zep/Graphiti 설치 및 기본 사용
pip install zep-python

from zep_python.client import AsyncZep
from zep_python.types import Message

client = AsyncZep(api_key="ZEP_API_KEY")

# 세션 생성
await client.memory.add_session(
    session_id="session_001",
    user_id="user_001"
)

# 메시지 추가 → Graphiti가 자동으로 지식 그래프 구성
messages = [
    Message(role="user", content="저 지난달에 구글에서 Anthropic으로 이직했어요."),
    Message(role="assistant", content="축하해요! Anthropic에서 잘 되시길 바랍니다.")
]
await client.memory.add(session_id="session_001", messages=messages)

# 시간적 쿼리 — Zep이 강한 부분
# "현재 직장"과 "이전 직장" 자동 구분
memory = await client.memory.get(session_id="session_001")
print(memory.facts)
# → [
#     Fact(content="구글 근무", valid_at="...", invalid_at="2026-04-01"),  ← 과거
#     Fact(content="Anthropic 근무", valid_at="2026-04-01", invalid_at=None)  ← 현재
#   ]
# Zep 선택 기준
✅ 고객 상태가 자주 바뀌는 B2B SaaS (구독 플랜 변경, 담당자 교체)
✅ 금융·법률·의료 에이전트 (과거 이력 추적 필수)
✅ "X가 Y였던 시점"을 정확히 쿼리해야 하는 경우
✅ 엔터프라이즈 규모, Graphiti 오픈소스로 자체 호스팅 가능

❌ 단순 챗봇 개인화 → Mem0로 충분
❌ LangGraph 네이티브 워크플로우 → LangMem이 더 편함

# 요금
Free: 1,000 크레딧/월 (API 테스트 수준)
Pro: $49/월~
Graphiti 오픈소스: Apache 2.0 (자체 호스팅)

5. Letta (MemGPT) — 에이전트 OS

Letta는 에이전트가 독립적으로 수일 동안 운영해야 할 때 유일한 선택지다. 에이전트 자체 런타임을 포함한다.

# Letta 설치
pip install letta

from letta import create_client
from letta.schemas.memory import ChatMemory

client = create_client()

# 에이전트 생성 — 자체 메모리 관리
agent = client.create_agent(
    name="my-long-running-agent",
    memory=ChatMemory(
        human="사용자 이름: 지수. 개발자.",
        persona="나는 친절한 코딩 어시스턴트다."
    ),
    # 코어 메모리 (항상 컨텍스트에 있음)
    # 아카이브 메모리 (검색으로 불러옴)
    # 리콜 메모리 (대화 히스토리)
)

# 에이전트와 대화 — 에이전트가 스스로 메모리 관리
response = client.send_message(
    agent_id=agent.id,
    role="user",
    message="저 어제 말한 프로젝트 진행 상황 어떻게 됐어요?"
    # 에이전트가 알아서 관련 아카이브 메모리 검색
)
print(response.messages[-1].text)
# Letta 메모리 3계층
┌─────────────────────────────────────┐
│  코어 메모리 (Core Memory)           │ ← 항상 컨텍스트에 있음
│  persona + human (제한된 크기)       │
├─────────────────────────────────────┤
│  아카이브 메모리 (Archival Memory)   │ ← 벡터 DB, 무제한
│  에이전트가 search_archival로 검색    │
├─────────────────────────────────────┤
│  리콜 메모리 (Recall Memory)         │ ← 대화 히스토리 DB
│  에이전트가 search_conversation으로  │
└─────────────────────────────────────┘
# 핵심: 에이전트가 직접 메모리 읽기/쓰기 도구를 호출
# → 인간이 메모리 관리 로직 짤 필요 없음

# 선택 기준
✅ 수일~수주 실행하는 자율 에이전트
✅ 에이전트가 스스로 무엇을 기억할지 결정해야 하는 경우
✅ 복잡한 멀티스텝 프로젝트 관리 에이전트
✅ "나 내일 다시 이어서 해줄 수 있어?" 시나리오

❌ 단순 챗봇 → 오버엔지니어링
❌ 빠른 프로토타입 → 설정 복잡도 높음

6. LangMem — LangGraph 네이티브

LangMem은 LangGraph를 이미 쓰는 팀이 새 벤더 없이 메모리를 추가하는 가장 쉬운 경로다. 무료, 네이티브, 놀랍도록 유능하다 — 단 생태계 내에서만.

# LangMem 설치
pip install langmem

from langmem import create_memory_store_manager
from langgraph.store.memory import InMemoryStore

# 메모리 스토어 초기화
store = InMemoryStore()  # 프로덕션: PostgresStore or RedisStore

# 메모리 매니저 생성
memory_manager = create_memory_store_manager(
    "anthropic/claude-sonnet-4-6-20261022",
    namespace=("user_memories",)
)

# LangGraph 노드에서 사용
from langgraph.graph import StateGraph, END
from langgraph.store.memory import InMemoryStore

def memory_node(state, config, *, store):
    """메모리 저장 노드"""
    user_id = config["configurable"]["user_id"]
    namespace = ("memories", user_id)

    # 기존 메모리 검색
    memories = store.search(namespace, query=state["messages"][-1]["content"])

    # 새 메모리 저장
    memory_manager.invoke(
        {"messages": state["messages"]},
        store=store,
        namespace=namespace
    )
    return {"memories": [m.value for m in memories]}

# LangGraph 그래프에 노드 추가
workflow = StateGraph(...)
workflow.add_node("memory", memory_node)
# → LangGraph checkpointer(단기) + LangMem(장기) 자동 연동
# LangMem 선택 기준
✅ 이미 LangGraph 기반 에이전트 운영 중
✅ 새 외부 벤더 추가 없이 메모리 구현하고 싶을 때
✅ 프롬프트 최적화가 메모리만큼 중요한 경우
✅ MIT 라이선스, 완전 무료

❌ LangGraph 외 다른 프레임워크 사용 시 불편
❌ 시간적 추론 필요 → Zep이 더 적합
❌ 그래프 메모리 없음 → 복잡한 관계 추적 불가

7. 2026년 최신 동향 — 플랫폼 레벨 메모리

2026년 4월 23일부터 5월 24일까지 31일 사이에 4가지 메모리 관련 개발이 착지했다 — 이전 6개월을 합친 것보다 더 많은 메모리 인프라가 출시됐다.

# 2026년 5월 플랫폼 메모리 발표

Anthropic "Dreaming" (5월 6일)
→ Claude Managed Agents에 비동기 메모리 통합 프로세스
→ 세션 간 에이전트 메억기록을 검토·패턴 추출·중복 병합·stale 교체
→ 인간 뇌의 해마 메모리 통합 방식 모델링

Google Memory Bank (5월 19일, I/O 2026)
→ Gemini 앱·Spark에 아이덴티티 스코프 영속성 프리미티브
→ Gmail·Docs·Drive 등 Google 생태계 전반에 메모리 유지

의미:
→ 독립 메모리 프레임워크 vs 플랫폼 내장 메모리 구도 형성
→ 단일 플랫폼 에이전트: Dreaming/Memory Bank로 충분할 수 있음
→ 멀티 플랫폼·멀티 모델 에이전트: Mem0 같은 독립 레이어 여전히 필요

8. 전체 비교표 + 선택 가이드

항목 Mem0 Zep/Graphiti Letta LangMem

아키텍처 벡터+그래프 시간적 지식 그래프 티어드 메모리 OS LangGraph 체크포인터
시간적 추론 △ (2026.04 추가) ✅ 1위
LoCoMo 91.6 (1위) ~85 미발표 ~78
LongMemEval ~52% 63.8% (1위) 미발표 미발표
장기 자율 실행 ✅ 1위
설정 난이도 낮음 중간 높음 낮음(LangGraph만)
프레임워크 의존 없음 없음 자체 런타임 LangGraph 전용
오픈소스 Graphiti만 ✅ MIT
자체 호스팅 ✅ Docker ✅ Graphiti
GitHub Stars 55,700+ 미발표 12,000+ 미발표
요금 시작 Free/$49 Free/$49 Free/Pro 무료
# 상황별 선택 가이드

단순 챗봇·개인화 어시스턴트
→ ✅ Mem0 (가장 쉽고 전반적 정확도 1위)

B2B SaaS·금융·법률 에이전트 (사실 변경 추적)
→ ✅ Zep/Graphiti (시간적 추론 1위)

수일~수주 실행 자율 에이전트
→ ✅ Letta (유일한 선택지)

이미 LangGraph 기반 팀
→ ✅ LangMem (가장 쉬운 통합)

멀티 플랫폼·멀티 모델 에이전트
→ ✅ Mem0 (Anthropic+OpenAI+Google ADK 동시 지원)

단일 플랫폼 Claude 에이전트 (Managed Agents)
→ △ Anthropic Dreaming 지켜보기 (플랫폼 내장)

예산 없는 스타트업
→ ✅ LangMem (완전 무료) 또는 Mem0 Free

✅ 결론

Mem0 — 전반적 정확도 1위, 가장 넓은 통합, 빠른 시작 → 기본값으로 시작하기 좋음
Zep — 시간적 추론 특화, 사실이 변하는 엔터프라이즈 환경에서 의미 있는 격차
Letta — 장기 자율 에이전트의 유일한 선택지, 단 학습 곡선 있음
LangMem — LangGraph 팀의 무료·최소 마찰 선택지

❌ "어디에나 맞는 1등 프레임워크"는 없음 — 에이전트 특성에 따라 다른 선택
❌ LangChain memory(BufferMemory 등) — 공식 deprecated, 아직 쓰면 지금 마이그레이션
❌ 플랫폼 메모리(Dreaming·Memory Bank)는 아직 성숙 중 — 멀티 플랫폼엔 독립 레이어 여전히 필요


관련 글


 

반응형