이번에는 지난번 '랭체인 1.0 설치 및 랭체인 기본 지식'에 이서 랭체인의 단기 메모리를 정리하고자 합니다.
관련해서 수강한 강의는 인프런에서 오영재 강사님의 'LangChain version 1.0 을 활용한 생성형 AI 서비스 구축' 3번째 정리입니다.
18. 단기 메모리(Short-term Memory)
1️⃣ 단기 메모리(Short-term Memory)란 무엇인가
단기 메모리(Short-term Memory) 는 AI가 현재 대화 세션 내에서 발생한 이전 상호작용을 기억하는 시스템을 의미합니다.
일반적인 LLM은 다음과 같은 한계를 가지고 있습니다.
| 상태 없음 (Stateless) | 이전 대화를 기억하지 못함 |
| 문맥 단절 | 여러 단계 작업 수행 어려움 |
| 반복 질문 발생 | 이전 답변을 고려하지 못함 |
LangChain에서는 이를 해결하기 위해 AgentState 기반 메모리 구조를 제공합니다.
즉,
- 이전 질문
- 이전 답변
- Tool 호출 결과
- 현재 진행 중인 작업 상태
를 하나의 상태(state)로 관리합니다.
2️⃣ LangChain에서 단기 메모리가 동작하는 방식
LangChain Agent는 내부적으로 다음과 같은 구조를 가집니다.
| AgentState | Agent의 현재 상태 저장 |
| messages | 대화 이력 저장 |
| Memory Saver | 대화 이력 지속성 유지 |
| Middleware | 메모리 수정 및 필터링 |
특히 중요한 부분은 다음입니다.
👉 대화 이력은 messages 키를 통해 관리됩니다.
예시 구조:
Agent는 이후 질문을 처리할 때 이 메시지 전체를 문맥(context)으로 사용합니다.
3️⃣ 단기 메모리 구현 방식
LangChain에서는 메모리를 저장하는 방식을 선택할 수 있습니다.
✅ (1) InMemorySaver
| 저장 위치 | 메모리(RAM) |
| 특징 | 빠름 |
| 단점 | 서버 재시작 시 데이터 소멸 |
| 사용 목적 | 테스트 / 개발 환경 |
즉, 현재 실행 중인 프로세스에서만 유지되는 메모리입니다.
✅ (2) SqliteSaver
| 저장 위치 | SQLite DB |
| 특징 | 대화 이력 영구 저장 가능 |
| 장점 | thread 단위 대화 관리 |
| 사용 목적 | 실제 서비스 환경 |
여기서 thread는 사용자별 대화 세션을 의미합니다.
즉,
- 사용자 A → thread 1
- 사용자 B → thread 2
처럼 대화를 분리하여 관리할 수 있습니다.
4️⃣ 메시지 관리 기능 (Trimming / 삭제 / 요약)
대화가 길어질수록 문제가 발생합니다.
| 토큰 증가 | API 비용 증가 |
| 응답 속도 저하 | 처리 시간 증가 |
| 문맥 혼란 | 중요 정보 희석 |
이를 해결하기 위해 LangChain은 다음 기능을 제공합니다.
| Trimming | 오래된 메시지 제거 |
| 삭제(Delete) | 특정 메시지 제거 |
| 요약(Summarization) | 이전 대화 요약 후 압축 저장 |
실무에서는 보통:
- 최근 N개 메시지 유지
- 이전 대화는 요약 저장
방식을 사용합니다.
5️⃣ 메모리 접근 및 수정
AgentState는 단순 저장소가 아니라 실행 중 수정 가능한 상태 객체입니다.
즉,
- tool 실행 결과 추가
- 특정 메시지 제거
- 사용자 정보 추가
등이 가능합니다.
예를 들어:
처럼 동적으로 메모리를 변경할 수 있습니다.
6️⃣ 커스텀 AgentState로 메모리 확장
기본 messages 외에도 추가 정보를 저장할 수 있습니다.
예:
| user_profile | 사용자 선호도 저장 |
| task_progress | 작업 진행 상태 |
| tool_history | 이전 tool 사용 기록 |
이렇게 하면 Agent는 단순 대화형 AI가 아니라 상태 기반 작업 시스템으로 확장됩니다.
7️⃣ Middleware를 활용한 메모리 제어
LangChain v1에서는 Middleware를 통해 모델 호출 전후에 메모리를 제어할 수 있습니다.
✅ (1) @before_model
모델 호출 전에 실행됩니다.
주요 용도:
| 민감정보 제거 | 주민번호, 전화번호 차단 |
| 메시지 필터링 | 불필요한 문맥 제거 |
| 시스템 메시지 삽입 | 추가 지시사항 삽입 |
✅ (2) @after_model
모델 응답 이후 실행됩니다.
주요 용도:
| 부적절 응답 제거 | 정책 위반 응답 차단 |
| 결과 후처리 | 포맷 정리 |
| 로그 기록 | 응답 저장 |
즉,before_model → 모델 실행 → after_model
순서로 동작합니다.
✅ 8️⃣ 정리 (핵심 요약)
| Short-term Memory | 대화 세션 내 상태 기억 |
| AgentState | Agent 상태 저장 객체 |
| messages | 대화 이력 저장 핵심 키 |
| InMemorySaver | 메모리 기반 저장 |
| SqliteSaver | DB 기반 지속 저장 |
| Middleware | 메모리 필터링 및 수정 |
| 목적 | 문맥 유지 + 복잡한 작업 수행 |
'온라인강의' 카테고리의 다른 글
| [인프런] 게임 시스템 기획 개론 (1) | 2026.02.13 |
|---|---|
| 에이전트 시스템 설계 및 UX디자인 (0) | 2026.02.12 |
| 랭체인 Agent, Tools, 구조화된 출력 정리 (0) | 2026.02.09 |
| 랭체인 1.0 설치 및 랭체인 기본 지식 (0) | 2026.02.08 |
| 초보자들을 위한 Redis 자료구조 & 활용 기초 (0) | 2026.02.07 |