Tech Blog로 돌아가기

AI AGENT STUDY · MEMORY

13

Agent memory는 chat log가 아니다

대화 전체를 다시 넣는 방식에서 벗어나, 무엇을 저장하고 찾고 주입하고 잊을지 결정하는 memory policy를 계층별로 정리합니다.

거대한 기억 보관소에서 일부 정보만 골라 현재 작업 공간으로 보내는 Agent memory 시스템
Memory는 과거를 모두 저장하는 기능이 아니라, 미래 판단에 다시 사용할 정보를 선택하는 정책입니다.원본 크기로 보기

이전 대화를 모두 다시 넣으면 memory가 완성될까

Chat history는 과거에 무슨 일이 있었는지 기록합니다. Agent memory는 그중 무엇을 저장하고, 언제 찾고, 어떤 형태로 현재 판단에 주입하고, 언제 수정하거나 삭제할지를 결정합니다. 둘을 같게 보면 context는 금방 길어지고 잘못된 정보가 반복됩니다.

RAG와 Memory는 모두 context를 선택하지만 source가 다릅니다

구분RAGMemory
Source외부 문서와 지식 corpus사용자·session·workflow의 과거 경험
주요 질문이 질문에 필요한 근거는 무엇인가?이후 판단에 다시 쓸 상태는 무엇인가?
대표 위험잘못된 문서와 stale indexScope leak, 오래된 선호, 잘못된 요약
평가Recall, precision, groundednessContinuity, relevance, freshness, deletion

둘 다 저장소 전체를 prompt에 넣지 않습니다. 후보를 찾고, relevance와 freshness를 평가하고, token budget에 맞춰 구성한 뒤, 모델에게 보여 준 context가 실제 답에 어떻게 사용됐는지 확인합니다.

Raw chat replay가 부족한 다섯 이유

  1. Context window는 저장소가 아닙니다. 입력이 길어질수록 비용과 latency, 중요한 지시의 희석이 커집니다.
  2. 모든 문장이 기억할 가치가 있지 않습니다. 인사와 임시 추측, 이미 폐기된 계획이 선호와 제약 조건을 덮을 수 있습니다.
  3. Session scope와 user scope는 다릅니다. 한 작업의 임시 상태가 다른 작업이나 다른 사람에게 새면 안 됩니다.
  4. 저장과 주입은 별개입니다. 저장된 사실도 현재 질문에 관련될 때만 context로 들어가야 합니다.
  5. Context 제외와 삭제는 다릅니다. Prompt에서 빼는 것과 retention 정책에 따라 storage에서 지우는 것은 별도 작업입니다.

Memory는 write–retrieve–inject–forget loop로 설계합니다

MEMORY POLICY

event
→ should_write?
→ choose scope + memory type
→ normalize + deduplicate + version
→ retrieve candidates for current task
→ filter by relevance + freshness + permission
→ inject within token budget
→ update, supersede, expire, or delete

Write policy

명시적인 사용자 선호, 반복되는 안정적 사실, 완료되지 않은 workflow state처럼 미래 작업에 가치가 있는 정보만 씁니다. Model의 추측을 사실처럼 저장하지 않고 provenance와 confidence를 함께 남깁니다.

Retrieval과 injection policy

Semantic similarity만 보지 않고 user, workspace, thread, task scope와 recency, status를 필터링합니다. 주입할 때는 원문 전부보다 현재 판단에 필요한 요약과 source id, timestamp를 사용합니다.

Update와 forget policy

새 정보가 이전 정보를 대체할 때 overwrite보다 superseded relation과 version을 남기면 audit이 쉬워집니다. 사용자가 삭제를 요청했거나 retention이 끝난 데이터는 vector index, cache, summary에서도 함께 제거해야 합니다.

Framework보다 memory 계층과 책임을 비교합니다

계층예시수명
Working context현재 prompt의 message와 retrieved memory한 model call
Thread state대화 요약, pending approval, checkpoint한 thread
User profile언어, 안정적 선호, 접근성 요구여러 session
Workflow memory작업 단계, artifact path, 결정 기록작업 종료까지
Episodic record성공·실패 trajectory와 피드백평가·학습 정책에 따라
External knowledge문서와 지식 base문서 lifecycle

Native checkpoint는 실행 연속성에 강하고, external memory layer는 여러 runtime과 장기 profile을 공유하는 데 유리합니다. 제품은 하나를 고르는 대신 scope와 lifecycle에 따라 계층을 조합합니다.

기억이 잘 되는지보다 잘못 기억하지 않는지 먼저 봅니다

  • 한 사용자의 memory가 다른 사용자에게 검색되지 않는지 확인합니다.
  • 사용자가 선호를 바꿨을 때 오래된 값이 다시 주입되지 않는지 확인합니다.
  • Compaction 전후에 핵심 constraint와 pending state가 보존되는지 비교합니다.
  • 삭제 요청 후 primary store, vector index, cache에서 모두 사라지는지 검증합니다.
  • 잘못 저장된 사실이 있을 때 source와 write decision을 trace로 역추적합니다.