
AI 어시스턴트에게 기억상실 문제가 발생하는 이유와 이를 해결하는 방법
요약
AI 에이전트의 기억상실 및 노이즈 축적 문제를 해결하기 위해 계층적 그래프-벡터 메모리(HGVM) 아키텍처를 제안합니다. 인간의 기억 방식처럼 정보를 계층화하고, 압축하며, 관련 없는 정보를 삭제하는 동적 관리 시스템을 구축하는 것이 핵심입니다.
핵심 포인트
- 기존의 평면적 벡터 저장 방식은 문맥 누출 문제를 야기함
- HGVM은 계층적 구조를 통해 정보의 관련성과 최신성을 관리함
- 기억을 단순 저장이 아닌 관리되는 자원으로 취급함
- 정보의 압축, 강화, 능동적 가지치기 프로세스 도입
HGVM에 대한 심층 분석: AI 에이전트가 인간처럼 기억하고, 인간처럼 잊으며, 인간처럼 학습하게 만드는 메모리 아키텍처(Memory Architecture).
AI를 자주 사용하는 사람이라면 누구나 경험해 본 순간이 있습니다. 당신은 20분 동안 대화를 나누며 당신의 프로젝트, 제약 사항, 선호도, 기술 스택(Stack)을 설명했습니다. 어시스턴트는 유용했고, 정확했으며, 문맥을 잘 파악하고 있었습니다. 그러고 나서 당신은 탭을 닫았습니다.
다음 날, 당신은 새로운 대화를 시작합니다. 어시스턴트는 당신을 낯선 사람처럼 대합니다.
당신은 모든 것을 다시 설명해야 합니다.
이것은 사소한 불편함이 아닙니다. 이것은 근본적인 아키텍처(Architectural) 결함이며, 유일한 결함도 아닙니다. 스펙트럼의 반대편에는 모든 것을 영원히 기억하는 시스템들이 있습니다. 모든 지나가는 말, 모든 일시적인 선호도, 6개월 전의 모든 오래된 문맥(Context)까지 말이죠. 이러한 시스템들은 잊지 않지만, 메모리가 오히려 부담이 될 때까지 노이즈(Noise)를 축적합니다. 이들은 최신 사실만큼이나 자신 있게 오래된 정보를 드러냅니다. 이들은 현재의 사실보다는 이전에 당신이 했던 말에 얽매여 아첨하는 성향을 보이게 됩니다.
두 모델 모두 메모리가 작동해야 하는 방식이 아닙니다. 두 모델 모두 인간의 메모리가 작동하는 방식도 아닙니다.
우리는 이를 해결하기 위해 HGVM, 즉 계층적 그래프-벡터 메모리(Hierarchical Graph-Vector Memory)를 구축했습니다. 이 블로그에서는 이것이 무엇인지, 어떻게 작동하는지, 그리고 왜 이것이 AI 에이전트 메모리에 대해 의미 있게 다른 접근 방식을 나타낸다고 생각하는지 설명합니다.
인간의 메모리 비유
인간의 메모리는 데이터베이스(Database)가 아닙니다. 모든 것을 동일한 충실도로 저장하고 요청 시에 검색하는 방식이 아닙니다. 그것은 관련성, 최신성, 그리고 반복적인 노출을 기반으로 정보를 지속적으로 조직화, 압축, 강화 및 폐기하는 역동적이고 적응적인 시스템입니다.
당신이 새로운 것을 배울 때, 뇌는 단순히 그것을 파일로 저장하지 않습니다. 뇌는 그것을 기존의 구조와 연결합니다. 수면 중에 관련된 파편들을 일관된 추상화 (abstractions) 형태로 통합합니다. 반복적으로 접근하는 기억은 강화하고, 그렇지 않은 기억은 사라지게 둡니다. 그리고 결정적으로, 뇌는 성찰합니다. 경험 전반에 걸친 패턴을 포착하고, 이를 미래의 추론을 형성하는 내구성 있는 지식으로 결정화 (crystallizes) 합니다.
HGVM은 이러한 직관을 바탕으로 구축되었습니다. 기억은 계속 쌓여만 가는 더미가 아니라, _관리되는 자원 (managed resource)_이어야 합니다. 기억은 계층적으로 구조화되어야 하고, 선택적으로 검색되어야 하며, 시간이 지남에 따라 추상화로 압축되어야 하고, 더 이상 관련이 없을 때는 능동적으로 가지치기 (pruned) 되어야 합니다. 이 네 가지 동작이 함께 작동해야 합니다.
HGVM의 네 가지 기둥 (The Four Pillars of HGVM)
1. 계층적 구조 (Hierarchical Structure)
대부분의 기존 메모리 시스템은 기억을 임베딩 (embeddings)이 포함된 텍스트 청크 (text chunks)의 평면적인 집합으로 저장합니다. 쿼리 (query)를 실행하면 모든 청크에 대해 벡터 유사도 검색 (vector similarity search)을 수행하여 상위 결과들을 반환합니다. 이는 소규모 규모에서는 적절히 작동하지만, 메모리가 커짐에 따라 두 가지 중요한 측면에서 실패합니다.
첫째, 이는 **문맥 누출 (context leakage)**을 유발합니다. 검색 시스템이 "의미상 유사함"과 "이 상황에 관련됨"을 구분할 방법이 없기 때문에, 의미적으로는 유사하지만 문맥적으로는 무관한 기억들이 떠오르게 됩니다. 예를 들어, 당신의 Python 프로젝트에 대한 질문을 했을 때, 두 달 전 완전히 다른 목적으로 작성했던 Python 스크립트에 대한 기억이 떠오를 수 있습니다.
둘째, 비용이 많이 듭니다. 모든 기억에 대한 벡터 검색은 선형적으로 증가합니다. 더 많이 기억할수록 검색은 더 느려지고 노이즈가 심해집니다.
HGVM은 기억을 엄격한 4단계 계층 구조로 조직화합니다:
도메인 (Domain) → 카테고리 (Category) → 토픽 (Topic) → 에피소드 (Episode)
도메인 (Domain)은 가장 넓은 그룹화입니다: 업무, 건강, 개인, 금융. 카테고리 (Category)는 하위 도메인입니다: 프로젝트X, 아침 달리기, 가족. 토픽 (Topic)은 카테고리 내의 일관된 주제입니다: 백엔드 API 설계, 스프린트 계획, 아버지의 병원 방문. 에피소드 (Episode)는 토픽에 부착된 단일 원자적 기억 항목 (atomic memory item)입니다.
쿼리가 도착하면, 시스템은 먼저 도메인 (Domain) 및 카테고리 (Category) 수준에서 요약본(summaries)에 대한 저렴한 시맨틱 매칭 (semantic match)을 수행하여 경로를 지정한 다음, 관련 있는 서브 그래프 (sub-graph) 내에서만 벡터 검색 (vector search)을 실행합니다. 후보 집합 (candidate set)은 작습니다. 검색 (Retrieval)은 정밀합니다. 관련 없는 브랜치 (branches)는 고려조차 되지 않기 때문에 컨텍스트 누출 (context leakage)이 극적으로 감소합니다.
이것이 다른 모든 것들이 구축되는 구조적 토대입니다.
2. 능동적 망각 (Active Forgetting)
망각은 실패 모드가 아닙니다. 그것은 기능 (feature)입니다.
대부분의 AI 메모리 시스템이 모든 것을 영원히 기억하는 이유는 망각이 위험하게 느껴지기 때문입니다. '중요한 것을 삭제하면 어떡하지?'라는 걱정 때문이죠. 그 결과, 노이즈 (noise)가 무기한으로 축적되는 시스템이 만들어지며, 메모리 저장소의 신호 대 잡음비 (signal-to-noise ratio)가 시간이 지남에 따라 저하되고 그에 따라 검색 품질도 함께 저하됩니다.
HGVM은 다른 입장을 취합니다. 망각은 균일해서는 안 되며, 메모리 유형별로 계층화 (tiered by memory type) 되어야 합니다. 모든 기억이 동일한 대우를 받을 필요는 없습니다.
우리는 각각 고유한 감쇠 (decay) 동작을 가진 다섯 가지 메모리 클래스 (memory classes)를 정의합니다:
| 메모리 클래스 (Memory Class) | 저장 내용 | 감쇠율 (Decay Rate) |
|---|---|---|
permanent | 명시적 정체성 사실 ("나는 채식주의자다", "이것은 절대 잊지 마라") | 감쇠되지 않음 |
| ... | ||
![]() |
영구적 메모리 (permanent memory) - 사용자가 시스템에 기억하라고 명시적으로 말한 것으로, 절대 감쇠되지 않습니다. 선호도 (preference) - "나는 TypeScript를 선호한다"와 같은 것은 매우 느리게 사라지며 몇 달 동안 유용하게 유지됩니다. 작업 상태 (task_state) 메모리 - "현재 인증 미들웨어에서 막혀 있음"과 같은 것은 빠르게 사라지며, 작업 컨텍스트 (task context)가 빠르게 변하기 때문에 며칠 내로 오래된 정보 (stale)가 됩니다.
감쇠 공식 (decay formula) 자체는 인지 과학 (cognitive science)에서 빌려온 것입니다. 우리는 마지막 접근 이후 시간이 지남에 따라 각 기억의 강도가 저하되는 지수 감쇠 함수 (exponential decay function)를 사용합니다:
new_strength = current_strength × exp(−λ × days_since_access)
각 기억 클래스 (memory class)는 고유한 λ 값을 가집니다. 강도가 최소 임계값 (minimum threshold) 아래로 떨어지면, 해당 기억은 소프트 삭제 (soft-deleted) 됩니다. 즉, 무효한 것으로 표시되지만 감사 가능성 (auditability)을 위해 그래프에 보존됩니다. 망각 과정 중에 그 어떤 것도 하드 삭제 (hard-deleted) 되지 않습니다.
검색 (retrieval) 또한 강화됩니다. 쿼리 (query)에서 기억이 반환될 때마다 그 강도가 높아집니다. 반복적으로 유용한 기억은 강하게 유지됩니다. 전혀 관련이 없는 기억은 우아하게 사라집니다.
이것이 바로 대부분의 기존 시스템이 무시하는 망각 곡선 (forgetting curve)입니다. HGVM은 이를 설계 원칙 (design principle)으로 수용합니다.
3. 공고화 (Consolidation)
50개의 가공되지 않은 에피소드 노드 (raw episode nodes)를 가진 주제는 유용하지 않습니다. 조각조각 검색된 50개의 개별 임베딩된 파편들은 노이즈가 많고 중복된 컨텍스트 (context)를 생성합니다. 어느 시점에 이르면, 축적된 가공되지 않은 기억들은 더 밀도 있고 유용한 무언가로 압축되어야 합니다.
이것이 바로 공고화 (consolidation)입니다.
HGVM은 다음과 같이 작동하는 예약된 공고화 파이프라인 (consolidation pipeline)을 실행합니다: 하나의 주제에 충분한 가공되지 않은 에피소드가 쌓이면, 시스템은 의미론적 유사성 (semantic similarity)에 따라 이들을 클러스터링 (clustering)하고, 각 클러스터에서 원자적 사실 (atomic facts)을 추출하며, 해당 사실들로부터 간결한 요약을 생성한 다음, 요약이 원본 자료에 충실한지 확인하기 위해 **일괄 검증 단계 (batched verification pass)**를 수행합니다.
검증 단계는 타협할 수 없는 필수 과정입니다. 우리는 세 가지 실패 조건, 즉 누락된 사실 (원본에는 있으나 요약에 포함되지 않은 내용), 변질된 사실 (의미가 변한 내용), 그리고 모순된 사실 (원본과 직접적으로 충돌하는 내용)을 확인합니다. 만약 이러한 조건 중 하나라도 비어 있지 않다면, 통합 (consolidation)은 거부되고 로그에 기록됩니다. 검증이 완전히 통과될 때까지 어떠한 요약 에피소드 (summary episode)도 생성되지 않습니다.
검증을 통과하면, 시스템은 SUMMARIZES 관계를 통해 원본 에피소드들과 연결된 consolidation_summary 하위 유형을 가진 새로운 semantic 에피소드를 생성합니다. 결정적으로, 원본 에피소드는 절대 삭제되지 않습니다. 통합은 압축된 지식을 추가하는 것이지, 출처 (provenance)를 파괴하는 것이 아닙니다.
그 후 검색 시스템은 대부분의 쿼리(query)에 대해 자연스럽게 요약을 선호하게 됩니다. 요약은 더 밀도가 높고, 더 대표적이며, 의미론적으로 더 풍부하기 때문입니다. 반면, 세부적인 정보가 필요한 쿼리를 위해서는 원본 에피소드들이 여전히 사용 가능한 상태로 남아 있습니다.
이는 인간의 기억이 수면 중에 통합되는 방식과 유사합니다. 원본 경험은 시스템 어딘가에 남아 있지만, 당신이 매일 접근하는 것은 압축되고 조직된 버전입니다.
4. 성찰 (Reflection)
통합 (Consolidation)은 압축합니다. 성찰 (Reflection)은 _학습_합니다.
성찰은 HGVM에서 가장 독창적인 구성 요소입니다. 통합이 단일 주제 내에서 요약을 생성하는 반면, 성찰은 여러 주제와 세션에 걸쳐 작동하며 행동, 선호도, 추론에서의 고차원적 패턴을 찾아냅니다.
열 번의 세션에 걸쳐 다음과 같은 행동을 보인 사용자를 상상해 보십시오: Java를 두 번 거부하고, 세 번의 연속된 프로젝트에서 Python을 선택했으며, Django 대신 FastAPI를 일관되게 사용하고, 장황한 엔터프라이즈 프레임워크(enterprise frameworks)에 대해 불평했습니다. 단일 에피소드(episode)만으로는 "이 사용자는 개발자 생산성을 중시한다"라고 말할 수 없습니다. 하지만 에피소드 전반에 걸친 패턴은 이를 말해줍니다.
성찰(Reflection)은 이를 감지합니다. 성찰은 비성찰적 메모리 클래스(non-reflective memory classes)인 permanent, preference, task_state, observation으로부터 최근의 유효한 에피소드들을 가져와, 이를 일관된 증거 번들(evidence bundles)로 그룹화하고, 후보가 될 고차원적 추상화(higher-order abstractions)를 생성합니다. 이러한 것들은 하위 유형이 reflection_pattern인 semantic 에피소드로 저장되며, 이를 뒷받침하는 증거들과 연결됩니다.
결과적으로: 다음에 사용자가 프로젝트 스캐폴드(scaffold) 추천을 요청할 때, 시스템은 단순히 사용자가 이전에 FastAPI를 사용했다는 사실만을 회상하는 것이 아닙니다. "이 사용자는 생태계의 보수성보다 개발자 생산성을 우선시한다"라는 성찰을 검색하고, 그 지속적인 통찰(durable insight)을 바탕으로 추론합니다.
우리가 아키텍처 수준에서 강제하는 한 가지 엄격한 제약 조건이 있습니다: 성찰 메모리(reflection memories)는 미래의 성찰을 위한 증거로 절대 사용될 수 없습니다. 이는 시스템이 자신의 추상화에 대해 다시 성찰함으로써 시간이 지남에 따라 왜곡이 누적되는 피드백 루프(feedback loop)를 방지합니다. 성찰은 오직 1차 증거(primary evidence)에 대해서만 작동합니다. 이 제약 조건은 단순히 프롬프트 수준이 아니라 데이터베이스 쿼리 수준에서 강제됩니다.
HGVM이 기존 방식과 비교하여 갖는 차이점
에이전트 메모리(agent memory) 환경은 지난 2년 동안 더욱 정교해졌습니다. 기존 시스템들이 어느 위치에 있는지, 그리고 HGVM이 어디까지 나아가는지에 대해 솔직하게 짚어볼 가치가 있습니다.
MemGPT / Letta는 함수 호출 (function calls)을 사용하여 활성 컨텍스트 (active context)와 외부 메모리 (external memory) 사이의 페이징 (paging) 개념을 도입했으며, Letta는 수면 시간 통합 에이전트 (sleep-time consolidation agents)를 추가했습니다. HGVM은 이러한 아이디어들을 직접적으로 기반으로 구축하되, 계층적 라우팅 (hierarchical routing), 계층적 망각 (tiered forgetting), 그리고 성찰 파이프라인 (reflection pipeline)을 추가합니다.
Mem0는 우수한 API 설계와 함께 깔끔한 다중 신호 검색 시스템 (multi-signal retrieval system; 의미론적 + 키워드 + 엔티티)을 제공합니다. 하지만 계층적 메모리 구조 (hierarchical memory organization), 계층적 감쇠 (tiered decay), 또는 성찰 (reflection) 기능은 제공하지 않습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기



