← Back to Posts

Memory OS of AI Agent: AI 에이전트 기억을 운영체제처럼 관리하는 3단 메모리 프레임워크

2026-07-14

MemoryOSAI AgentSTMMTMLPMLoCoMoLong-term MemoryFAISS

1. 개요

Memory OS of AI Agent는 AI 에이전트의 기억을 **단기 기억(STM, Short-Term Memory) · 중기 기억(MTM, Mid-Term Memory) · 장기 개인 기억(LPM, Long-Term Personal Memory)**의 3단 계층으로 나누고, 저장(Storage)·갱신(Updating)·검색(Retrieval)·생성(Generation)을 통합적으로 관리하는 메모리 운영 프레임워크입니다.

이 논문은 EMNLP 2025 Oral로 소개되었으며, 운영체제(OS)의 메모리 관리 개념에서 영감을 받아 에이전트 메모리를 구조화합니다. 핵심은 기존 MemGPT의 2단 구조를 3단으로 확장하고, STM→MTM은 dialogue-chain 기반 FIFO, MTM→LPM은 segmented page + heat 기반 승격으로 설계했다는 점입니다. 이를 통해 긴 대화에서의 맥락 유지와 사용자 개인화 기억을 동시에 강화하는 것이 목표입니다.

팀원분께서 진행하는 스터디 자료를 바탕으로 재구성


2. 차별성

기존 방식의 한계와 MemoryOS의 접근

구분기존 방식MemoryOS
메모리 계층보통 단일 버퍼 또는 2단 구조STM / MTM / LPM의 3단 구조
시간 축 처리최근 대화 위주, 장기 정보와 혼재시간 축에 따라 기억을 분리 관리
중간 요약 계층없음 또는 약함주제 세그먼트(session/segment) 기반 MTM
장기 승격 기준단순 요약 또는 수동 저장Heat score 기반 자동 승격
검색 방식전체 히스토리 검색 또는 단일 벡터 검색계층별 검색 + MTM 2단 검색(segment→page)
개인화프로필 프롬프트 주입에 의존LPM에 사용자/에이전트 지식을 구조적으로 저장
긴 대화 대응컨텍스트 길이 한계에 취약외부 메모리 전제 설계

핵심 역량

  • 시간 기반 계층화(Time-aware hierarchy): 최근/반복/개인 지식을 분리 저장
  • Dialogue-chain FIFO 업데이트: STM에서 밀려난 대화를 page 단위로 MTM에 반영
  • Segmented page 구조: 대화를 page와 segment로 조직해 주제 단위 관리
  • Heat 기반 승격(heat-based promotion): 자주 쓰이고 최근성이 높은 내용을 LPM으로 승격
  • 적응적 검색(adaptive retrieval): STM/MTM/LPM을 병렬 검색 후 통합
  • 개인화 응답 생성(personalized generation): 검색된 기억과 사용자 프로필을 함께 활용

기여와 한계

기여

  • MemGPT의 2단 메모리를 3단 시간 계층 구조로 확장
  • Heat 승격 메커니즘을 도입해 장기 기억 후보를 자동 선별
  • LoCoMo에서 긴 대화 기억과 개인화 유지 측면에서 강한 성능 확인

한계

  • 단계 전이, 유사도 임계값, heat 임계값 등 휴리스틱이 많음
  • 대화형 벤치마크 중심 검증으로, 비대화형 task 일반화는 미검증
  • JSON 파일 저장, in-memory FAISS 재구성 등 운영 환경 확장성 이슈 존재

3. 시스템 구성 요소

주요 컴포넌트

구성 요소역할상세 내용
STM (Short-Term Memory)최근 대화 보관deque(maxlen) 기반 FIFO 큐, QA pair 저장
MTM (Mid-Term Memory)반복 주제와 대화 흐름 보관segment(session)와 page 구조, embedding + FAISS 검색
LPM (Long-Term Personal Memory)사용자/에이전트 장기 지식 저장user profile, user knowledge, assistant knowledge 저장
Updater계층 간 전이 담당STM→MTM 이관, MTM→LPM 승격 트리거
Retriever계층별 검색 통합STM/MTM/LPM 병렬 검색 후 top-k 취합
Generator응답 생성검색 결과와 프로필을 프롬프트에 통합해 LLM 응답 생성

작동 원리

[User Query] [STM에 최근 대화 저장] [STM 용량 초과?] ├─ No → 유지 └─ Yes → oldest QA pop [page 변환 + dialogue chain 연결] [multi-summary 생성] [기존 MTM segment와 유사도 비교] ├─ 유사 segment 존재 → 해당 segment에 병합 └─ 없음 → 새 segment 생성 [Heat 갱신] [Heat ≥ τ ?] ├─ No → MTM 유지 └─ Yes → LLM 분석 [user profile 갱신] [user knowledge 저장] [assistant knowledge 저장] [응답 시] [STM 전체 + MTM 검색 + LPM 검색] [검색 결과 통합] [LLM이 개인화된 응답 생성] [응답도 다시 STM에 저장]

핵심 컴포넌트 상세

3-1. STM: 최근 대화 버퍼

STM은 가장 단순한 계층입니다. 최근 QA pair를 FIFO 큐에 저장하며, 임베딩이나 LLM 분석 없이 빠르게 접근 가능한 현재 문맥 저장소 역할을 합니다.

항목내용
자료구조deque(maxlen=7)
저장 단위QA Pair
특징최근 대화 유지, 가장 오래된 항목부터 MTM으로 이동
저장 파일short_term.json

저장 형식은 다음과 같습니다.

필드설명
user_input사용자 입력
agent_response에이전트 응답
timestamp대화 시각

3-2. MTM: 주제 세그먼트 메모리

MTM은 MemoryOS의 핵심입니다. STM에서 밀려난 대화를 page로 변환하고, 유사한 page들을 segment(session) 단위로 묶어 관리합니다. 여기서 segment는 논문 표현, session은 코드 표현으로 사실상 같은 개념으로 볼 수 있습니다.

MTM page 구조
필드설명
page_id페이지 식별자
user_input사용자 발화
agent_response에이전트 발화
timestamp시각 정보
page_embeddingpage 임베딩 벡터
page_keywords키워드
pre_page / next_page대화 연속성 연결
meta_info대화 체인 개요
preloaded / analyzed상태 플래그
MTM session(segment) 구조
필드설명
summary세그먼트 요약
summary_keywords세그먼트 키워드
summary_embedding세그먼트 임베딩
detailspage 리스트
L_interaction상호작용 길이
N_visit검색 방문 횟수
R_recency시간 감쇠 기반 최근성
H_segmentheat score
last_visit_time마지막 방문 시각
access_count_lfuLFU 퇴거 카운터
Heat score

MTM에서 장기 기억 승격 여부는 heat로 결정됩니다.

요소의미
N_visit얼마나 자주 검색되었는가
L_interaction얼마나 많은 대화가 축적되었는가
R_recency최근에도 쓰였는가

기본 식은 다음 의미를 가집니다.

  • H_segment = α·N + β·L + γ·R
  • 실험에서는 α=β=γ=1
  • 승격 임계값 τ=5

즉, 자주 참조되고, 길게 축적되며, 최근에도 사용된 주제가 hot segment가 됩니다.

3-3. LPM: 장기 개인 기억

LPM은 사용자와 에이전트의 장기적 특성을 저장하는 계층입니다. 단순한 과거 대화 저장이 아니라, MTM에서 충분히 중요하다고 판단된 내용만 추출해 구조화합니다.

구성역할검색 여부
user_profiles사용자 서술형 프로필보통 전체 주입
user knowledge사용자 관련 사실 조각검색 대상
assistant knowledge에이전트 특성/지식검색 대상

LPM의 핵심은 hot segment의 unanalyzed page들만 대상으로 LLM 분석을 수행한다는 점입니다. 이 과정에서 사용자 프로필과 지식 조각을 추출하고, 이후 검색 가능한 장기 기억으로 저장합니다.


4. 검증된 성능

LoCoMo 벤치마크 성능

논문은 긴 기간에 걸친 대화 기억을 평가하는 LoCoMo benchmark에서 MemoryOS의 강점을 보여줍니다. 특히 GPT-4o-mini 기반 실험에서 베이스라인 대비 다음과 같은 향상을 보고합니다.

벤치마크모델개선 지표
LoCoMoGPT-4o-mini평균 F1 49.11% 향상
LoCoMoGPT-4o-mini평균 BLEU-1 46.18% 향상

이 결과는 MemoryOS가 긴 대화에서 단순 사실 회상뿐 아니라 **맥락적 일관성(contextual coherence)**과 개인화된 기억 유지에 유리함을 시사합니다.

GVD 데이터셋 성능

GVD는 15명의 가상 사용자와 10일간 상호작용하는 멀티턴 대화 데이터셋입니다. LoCoMo보다 상대적으로 쉬운 설정으로 설명되며, MemoryOS는 여기서도 강한 결과를 보였습니다.

데이터셋평가 항목설명
GVDMemory Retrieval Accuracy0/1 이진 평가
GVDResponse Correctness0 / 0.5 / 1
GVDContextual Coherence0 / 0.5 / 1
결과 요약내용
전반적 경향모든 방법이 LoCoMo보다 높은 baseline accuracy 달성
비교 결과SOTA 베이스라인 A-Mem 대비 정확도 3.2% 상회

LoCoMo 데이터셋 구조

LoCoMo는 “며칠 전/몇 달 전에 나눈 이야기를 기억하는가”를 묻는 구조라 외부 메모리 시스템이 사실상 필수입니다.

항목내용
샘플 수10개 대화
세션 수대화당 19~32개
특징서로 다른 날짜의 장기 대화
핵심 평가과거 사실, 시간, 다중 추론, 함정 질문 대응

LoCoMo QA category

category유형개수(전체)채점 방식예시
1Multi-hop282하위답 분해 후 부분 F1“What did Caroline research?”
2Temporal321전체 문구 F1“When did Caroline go to the LGBTQ support group?”
3Open-domain96첫 답 기준 F1“What fields would Caroline pursue?”
4Single-hop841전체 문구 F1“What did the charity race raise awareness for?”
5Adversarial446답이 없어야 정답근거 없는 질문에 “not mentioned”

검색 파라미터 k 실험

논문은 retrieval top-k를 {5, 10, 20, 30, 40}으로 실험했고, k가 커질수록 성능이 좋아지지만 일정 수준 이후 이득이 줄어든다고 보고합니다.

k 값경향
5 → 10성능 개선 폭 큼
10 이상개선은 있으나 점차 감소
최종 선택k=10

선정 이유는 계산 오버헤드와 성능 사이의 균형입니다.


5. 사용 방법

설치 방법

공개 리포지토리는 BAI-LAB/MemoryOS이며, Python 기반으로 사용할 수 있습니다. 실험 환경 단서로는 faiss-cpu, numpy, openai, streamlit 등이 사용됩니다.

pip install faiss-cpu numpy openai pandas python-dotenv requests streamlit

또는 Docker 기반 toy 환경으로 실행할 수 있습니다.

docker compose up --build

기본 사용 흐름

MemoryOS는 개념적으로 다음 순서로 동작합니다.

memoryos = MemoryOS(...) response = memoryos.get_response( query="지난달에 내가 말한 취미 기억해?", relationship_with_user="friend" ) print(response)

내부 처리 흐름 예시

1. 사용자 질문 입력 2. Retriever가 STM/MTM/LPM 병렬 검색 3. 최근 대화 + historical memory + user profile + knowledge를 prompt에 통합 4. LLM이 응답 생성 5. 해당 QA를 다시 STM에 저장 6. STM이 가득 차면 오래된 항목을 MTM으로 이관 7. MTM heat가 임계값을 넘으면 LPM 갱신

구현상 확인할 파일

논문 개념구현 위치설명
전체 오케스트레이션memoryos.py전체 흐름 제어
STMshort_term.py최근 대화 FIFO 저장
MTMmid_term.pysegment/page 구조 관리
LPMlong_term.pyuser/assistant 장기 기억 저장
Updatingupdater.pySTM→MTM, MTM→LPM 전이
Retrievalretriever.py계층별 검색 통합
Generationprompts.py, memoryos.py프롬프트 구성과 응답 생성

6. 적용 시나리오

적합한 사용 사례

6-1. 장기 대화형 개인 비서

  • 사용자의 취향, 일정, 반복 관심사를 장기적으로 유지해야 하는 경우
  • 예: AI 비서, 코칭 에이전트, 멘탈 헬스 대화 시스템

6-2. 개인화 고객 응대

  • 고객별 선호, 과거 문의, 반복 이슈를 기억해야 하는 경우
  • 예: 프리미엄 고객 상담, 금융/보험 컨시어지

6-3. 멀티세션 에이전트

  • 하루가 아니라 수주~수개월에 걸친 세션을 이어가야 하는 경우
  • 예: 교육 튜터, 건강 관리 에이전트, 프로젝트 협업 에이전트

제한사항

6-4. 운영 환경 확장성

현재 구현은 short_term.json, mid_term.json, long_term_user.jsonJSON 파일 중심 저장입니다. 사용자가 많아지면 I/O 병목과 동시성 문제가 발생할 수 있습니다.

항목현재 방식운영 환경 대안
STM 저장JSON 파일Redis
MTM 저장JSON + in-memory FAISSRDB + Vector DB
LPM 저장JSONDocument DB / KV Store
동시성파일 덮어쓰기 위험트랜잭션/락/분산 저장소

6-5. 검색 품질 고도화 필요

현재는 embedding 기반 검색과 heat 승격이 중심입니다. 실서비스에서는 다음 보완이 필요합니다.

  • keyword + vector hybrid search
  • reranker 추가
  • memory importance score 별도 도입

6-6. 비동기화 필요

현재 구조는 저장, 요약, 임베딩, 병합, 승격 판단이 요청 흐름에 걸릴 수 있어 응답 지연을 유발할 수 있습니다. 운영 환경에서는 다음 구조가 적합합니다.

[API Server] └─ 원본 대화 즉시 저장 [Queue] [Background Worker] ├─ MTM 요약 ├─ 임베딩 생성 ├─ Heat 갱신 └─ LPM 승격

6-7. 단일 사용자 가정

제공된 MCP/PyPI와 toy 구조는 전역 USER_ID 중심 설계에 가깝습니다. 실제 비즈니스 환경에서는 멀티테넌시, 권한 분리, 사용자별 메모리 격리 설계가 필요합니다.


7. 결론

MemoryOS는 AI 에이전트의 기억을 단순한 대화 로그가 아니라 시간 축에 따라 계층화된 운영체제형 메모리 시스템으로 다룹니다. 특히 STM→MTM FIFO 전이, segment-page 구조, heat 기반 LPM 승격은 긴 대화에서 맥락 일관성과 개인화 기억을 동시에 확보하려는 시도로 볼 수 있습니다.

실험적으로는 LoCoMo에서 강한 성능을 보였고, “기억의 시간 구조를 어떻게 나눌 것인가”라는 질문에 구체적인 시스템 설계로 답한 점이 인상적입니다. 다만 휴리스틱 의존성, 운영 확장성, 비대화형 task 검증 부족은 향후 보완이 필요한 지점입니다.


8. 참고 자료