
Short-Term Memory와 Long-Term Memory의 개념 및 분리 필요성
인공지능 에이전트와 자동화 시스템이 중장기적이고 복잡한 비즈니스 태스크를 자율적으로 수행하기 위해서는 기억 장치의 효율적인 관리가 필수적입니다. 거대언어모델(LLM)은 자체적으로 과거 데이터를 기억하지 못하는 특성이 있으므로, 시스템 아키텍처 내부에 메모리 레이어를 명확히 구축해야 합니다.
이때 인간의 뇌 구조를 모방하여 단기 메모리(Short-Term Memory)와 장기 메모리(Long-Term Memory)로 역할을 철저히 분리하는 설계가 필요합니다. 하나의 메모리 공간에 모든 정보를 무차별적으로 누적하면 프롬프트가 비대해져 토큰 비용이 폭증하고, 모델이 컨텍스트 내부에서 길을 잃어 오작동하는 인지 과부하 현상이 발생하기 때문입니다.
Short-Term Memory의 역할과 아키텍처 특징
단기 메모리는 현재 진행 중인 단일 세션이나 특정 워크플로우 루프 내에서 발생하는 실시간 데이터와 추론 단계를 일시적으로 보관하는 공간입니다.
- 핵심 역할: 에이전트가 현재 사용자와 주고받는 대화의 직전 맥락을 유지하고, 목표 달성을 위해 거치는 ‘생각(Thought)-행동(Action)-관찰(Observation)’의 연쇄적인 추론 과정(Chain of Thought)을 실시간으로 기억하는 역할을 합니다.
- 기술적 구현: 주로 LLM의 컨텍스트 윈도우(Context Window) 자체와 응용 프로그램의 인메모리(In-Memory) 상태 변수를 활용합니다. 대화가 이루어지는 동안 프롬프트 내부에 최근 대화 내역(Conversation Buffer) 형태로 직접 유지됩니다.
- 물리적 제약: 모델의 최대 토큰 한도에 종속되므로 세션이 길어지면 앞부분의 내용이 잘려 나가는 휘발성을 가집니다. 비용과 성능 통제를 위해 최근 N개의 메시지만 남기거나 백그라운드에서 주기적으로 텍스트를 압축하는 버퍼 최적화 기법이 동반됩니다.
Long-Term Memory의 역할과 아키텍처 특징
장기 메모리는 현재 세션이 종료되거나 시스템이 완전히 재구동되어도 영구적으로 유지되어야 하는 핵심 정보를 보관하는 외장 저장소입니다.
- 핵심 역할: 사용자의 고유한 성향, 누적된 비즈니스 선호도, 과거 세션에서 도출된 중요한 결정 사항, 그리고 에이전트가 이전에 문제를 성공적으로 해결했던 구체적인 일화(Episodic Memory) 등을 보관합니다. 이를 통해 다음번 새로운 세션이 시작될 때 사용자를 기억하고 일관된 맞춤형 서비스를 제공할 수 있도록 돕습니다.
- 기술적 구현: 외부 데이터베이스인 관계형 DB(RDB), NoSQL, 혹은 벡터 데이터베이스(Vector DB)를 연동하여 구축합니다. 영구 저장소에 텍스트나 정형 데이터 형태로 기록되므로 모델의 컨텍스트 한도와 무관하게 무한히 확장할 수 있습니다.
- 물리적 메커니즘: 에이전트가 상시 들여다보는 것이 아니라, 새로운 세션이 시작되거나 단기 메모리 정보만으로 해결할 수 없는 과거의 데이터가 필요할 때 메타데이터 검색이나 의미론적 벡터 검색(Semantic Retrieval)을 통해 필요한 조각만 핀포인트로 조회하여 단기 컨텍스트 공간에 동적으로 주입합니다.
두 메모리 레이어의 기능적·운영적 명확한 차이
메모리 시스템을 설계할 때 두 레이어의 물리적 속성과 다루는 데이터의 성격을 명확히 대조하여 반영해야 합니다.
| 비교 항목 | Short-Term Memory (단기 기억) | Long-Term Memory (장기 기억) |
| 저장 위치 | LLM 컨텍스트 윈도우, 애플리케이션 RAM | 외부 데이터베이스 (RDB, NoSQL, 벡터 DB) |
| 정보의 수명 | 현재 세션 및 단일 작업 종료 시 소멸 (휘발성) | 시스템 재구동 후에도 영구 유지 (비휘발성) |
| 다루는 데이터 | 실시간 대화 흐름, 현재 실행 중인 툴 콜링 로그 | 사용자 프로필, 과거 누적 선호도, 성공적 해결 사례 |
| 접근 방식 | 매 토큰 생성 시 전체 맥락 실시간 참조 | 필요 시점에 질의(Query)를 통해 선택적 검색 |
| 인프라 비용 | LLM 입력 토큰 증가로 인한 가변 비용 발생 | 데이터베이스 저장 및 인덱싱 유지 관리 고정 비용 |
성공적인 역할 분리 아키텍처의 설계 가이드라인
단기 기억과 장기 기억이 유기적으로 협력하며 상호작용하도록 파이프라인을 구축하는 실무적인 엔지니어링 원칙입니다.
- 단기 기억에서 장기 기억으로의 동적 이관 (Consolidation)
- 단기 세션이 진행되는 동안 에이전트는 사용자의 발언 속에서 장기적으로 기억해야 할 핵심 엔티티(Entity)나 팩트 데이터를 실시간으로 추출해야 합니다. 예를 들어 사용자가 “나는 파이썬 기반의 프로젝트만 진행해”라고 말했다면, 이 문장을 단기 기억 버퍼에만 방치하지 말고 세션 종료 시점에
user_preference: "Python"형태의 정형 데이터로 가공하여 장기 기억 데이터베이스에 삽입(CRUD)하는 동화 프로세스를 설계해야 합니다.
- 단기 세션이 진행되는 동안 에이전트는 사용자의 발언 속에서 장기적으로 기억해야 할 핵심 엔티티(Entity)나 팩트 데이터를 실시간으로 추출해야 합니다. 예를 들어 사용자가 “나는 파이썬 기반의 프로젝트만 진행해”라고 말했다면, 이 문장을 단기 기억 버퍼에만 방치하지 말고 세션 종료 시점에
- 중앙 집중식 상태 관리 체계(State)와의 결합
- 멀티 에이전트 환경이나 복잡한 워크플로우 그래프 구조에서는 단기 메모리를 개별 프롬프트에 직접 누적하는 방식 대신, 전체 에이전트들이 공통으로 바라보는 독립적인 ‘스레드 상태 저장소(State Management)’를 구성해야 합니다. 이 공통 단기 기억 저장소가 필요한 순간에만 외부 장기 기억 데이터베이스를 호출하도록 트리거를 설계하는 것이 시스템 무결성 유지에 유리합니다.
- 장기 기억 검색 시 보안 및 권한 필터링 레이어 구축
- 장기 메모리 저장소에는 수많은 사용자의 민감 정보나 기업 대외비 문서가 혼재되어 누적됩니다. 에이전트가 현재 단기 메모리의 상황을 해결하기 위해 장기 메모리 DB를 조회할 때, 반드시 현재 호출자의 사번이나 세션 권한(RBAC)을 메타데이터 필터로 결합하여 검색해야 합니다. 허가되지 않은 과거의 기억이나 타인의 컨텍스트가 단기 프롬프트 창으로 유입되는 보안 사고를 원천적으로 차단해야 합니다.