AI 에이전트가 왜 외부 메모리를 필요로 하는지, 컨텍스트 윈도우의 한계와 3가지 메모리 유형(단기/장기/에피소딕), 2026년 메모리 프레임워크 생태계를 개괄합니다.
2026년 현재 대부분의 대형 언어 모델은 200K에서 2M 토큰에 이르는 컨텍스트 윈도우를 지원합니다. 수십만 토큰이라면 책 한 권 분량의 텍스트를 한 번에 처리할 수 있는 규모입니다. 그렇다면 별도의 메모리 시스템 없이도 에이전트가 모든 대화 이력을 기억할 수 있지 않을까요?
결론부터 말하면, 그렇지 않습니다.
API(Application Programming Interface) 호출 비용은 입력 토큰 수에 비례합니다. 매 턴마다 100K 토큰을 전송하면 한 사용자의 하루 대화만으로도 수십 달러의 비용이 발생할 수 있습니다.
사용자 1명, 하루 50회 대화 턴
- 매 턴 입력: 100K 토큰
- 총 입력: 5M 토큰/일
- 비용(추정): $15-50/일/사용자
- 1000명 사용자: $15,000-50,000/일토큰이 많을수록 TTFT(Time To First Token), 즉 첫 번째 토큰이 생성되기까지의 시간이 길어집니다. 200K 토큰의 컨텍스트를 처리하는 데 수 초가 소요될 수 있으며, 이는 실시간 대화 경험을 크게 저해합니다.
긴 컨텍스트 윈도우에서도 Lost in the Middle 현상이 발생합니다. 모델은 컨텍스트의 시작과 끝 부분에 비해 중간 부분의 정보를 잘 활용하지 못하는 경향을 보입니다. 토큰 수가 많다고 해서 모든 정보를 동등하게 활용할 수 있는 것은 아닙니다.
200K-2M 토큰 컨텍스트 윈도우가 있더라도, 비용과 지연시간, 정보 활용도를 고려하면 전체 대화 이력을 매번 전송하는 것은 프로덕션 환경에서 현실적이지 않습니다.
인간의 기억 체계에서 영감을 받아, AI 에이전트의 메모리는 크게 세 가지로 분류됩니다.
현재 진행 중인 대화의 맥락을 유지하는 메모리입니다. 컨텍스트 윈도우 내에서 관리되며, 세션이 종료되면 사라집니다. 슬라이딩 윈도우, 메시지 요약, 토큰 예산 관리 등의 기법으로 효율적으로 운용됩니다.
핵심 특성: 빠른 접근, 제한된 용량, 세션 범위
세션을 넘어 지속되는 메모리입니다. 사용자의 선호도, 학습된 사실, 반복적으로 사용되는 정보를 벡터 데이터베이스 등 외부 저장소에 저장하고, 의미 기반 검색으로 필요할 때 불러옵니다.
핵심 특성: 영구 저장, 의미 검색, 세션 간 지속
특정 과거 상호작용의 기록입니다. 단순한 사실의 저장이 아니라, "언제, 어떤 상황에서, 무엇을 했고, 결과가 어떠했는지"를 기록합니다. 이를 통해 에이전트는 유사한 상황에서 과거 경험을 참조하여 더 나은 의사결정을 할 수 있습니다.
핵심 특성: 경험 기반 학습, 시간적 맥락, 패턴 인식
이 세 가지 메모리 유형은 상호 배타적이지 않습니다. 프로덕션 시스템에서는 이들을 조합하여 사용하며, 이를 듀얼 레이어 아키텍처(Dual-Layer Architecture) 라고 합니다. 8장에서 자세히 다룹니다.
컨텍스트 윈도우만으로는 해결되지 않는 근본적인 요구사항들이 있습니다.
사용자가 어제 나눈 대화의 내용을 오늘도 기억해야 합니다. 컨텍스트 윈도우는 단일 세션에 종속되므로, 세션 간 정보 전달을 위해서는 외부 저장소가 반드시 필요합니다.
수천 건의 과거 대화 중 현재 질문과 관련된 정보만 정확히 가져와야 합니다. 전체 이력을 매번 전송하는 것이 아니라, 벡터 유사도 검색이나 지식 그래프 탐색을 통해 관련 정보만 선별하는 것이 효율적입니다.
사용자마다 다른 선호도, 전문 분야, 커뮤니케이션 스타일을 학습하고 반영하려면, 이러한 정보를 체계적으로 저장하고 관리할 수 있는 구조가 필요합니다.
필요한 메모리만 선택적으로 로드하면 입력 토큰 수를 대폭 줄일 수 있습니다. 이는 곧 API 비용 절감과 응답 속도 향상으로 이어집니다.
현재 에이전트 메모리 영역에서 가장 활발하게 사용되는 프레임워크들을 소개합니다.
사용자 선호도와 개인화에 특화된 메모리 플랫폼입니다. 대화에서 자동으로 메모리를 추출하고, 사용자별로 관리합니다. 간단한 API로 빠르게 통합할 수 있어 프로덕션 도입 장벽이 낮습니다.
from mem0 import Memory
memory = Memory()
# 대화에서 자동으로 메모리 추출
memory.add(
"저는 Python보다 TypeScript를 선호합니다",
user_id="user_123"
)
# 관련 메모리 검색
results = memory.search(
"프로그래밍 언어 추천해주세요",
user_id="user_123"
)
# -> "사용자는 TypeScript를 선호합니다"시간 인식 동적 지식 그래프(Temporal Knowledge Graph)를 핵심으로 하는 메모리 플랫폼입니다. 에피소드, 시맨틱 엔티티, 커뮤니티의 3계층 구조로 정보를 조직하며, 시간에 따른 변화를 추적합니다.
운영 체제에서 영감을 받은 3계층 메모리 아키텍처를 제공합니다.
범용 에이전트 프레임워크 내에 내장된 메모리 추상화를 제공합니다. 다양한 백엔드와의 연동이 용이하며, 기존 LangChain 기반 애플리케이션에 메모리를 추가하기에 적합합니다.
이 시리즈는 총 10장에 걸쳐 에이전트 메모리 시스템을 체계적으로 다룹니다.
| 구간 | 장 | 핵심 주제 |
|---|---|---|
| 기초 | 1-2장 | 메모리의 필요성, 단기 메모리 관리 |
| 핵심 유형 | 3-5장 | 장기 메모리, 에피소딕 메모리, 지식 그래프 |
| 최적화 | 6장 | 메모리 압축과 통합 |
| 생태계 | 7장 | 프레임워크 비교와 선택 |
| 아키텍처 | 8-9장 | 듀얼 레이어, 프로젝트 메모리 |
| 실전 | 10장 | 종합 프로젝트 구축 |
이번 장에서 살펴본 핵심 내용을 정리합니다.
2장에서는 단기 메모리와 컨텍스트 윈도우 관리를 깊이 다룹니다. 슬라이딩 윈도우, 메시지 요약, 토큰 예산 관리, 중요도 기반 정리 등 실무에서 즉시 적용할 수 있는 기법들을 살펴봅니다.
이 글이 도움이 되셨나요?
슬라이딩 윈도우, 메시지 요약, 토큰 예산 관리, 중요도 기반 정리 등 에이전트 단기 메모리의 핵심 전략을 코드 예제와 함께 다룹니다.
벡터 데이터베이스에 메모리를 저장하고 임베딩 기반으로 검색하는 장기 메모리 시스템의 설계와 구현 전략을 다룹니다.
에이전트가 과거 상호작용을 에피소드로 기록하고, 경험 기반 의사결정과 패턴 학습에 활용하는 에피소딕 메모리 시스템을 다룹니다.