"실전 업무 처리를 위해 AI 에이전트에 세션 메모리 기능을 붙여두었는데, 사용자와의 대화가 조금만 길어지면 이전 대화 맥락을 모두 상실하고 똑같은 질문을 반복하거나 완전 딴소리를 하기 일쑤였습니다."
AI 에이전트를 상담, 장기 프로젝트 보조, 혹은 일상 업무 파트너로 가동할 때 개발자를 가장 답답하게 만드는 순간이 있습니다. 바로 '대화가 길어질수록 발생하는 에이전트의 단기 기억상실 및 맥락 유실(Context Truncation)' 문제입니다.
모든 대화 내역(Chat History)을 프롬프트에 통째로 계속 쌓아두자니 입력 토큰 요금이 폭주하고 곧바로 모델의 최대 입력 용량 한계에 도달해 버리죠. 그렇다고 일정 길이 이전의 대화를 무작정 지워버리면(Cut-off), 사용자가 5분 전에 했던 핵심 요구사항을 까맣게 잊어버려 시스템의 신뢰도가 크게 떨어집니다. 오늘은 제가 직접 경험했던 '메모리 관리 실패로 인한 대화 마비 잔혹사'와 이를 완벽하게 해결해 낸 '계층적 압축 메모리(Hierarchical Compaction Memory) & 그래프 엔티티 파이프라인' 구축기를 이야기해 볼게요.
1. "방금 말했는데 또 물어본다고?" - 기억 상실의 비극
고객 문의나 긴 업무 협의를 진행하는 챗봇 에이전트를 가동하던 때였습니다. 초기 3~4턴의 대화에서는 사용자 개인 성향이나 업무 목표를 완벽히 기억하고 최고 수준의 맞춤형 답변을 제시해 주었지요.
하지만 대화가 15턴, 20턴을 넘어가자 문제가 터졌습니다. 컨텍스트 제한을 피하기 위해 단순 슬라이딩 윈도우 방식으로 최근 5개의 대화만 남기고 옛 대화를 잘라냈더니, 에이전트가 "아까 말씀해 주신 예산 한도가 얼마였죠?"라며 사용자가 이미 밝힌 핵심 조건을 다시 물어보는 황당한 상황이 연출된 것입니다. 사용자 입장에서는 벽과 대화하는 듯한 극심한 피로감을 느낄 수밖에 없었죠.
단순히 옛 대화를 삭제하거나 전체 대화를 무지성으로 프롬프트에 밀어 넣는 방식으로는 장기 대화 파이프라인을 절대로 유지할 수 없다는 사실을 뼈저리게 깨달았습니다.
2. 시행착오: 매번 대화 전체를 LLM으로 요약해 봤더니...
기억을 유지해 보겠다고, 대화가 한 턴씩 늘어날 때마다 전체 대화록을 무거운 메인 LLM에 넘겨 장문의 요약본(Summary)을 새로 생성하도록 프롬프트를 구성해 보았습니다.
결과는 또 다른 재앙이었습니다. 대화가 누적될수록 매번 전체 대화를 다시 읽고 요약하느라 API 토큰 비용이 3배 이상 폭증했고, 요약이 반복되면서 정작 중요한 고유명사, 숫자, 고객 요구사항 같은 미세한 핵심 엔티티(Entity) 데이터가 완전히 뭉개져 사라지는 현상이 발생했습니다.
💡 몬이쌤의 생각: 학원에서 아이와 장기 상담을 할 때, 1시간 동안 나눈 수다를 토씨 하나 안 틀리고 다 기록해 둘 수는 없습니다. 그렇다고 다 잊어버리면 안 되죠. 아이의 성격, 거부하는 과목, 목표 점수 같은 '핵심 키워드'만 노트 한쪽에 '인덱스'로 적어두고, 최근 있었던 일만 기억하는 '스마트 요약 노트' 전략이 필요한 것과 같습니다.
3. 해결책: '계층적 압축 & 엔티티 영구 기억' 3단계 메모리 프로토콜
토큰 소비를 최소화하면서도 백 턴이 넘는 긴 대화 속의 모든 핵심 맥락을 완벽하게 기억하기 위해, 저는 '3단계 계층적 압축 메모리 아키텍처'를 구축했습니다.
- 1단계 [작업 기억 영역(Working Memory - Short Term)]: 가장 최근 3~5턴의 원본 대화는 압축 없이 생생하게 유지하여 즉각적인 대화의 흐름과 억양, 맥락을 완벽하게 보존합니다.
- 2단계 [엔티티 extractor & 팩트 저장소(Entity Knowledge Store)]: 대화 중 발생하는 고유명사, 사용자 선호도, 핵심 숫자는 즉시 경량 파서가 추출하여 `Key-Value` 형태의 영구 메모리 DB에 별도로 기록합니다. 이 영역은 절대로 삭제되거나 요약으로 뭉개지지 않습니다.
- 3단계 [점진적 요약 압축 노드(Compaction Summarizer)]: 일정 턴 수가 지난 이전 대화들은 메인 모델 대신 초경량 모델이 3~4문장의 핵심 줄거리로 점진적 압축(Compaction)을 진행해 시스템 프롬프트 상단에 슬림하게 배치합니다.
4. 결과: 대화 유지 턴 수 10배 증가 & 토큰 비용 70% 절감!
계층적 압축 메모리 및 엔티티 저장 프로토콜을 적용한 이후, 50턴, 100턴이 넘는 장시간 대화가 이어지더라도 에이전트가 최초의 대화 맥락과 사용자 핵심 조건을 100% 완벽하게 유지해 냈습니다!
필요없는 수다성 문장은 점진적으로 축소되고 핵심 팩트만 정교하게 유지된 덕분에, 입력 프롬프트 토큰량이 항상 일정 수준 이하로 통제되어 토큰 비용을 70%나 절감하는 놀라운 성과를 거두었지요.
뛰어난 AI 에이전트 자동화 시스템을 만든다는 것은 모든 대화를 프롬프트에 무작정 쌓아두는 것이 아닙니다. '단기 기억과 장기 기억을 분리하고, 핵심 팩트는 엔티티 저장소에 지켜내며, 지나간 맥락은 슬림하게 압축하는 메모리 거버넌스 파이프라인을 설계하는 것'에 진짜 비결이 있습니다.
여러분의 AI 에이전트도 대화가 길어지면 이전 내용을 잊어버리거나 똑같은 질문을 반복한다면, 무작정 슬라이딩 윈도우로 잘라내지 말고 계층적 압축 메모리 아키텍처를 도입해 보세요. 백 번을 대화해도 나를 완벽히 기억해 주는 명품 에이전트를 소유하게 되실 겁니다.
