GAM 메모리 아키텍처로 컨텍스트 부패 다루기
긴 세션에서 LLM 성능을 떨어뜨리는 컨텍스트 부패와 GAM의 메모라이저·리서처 역할 분리, 계층형 메모리 설계를 설명한다.
2026-08-14 · 최초 발행 2026-05-08
긴 컨텍스트가 오히려 성능을 떨어뜨릴 때
컨텍스트 창이 커지면 에이전트가 더 많은 정보를 활용할 수 있지만, 긴 입력이 곧 안정적인 추론을 뜻하지는 않는다. 프로덕션 환경에서는 토큰이 누적될수록 에이전트 성능이 점차 떨어지는 컨텍스트 부패(Context Rot)가 나타난다. VentureBeat이 소개한 GAM(Generative Agent Memory)은 창을 더 키우거나 프롬프트를 다듬는 대신, 메모리를 계층화하고 기억과 검색을 서로 다른 에이전트에 맡긴다.
Chroma의 연구에서는 GPT-4.1, Claude Opus 4, Gemini 2.5를 포함한 18개 최전선 모델 모두 입력 길이가 늘어날 때 성능 저하를 보였다. 문제는 컨텍스트 창이 꽉 찼을 때만 발생하지 않는다. 정보가 여전히 창 안에 있더라도 입력 토큰이 많아지면 모델이 필요한 내용을 안정적으로 추출하지 못한다.
정보 위치에 따른 처리 정확도는 U자형 곡선을 보인다. 컨텍스트의 시작과 끝에 놓인 정보는 비교적 정확하게 다루지만, 중간에 있는 정보는 정확도가 30% 이상 낮아진다. 컨텍스트가 50% 이상 채워진 뒤에는 양상이 달라져 최근 토큰, 중간 부분, 초기 부분 순으로 정확도가 낮아진다.
주의(attention) 가중치가 창 전체로 퍼지면서 중간 정보에 충분한 주의가 배정되지 않는 것이 근본 원인이다. 사람의 작업 기억이 제한되어 있듯 LLM에도 ‘주의 예산(attention budget)’이 있으며, 새 토큰이 들어올수록 이 예산이 소진된다.
코딩 에이전트에서는 조건이 더 나쁘다. 파일을 읽을 때마다 내용이 쌓이고, grep 결과와 도구 출력도 세션에 남는다. 코드 검색은 의미가 비슷한 결과를 다수 반환하며, 실제 작업은 15~60분 동안 이어진다. 누적 컨텍스트, 높은 분산 밀도, 긴 작업 지평이 한 세션 안에서 겹치는 구조다.
기억하는 에이전트와 찾아오는 에이전트
GAM의 출발점은 기억하는 행위와 회상하는 행위를 분리하는 것이다. 메모라이저(Memorizer)는 대화에서 오간 내용을 손실 없이 수집해 검색 가능한 페이지 저장소(page store)에 보존한다. 요약이나 압축본만 남기지 않고 원본 기록 전체를 유지하므로, 전통적인 RAG나 요약 과정에서 빠질 수 있는 세부 정보도 다시 확인할 수 있다.
리서처(Researcher)는 이 저장소를 능동적으로 탐색한다. 먼저 검색 전략을 세우고 임베딩 기반 벡터 검색과 BM25 키워드 검색을 조합해 여러 층위에서 정보를 찾는다. 쿼리와 가장 비슷한 결과를 한 번 반환하는 데 그치지 않는다. 대화가 복잡해지거나 시간이 흐르며 정보가 달라져도 현재 작업에 필요한 세부 내용을 반복해서 재표면화한다.
이 역할 분리는 단일 에이전트가 받는 상충된 요구를 줄인다. 하나의 에이전트가 새 정보를 처리하면서 과거 기록까지 정확히 유지하려 하면, 컨텍스트가 길어질수록 두 작업이 서로 방해한다. 메모라이저가 기록을 맡고 리서처가 필요한 정보만 가져오면 모든 과거 내용을 작업 컨텍스트에 계속 담아둘 필요가 없다.
에이전트의 기억을 층위별로 나누기
작업 메모리(Working Memory)는 LLM이 현재 사용하는 컨텍스트 창이다. 최근 대화, 진행 중인 추론, 도구 출력, 검색된 문서가 이곳에 놓인다. 컨텍스트 부패가 직접 발생하는 층이므로 일관된 작업에 필요한 최소 정보만 남겨야 한다.
에피소드 메모리(Episodic Memory)는 과거 이벤트와 상호작용을 시간의 흐름에 따라 보관한다. 특정 시점에 무엇이 일어났는지 되짚는 기억이며, GAM에서는 페이지 저장소가 이 기능을 담당한다.
의미론적 메모리(Semantic Memory)는 도메인 지식과 사실, 개념 사이의 관계를 장기간 보존한다. 이를 벡터 데이터베이스에 임베딩 형태로 저장하면 의미 기반 검색에 활용할 수 있다.
절차 메모리(Procedural Memory)에는 성공했던 실행 패턴과 도구 사용 방식이 남는다. 에이전트가 유사한 작업을 다시 만났을 때 이전에 효과가 있었던 접근을 재활용하기 위한 기억이다.
장기 세션에서는 이 기억들이 서로 모순되지 않도록 일관성 유지(Consistency Maintenance)도 필요하다. 기존 정보가 바뀌면 관련된 메모리도 함께 갱신할 수 있어야 한다.
부패를 측정해야 메모리도 조정할 수 있다
컨텍스트 위치별 정보 추출 정확도를 검사하는 needle-in-haystack 방식은 정보가 어디에 놓였을 때 취약해지는지 드러낸다. 세션 길이가 늘어날 때 작업 완료율이 어떻게 변하는지 추적하거나, 토큰 위치에 따른 어텐션 가중치 분포를 분석하는 방법도 있다.
측정 결과를 바탕으로 작업 메모리에 남길 정보와 외부 저장소로 보낼 정보를 조정할 수 있다. 리서처는 현재 작업과 직접 관련된 기억만 골라 되돌려 보내고, 메모라이저는 검색 과정에서 당장 선택되지 않은 원본까지 계속 보존한다. 작업 메모리는 가볍게 유지하면서 기록의 손실은 피하는 구조다.
2026년 초 arXiv에 발표된 별도의 GAM 논문은 계층적 그래프 기반 에이전트 메모리 프레임워크를 제안한다. 진행 중인 대화는 이벤트 진행 그래프(event progression graph)에 격리하고, 의미적 전환이 일어날 때만 토픽 연관 네트워크에 통합한다. 메모리를 인코딩하는 과정과 기존 기억에 합치는 과정을 명시적으로 분리한 접근이다.
장기 세션에서 컨텍스트를 다시 짜는 기준
오래된 대화를 요약해 작업 메모리에 남기는 요약 압축(Summary Compression)은 토큰 수를 줄이지만 미묘한 세부 정보를 잃을 수 있다. GAM에서는 요약본을 작업 메모리에 두면서 원본 전체를 페이지 저장소에 보존한다. 요약에서 빠진 내용이 필요해지면 원본 기록을 다시 검색할 수 있다.
관련성 필터(Relevance Filter)는 현재 작업과의 의미적 유사도를 계산해 임계값 아래의 정보를 작업 메모리에서 제거한다. 관련성은 고정되지 않는다. 작업 단계가 달라지면 필요한 정보도 달라지므로 필터 역시 동적으로 움직여야 한다.
컨텍스트 재구성 타이밍(Context Reconstruction Timing)은 작업 메모리를 언제 다시 편성할지를 정한다. 컨텍스트 창이 특정 용량에 도달했을 때, 새로운 작업 단계로 넘어갈 때, 에이전트가 같은 오류를 반복할 때 재구성을 실행할 수 있다. 예를 들어 컨텍스트가 50%를 초과하면 관련성을 다시 계산하고, 낮은 관련성의 항목은 페이지 저장소로 옮긴 뒤 필요한 기억만 리서처가 재검색하는 흐름이다.
Redis의 분석은 세션 구분(session segmentation), 선택적 컨텍스트 보존(selective context retention), 메모리 오프로딩(memory offloading)을 조합하는 방식을 컨텍스트 부패 방지에 효과적인 접근으로 제시한다. Milvus 블로그의 실험에서는 벡터 검색과 키워드 검색을 함께 사용한 방식이 단일 검색보다 컨텍스트 관련성을 유지하는 데 월등히 뛰어났다.
GAM이 보여주는 핵심은 더 큰 창에 모든 기록을 밀어 넣는 방식에서 벗어나는 데 있다. 장기 작업의 전체 이력은 손실 없이 보관하고, 현재 추론에는 필요한 기억만 공급한다. 에이전트 작업이 길고 복잡해질수록 메모리의 크기보다 기억을 저장하고 다시 불러오는 구조가 시스템의 일관성을 좌우한다.
Sources
- https://venturebeat.com/ai/gam-takes-aim-at-context-rot-a-dual-agent-memory-architecture-that
- https://arxiv.org/html/2604.12285
- https://www.trychroma.com/research/context-rot
- https://www.morphllm.com/context-rot
- https://redis.io/blog/context-rot/
- https://milvus.io/blog/keeping-ai-agents-grounded-context-engineering-strategies-that-prevent-context-rot-using-milvus.md
- https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents
- https://cobusgreyling.medium.com/llm-context-rot-28a6d0399655
- https://www.understandingai.org/p/context-rot-the-emerging-challenge
- https://labs.adaline.ai/p/context-rot-why-llms-are-getting