온라인강의

랭체인 1.0 단기 메모리(Short-term-Memory)

AI강선생 2026. 2. 11. 13:10

이번에는 지난번 '랭체인 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 키를 통해 관리됩니다.

예시 구조:

 
state = { "messages": [ {"role": "user", "content": "서울 날씨 알려줘"}, {"role": "assistant", "content": "현재 서울은 3도입니다."} ] }

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 실행 결과 추가
  • 특정 메시지 제거
  • 사용자 정보 추가

등이 가능합니다.

예를 들어:

 
request.state["messages"].append(new_message)

처럼 동적으로 메모리를 변경할 수 있습니다.


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 메모리 필터링 및 수정
목적 문맥 유지 + 복잡한 작업 수행