본문 바로가기
AI2026년 7월 25일5분 읽기

AI 에이전트 메모리 — 단기·장기 기억을 어떻게 설계하나

YS
김영삼
조회 4
AI 에이전트 메모리 — 단기·장기 기억을 어떻게 설계하나

AI 에이전트의 기억(memory)은 사람의 기억과 비슷하게 두 층으로 나뉜다. 지금 대화 안에서만 유효한 단기 기억, 그리고 세션이 끝나도 남아 다음에 다시 불려 나오는 장기 기억이다. 에이전트가 "어제 내가 뭘 부탁했는지 왜 기억 못 하지?"라는 불만을 사는 건, 대개 이 두 층을 제대로 설계하지 않았기 때문이다.

LLM 자체는 기억이 없다. 매 호출은 백지에서 시작한다. 우리가 "기억한다"고 느끼는 건 전부 바깥에서 만들어 넣어주는 착시다. 대화 내역을 다시 붙여주니 이어지는 것처럼 보이고, 사용자 선호를 저장했다가 꺼내주니 아는 것처럼 보인다. 그래서 에이전트 메모리는 모델의 기능이 아니라 설계의 문제다.

모델은 기억하지 않는다.
우리가 기억하게 만들 뿐이다.

단기 기억은 컨텍스트 창 안에서, 장기 기억은 바깥 저장소에서 온다. 이 둘을 언제 쓰고 언제 지울지가 핵심이다.

2층
단기
장기
요약
긴 대화를
압축 보존
검색
필요할 때만
불러오기
망각
지우는 것도
설계다

단기 기억 — 대화 창 안의 세계

단기 기억은 지금 컨텍스트 창에 들어 있는 대화 내역이다. 짧은 대화라면 그냥 전체를 매번 붙이면 된다. 문제는 대화가 길어질 때다. 토큰은 유한하고, 계속 쌓으면 언젠가 넘친다. 그래서 두 가지 전략을 섞는다. 최근 몇 턴은 원문 그대로 두고, 그보다 오래된 부분은 요약해서 압축한다. "사용자는 서울 거주, 예산 200만원, 노트북 추천 진행 중" 같은 한 줄 요약이 열 턴의 대화를 대신한다.

나는 처음에 전체 대화를 무조건 다 붙였다가 비용 청구서를 보고 정신이 들었다. 긴 세션 하나가 매 턴 수천 토큰을 재전송하고 있었다. 오래된 맥락을 요약으로 갈아 끼우자 비용도 지연도 확 줄었고, 오히려 답이 더 또렷해졌다. 군더더기가 빠지니 모델이 집중한 것이다.

장기 기억 — 세션을 넘어 남는 것

장기 기억은 대화가 끝나도 사라지지 않는 정보다. 사용자 이름, 반복되는 선호, 과거에 내린 결정, 자주 쓰는 프로젝트 설정 같은 것들. 이건 컨텍스트 창이 아니라 바깥 저장소(데이터베이스나 벡터 저장소)에 넣어두고, 필요할 때 검색해서 그 순간의 컨텍스트에 일부만 끌어온다.

핵심은 "전부 다시 붙이지 않는다"는 것이다. 사용자에 대해 500가지를 알고 있어도, 지금 질문과 관련된 서너 개만 꺼내면 된다. 여기서 장기 기억은 자연스럽게 RAG 문제가 된다 — 무엇을 저장하고, 어떻게 색인하고, 언제 어떤 걸 불러올지.

항목단기 기억장기 기억
사는 곳컨텍스트 창외부 저장소
수명세션 동안영구·재사용
불러오는 법항상 붙임검색으로 선별

망각도 설계다

의외로 어려운 건 지우는 일이다. 사용자가 "이제 이직했어"라고 말하면 예전 직장 정보는 갱신되거나 폐기돼야 한다. 그런데 장기 기억을 무작정 쌓기만 하면, 오래되고 틀린 사실이 계속 검색되어 올라와 모델을 오도한다. 그래서 기억에는 시효를 두거나, 갱신 시 이전 값을 덮어쓰거나, 서로 모순되는 항목을 정리하는 규칙이 필요하다. 기억을 늘리는 것만큼 정확히 잊는 것이 중요하다.

어디까지 만들어야 하나

모든 에이전트가 정교한 이중 기억을 필요로 하진 않는다. 단발성 도구라면 기억이 아예 없어도 된다. 반대로 개인 비서형 에이전트라면 장기 기억이 서비스의 정체성 그 자체다. 나는 항상 가장 단순한 형태 — 최근 대화만 붙이기 — 로 시작한다. 그리고 "사용자가 같은 정보를 두 번 말하게 만드는" 순간이 오면, 그때 장기 기억을 붙인다. 필요가 기능을 끌어와야지, 기능이 필요를 만들면 과설계가 된다.

자주 묻는 질문

컨텍스트 창이 크면 장기 기억이 필요 없나요?

줄어들지만 대체하진 못한다. 창이 아무리 커도 세션이 끝나면 그 안의 내용은 사라진다. 내일 다시 왔을 때 어제를 기억하게 하려면 결국 바깥 저장소가 필요하다. 또 매 요청마다 방대한 기록을 통째로 붙이는 건 비용과 지연 면에서 비효율적이라, 관련된 조각만 검색해 넣는 편이 낫다.

대화 요약은 언제 하나요?

보통 대화가 일정 길이를 넘으면, 오래된 앞부분을 잘라 요약으로 대체한다. 최근 몇 턴은 원문으로 두어 세밀함을 지키고, 그 이전은 "무엇이 결정됐는지" 위주로 압축한다. 요약 시점과 남길 원문 분량은 서비스 성격에 따라 조절하는데, 세부 사실이 중요할수록 원문을 더 많이 남긴다.

장기 기억은 어떤 형태로 저장하나요?

정형 데이터(이름·설정처럼 키-값이 명확한 것)는 일반 데이터베이스에, 자유로운 서술형 기억은 임베딩해서 벡터 저장소에 넣는 방식이 흔하다. 검색은 "지금 질문과 의미가 가까운 기억"을 끌어오는 식이다. 다만 무엇을 기억으로 남길지 거르는 단계가 없으면 잡음이 쌓이므로, 저장 전에 선별하는 게 중요하다.

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록