안녕하세요~!
오늘은 Langchain의 Memory에 대해 포스팅해 보겠습니다!

1. Memory 란?
- AI가 계속해서 대화를 이어나가기 위해 이전 대화를 기억하는 장소를 의미
- 이전 질문과 답변에 대해 Memory에 저장하고, 이를 Prompt에 포함시킴.
- 메모리를 사용하기 위해 LLM과 Memory를 chain으로 엮어야 함.
1) ConversationBufferMemory
- 모든 대화 내용 그대로 순차적 저장
- 텍스트 누적 방식으로 LLM에 전달됨.
- 가장 기본적인 메모리 / 대화 길이가 짧고, 단순하고 적은 맥락 유지에 적합
=> ConversationBufferMemory()를 호출해 memory 변수에 담고,
ConversationChain(llm, memory)으로 앞서 선언한 llm과 memory를 엮어줌.
=> chain.run(msg)로 대화

=> 모든 대화 내용이 차례대로 memory 안에 담겨있는 것을 확인할 수 있음.


2) ConversationSummaryMemory
- 대화를 요약해서 저장
- 긴 대화이거나, 리소스 절약이 필요할 때 사용
- 프롬프트에 전체 내용을 붙이지 않아 토큰 절약 가능
- 요약은 2번째 대화부터 수행하고, 요약 범위의 경우 이전 요약 + 새 메시지들만 요약해서 업데이트하는 형식
=> ConversationSummaryMemory(llm)를 호출해 memory 변수에 담음.
=> 앞서 BufferMemory와 달리 요약을 해줄 요약용 LLM이 필요하므로 파라미터로 llm을 담아 메서드 호출

=> BufferMemory와 달리 llm이 대화를 요약한 내용이 출력됨.

3) ConversationBufferWindowMemory
- 최근 N턴만 기억
- 메모리 용량 조절 가능(k=숫자)
- 메모리 크기를 고정해 두고 최근 N개만 기억 -> 새로운 대화가 저장되면, 가장 오래된 대화는 사라짐.
(즉, 과거 내용은 자동으로 삭제되고, 메모리에는 n개의 대화 내용만 저장됨)
- 최신 문맥만 중요한 경우 (ex. 챗봇)
=> ConversationBufferWindowMemory(k = n)를 호출해 memory 변수에 담음.
=> BufferWindowMemory의 경우, 파라미터로 최근 n턴의 n값을 k에 담아 매서드 호출

=> 대화 잘하다가 N턴이 넘어가니 내가 누군지 잘 기억 못 하는 llm... (급서운ㅜ)

'NLP 자연어처리' 카테고리의 다른 글
| Langchain 개념 및 활용(프롬프트 활용 LLM 응답 받아오기) (0) | 2025.10.30 |
|---|---|
| LoRA 기반 파인 튜닝 (0) | 2025.10.30 |
| 자연어 처리(NLP) 개념 정리 및 파인튜닝 (0) | 2025.10.26 |