
에이전트 메모리가 잊히는 방식: 엔지니어링 관점의 상세 분석
요약
PowerMem 프레임워크를 통해 AI 에이전트 메모리 시스템 내에서 메시지가 기록되고 축출되는 과정을 엔지니어링 관점에서 분석합니다. 데이터의 중요도 산정부터 접근 빈도에 따른 망각 메커니즘을 상세히 다룹니다.
핵심 포인트
- 메시지 기록 시점부터 데이터의 쇠퇴(Decay)가 시작됨
- 메모리 유지 여부는 재접근(Access) 빈도에 의해 결정됨
- 중요도 점수 산정을 통해 검색 신호 대 잡음비 최적화 필요
- PowerMem을 활용한 에이전트 메모리 관리 프로세스 추적
시간은 기억을 먼지로 덮습니다. 접근(Access)만이 그 먼지를 닦아낼 수 있는 유일한 천입니다. 먼지가 두껍게 쌓이고 아무도 찾지 않을 때, 그것이 바로 망각입니다.

이전 포스트에서 우리는 인지 과학(Cognitive Science)의 관점에서 망각을 살펴보았습니다. 시냅스 가소성(Synaptic Plasticity), 에빙하우스의 망각 곡선(Ebbinghaus forgetting curve) [1], 간격 반복(Spaced Repetition), 그리고 바람직한 어려움(Desirable Difficulty)에 대해 다루었습니다. 매우 매혹적인 이론이었습니다.
이번 글은 다른 각도에서 접근합니다. 우리는 PowerMem 2를 실행 예시로 사용하여, 단일 메시지가 에이전트 메모리 시스템(Agent Memory System) 내에서 쓰기(Write)부터 축출(Eviction)까지 이어지는 과정을 추적하며, 매 단계에서 망각이 어떻게 엔지니어링되는지 관찰할 것입니다. 요약하자면, 메시지가 기록되는 순간부터 쇠퇴(Decay)는 시작되지만, 실제로 메모리의 운명을 결정하는 것은 해당 메모리에 다시 접근(Access)하느냐의 여부입니다.
1. 중요도 점수 산정(Importance Scoring): 이것을 기억할 가치가 있는가?
다음 메시지가 시스템에 도착하는 상황을 상상해 보십시오:
다음 주 금요일 오후 3시 — 회의실 B에서 제품 팀과 함께하는 2분기 요구사항 검토.
메시지가 메모리에 진입하면, 첫 번째 질문은 어떻게 저장할 것인가가 아니라, 저장할 가치가 있는가입니다. 만약 모든 정보가 동일한 비중으로 기록되고 검색된다면, 데이터 양이 증가함에 따라 두 가지 문제가 복합적으로 발생합니다. 검색 신호 대 잡음비(Retrieval Signal-to-Noise)가 계속 떨어지고, 저장 비용(Storage Cost)이 무한정 늘어나게 됩니다.
Shannon의 정보 이론(Information Theory)도 동일한 개념을 설명합니다. 발생 확률이 높은 이벤트는 정보량이 거의 없으므로 장기 보관(Long-term retention)을 위한 적절한 후보가 아니며, 발생 확률은 낮지만 중요한 이벤트는 막대한 정보를 담고 있으므로 반드시 유지(Persisted)되어야 합니다.
중요도 점수 산정(Importance scoring)은 필터 역할을 합니다. 각 항목은 감쇠 속도(Decay speed), 검토 주기(Review cadence), 그리고 후속 단계에서의 제거 우선순위(Eviction priority)를 결정하는 점수를 부여받습니다.
그렇다면 중요도는 어떻게 평가될까요?
1.1 6차원 모델 (The six-dimension model)
PowerMem에서 단일 메시지의 점수를 산정하는 과정은 보기보다 복잡합니다. 시스템은 가중치가 부여되고 합산되는 6개의 축, 즉 6차원 모델을 사용합니다.
우리의 회의 메시지를 예로 들면: "Q2 업무"와 매우 관련성이 높고 (Relevance ≈ 0.8), 구체적인 시간과 장소가 포함되어 있으며 (Factual ≈ 0.8), 참석이 필수적이고 (Actionable ≈ 0.9), 감정적으로 중립적입니다 (Emotional_impact ≈ 0.2). 가중치를 적용하면 다음과 같습니다:
0.3×0.8 + 0.2×0.5 + 0.15×0.2 + 0.15×0.9 + 0.1×0.8 + 0.1×0.6 ≈ 0.72
중요도 점수: 0.72.
이 6차원 모델은 중요도 점수 산정의 이론적 중추(Theoretical backbone)입니다.
1.2 이중 경로 점수 산정: LLM vs. 규칙 엔진 (Dual-path scoring: LLM vs. rule engine)
PowerMem은 시스템이 항상 점수를 반환할 수 있도록 두 가지 실행 경로를 운영합니다. 첫 번째 경로는 6차원 모델을 사용하며, 두 번째 경로는 첫 번째 경로를 사용할 수 없을 때 작동하는 규칙 엔진(Rule engine)으로, 이는 우아한 성능 저하(Graceful degradation)를 구현합니다.
경로 1: LLM 심층 점수 산정 (선호됨)
LLM을 사용할 수 있는 경우, 시스템은 LLM에게 6개 차원을 모두 분석하고 구조화된 JSON을 반환하도록 요청합니다. 예시는 다음과 같습니다:
{
"importance_score": 0.72,
"reasoning": "Meeting schedule imposes a hard time constraint and clear action requirement",
...
PowerMem은 응답에서 importance_score를 읽어옵니다.
LLM의 출력은 완벽하게 예측할 수 없기 때문에, 파싱(Parsing)에는 3단계 폴백(Three-level fallback) 전략을 사용합니다. 먼저 JSON을 시도하고, 실패하면 정규 표현식(Regex)으로 숫자 점수를 추출하며, 이마저도 실패하면 기본값인 0.5를 사용합니다.
엔지니어링 노트 (Engineering note): JSON 내의 차원별 점수(per-dimension scores)는 가중치 공식에 다시 피드백되지 않습니다. 이 점수들은 모델의 추론(사고의 사슬 (chain-of-thought) 스타일)을 구조화하여 최종 점수가 더 안정적으로 유지되도록 하는 역할을 합니다.
두 번째 경로: 규칙 엔진 (fallback)
LLM이 작동하지 않을 때, 규칙 엔진(rule engine)이 제어권을 넘겨받습니다. 정밀도는 떨어지지만, 시스템은 계속 작동합니다.
규칙은 정량화 가능한 신호로부터 점수를 누적합니다:
- 콘텐츠 길이 > 100자: +0.1; > 50자: +0.05
- 키워드 일치: 각각 +0.1
- ? 또는 ! 포함: 각각 +0.05
- 메타데이터 우선순위 높음 / 중간: +0.2 / +0.1
- 점수는 1.0으로 제한 (capped)
이는 프로덕션 환경에서의 **우아한 성능 저하 (graceful degradation)**입니다. 하나의 외부 의존성(external dependency)이 실패한다고 해서 전체 메모리 계층이 중단되어서는 안 됩니다.
2. 분류 및 파라미터 초기화 (Classification and Parameter Initialization)
2.1 3계층 메모리 모델 (Three-layer memory model)
중요도가 설정되면, 다음 단계는 분류(classification)입니다: 이 메시지는 어떤 메모리 계층에 속하는가?
이전 포스트를 읽으셨다면, 생물학적 메모리 계층이 어떻게 작동하는지 기억하실 것입니다: 정보는 용량이 제한된 해마 (hippocampus, 단기 버퍼)로 들어오고, 신피질 (neocortex, 장기 저장소)로 공고화(consolidate)됩니다. 그리고 반복적으로 활성화되거나, 기존 지식과 풍부하게 연결되거나, 정서적으로 두드러지는 항목만이 우선순위 전송(priority transfer)을 얻게 됩니다.
PowerMem은 이를 세 가지 계층으로 매핑합니다:
분류 임계값 (Classification thresholds):
-
score ≥ 0.8 → long_term
-
score ≥ 0.6 → short_term
-
그 외 → working
if score >= self._algo.long_term_threshold: # 0.8
return "long_term"
if score >= self._algo.short_term_threshold: # 0.6
...
우리의 회의 메시지 점수는 0.72입니다. 이는 0.6보다는 높고 0.8보다는 낮으므로, short_term(단기 기억)에 해당합니다.
상위 계층일수록 더 느리게 감쇠(decay)하며, 메모리는 더 오래 지속됩니다.
2.2 망각 파라미터 초기화 (Forgetting parameter initialization)
분류(Classification)는 메모리가 어디에 위치하는지를 결정합니다. 더 핵심적인 질문은 다음과 같습니다: 얼마나 빨리 사라져야 하는가? 공고화(consolidation)를 위해 언제 검토되어야 하는가?
분류 후, PowerMem은 전체 생애주기 메타데이터 프로필(lifecycle metadata profile)을 구축합니다. 이는 강도(strength), 감쇠 파라미터(decay parameters), 검토 일정(review schedule), 관리 플래그(management flags)를 추적하는 카드 역할을 합니다.
이 프로필은 두 개의 블록으로 나뉩니다:
아래에서는 회의 예시(중요도 = 0.72, short_term)를 바탕으로 각 파라미터를 살펴보겠습니다.
2.2.1 초기 보유율 (Initial retention)
초기 보유율(Initial retention)은 메모리가 생성될 당시 얼마나 "견고한지"를 포착합니다. 더 중요한 콘텐츠는 더 높은 보유율로 시작해야 하며, 중요도가 낮은 노이즈는 첫날부터 취약하게 유지되어 더 강력한 경쟁자에게 대역폭(bandwidth)을 양보해야 합니다.
PowerMem에서는 다음과 같이 처리합니다:
initial_retention = self.initial_retention * importance_score
# 회의 예시: 1.0 × 0.72 = 0.72
두 개의 필드가 기록됩니다:
-
initial_retention — 생성 시점의 스냅샷 ("얼마나 확고하게 인코딩되었는가")
-
current_retention — 현재의 유효 보유율
생성 시점에는 두 값이 일치하지만, 감쇠(decay)와 검토(review)가 진행됨에 따라 current_retention만 변화합니다.
2.2.2 계층별 감쇠율 (Decay rate by layer)
working / short_term / long_term은 각각 작업 기억(working memory), 해마(hippocampus), 신피질(neocortex)을 반영합니다. 장기 저장소(long-term storage)에 가까울수록 단위 시간당 망각 속도가 느려집니다. 각 계층은 고유한 감쇠 계수(decay coefficient)를 가집니다:
{
"working": 0.5, # 가장 작은 S — 가장 빠르게 소멸함
"short_term": 1.5,
...
우리의 단기(short_term) 회의 메시지의 경우:
0.1 (전역 기본 감쇠율, global base decay) × 1.5 (단기 계수, short_term coefficient) = 0.15
비교하자면:
-
working: 0.1 × 0.5 = 0.05
-
long_term: 0.1 × 2.0 = 0.20
계수가 클수록 → 망각 속도가 느려집니다 (이 매개변수화 범위 내에서).
2.2.3 복습 일정 관리 (Review scheduling)
간격 반복 (Spaced repetition)의 핵심 규칙은 다음과 같습니다: 처음에는 자주 복습하고, 점차 간격을 늘려가는 것입니다. 기억이 거의 사라지기 직전이지만 여전히 회복 가능한 시점을 공략해야 합니다. 복습이 낭비될 정도로 너무 빠르지도, 이미 손실될 정도로 너무 늦지도 않은 시점 말입니다.
PowerMem은 복습 타임스탬프를 요청 시(on demand)가 아니라 생성 시점에 예약합니다.
1단계: 기본 간격 (Baseline intervals)
다섯 가지 전역 기본 간격(시간 단위): [1, 6, 24, 72, 168] — 대략 1시간, 6시간, 1일, 3일, 7일입니다. 모든 메모리가 이를 공유합니다.
2단계: 중요도에 따른 압축 (Compress by importance)
기본 간격은 모든 메모리를 동일하게 취급하지만, 자격 증명(credential) 관련 알림은 잡담(small talk)보다 더 자주 촉구되어야 합니다. 각 간격은 다음과 같이 압축됩니다:
adjusted_interval = interval × (1 - importance_score × adjustment_factor)
-
interval — 기본값 (예: 1시간, 6시간, 24시간)
-
importance_score — 우리 회의의 경우 0.72
-
adjustment_factor — 기본값 0.3 (압축 강도)
-
하한선 (Floor): 0.5시간
회의의 경우 (importance = 0.72):
1 - 0.72 × 0.3 = 0.784
각 기본 간격은 원래 길이의 78.4%가 됩니다:
중요도가 낮은 메시지의 경우 (importance = 0.3):
1 - 0.3 × 0.3 = 0.91
간격이 아주 약간만 줄어들며, 복습 시점이 뒤로 밀리게 됩니다:
높은 중요도(Higher importance) → 더 빠른 복습 주기(earlier review windows) → 재공고화(re-consolidate) 기회 증가.
5개의 타임스탬프(timestamps)를 계산한 후, PowerMem은 전체 스케줄을 저장하고 보조 필드(companion fields)를 초기화합니다:
함께 구성되는 항목:
-
next_review — 복습 시점
-
review_count + last_reviewed — 복습이 얼마나 이루어졌는지
-
reinforcement_factor — 각 복습이 얼마나 회복시키는지
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기







