티스토리 뷰

반응형

LLM 실전 활용 6: 메모리 설계 — Agent는 무엇을 기억해야 하고, 무엇을 반드시 잊어야 하는가


Agent를 붙이고 나서,
처음엔 다들 이렇게 말한다.

“이제 대화도 이어지고, 꽤 사람 같다.”

그런데 서비스에 올리는 순간
이상한 일이 벌어진다.

  • 예전에 한 말을 계속 끌고 온다
  • 이미 끝난 얘기를 다시 꺼낸다
  • 엉뚱한 맥락을 연결한다
  • 대화가 길어질수록 점점 멍청해진다

이때의 문제는
👉 모델도, 프롬프트도 아니다.

거의 항상 원인은 하나다.

“메모리 설계”

이번 글은
Agent가 왜 기억 때문에 망하는지,
그리고 어떤 기억만 남겨야 하는지
실무 관점에서 정리한 글이다.


1. 가장 위험한 착각: “다 기억하면 더 똑똑해진다”

이건 거의 본능에 가깝다.

“이전 대화를 다 넣어주면
맥락을 잘 이해하겠지?”

❌ 아니다.
대부분의 경우 정반대다.

이유 1) 토큰은 한정돼 있다

  • 대화가 길어질수록
  • 중요한 정보와 쓸모없는 정보가 섞인다

이유 2) LLM은 ‘우선순위 기억’을 못 한다

  • 인간은 중요/비중요를 구분
  • LLM은 그냥 전부 동일한 텍스트

이유 3) 오래된 맥락은 오히려 노이즈

  • 이미 결론 난 이야기
  • 현재 목표와 무관한 정보
    → 추론을 오염시킨다

👉 Agent에게 기억은 자산이 아니라 부채가 되기 쉽다.


2. Agent 메모리는 “대화 기록”이 아니다

이걸 먼저 분리해야 한다.

구분의미

대화 히스토리 사람이 보기 위한 로그
Agent 메모리 다음 행동을 결정하기 위한 상태

❌ 대화 히스토리를 그대로 메모리로 쓰는 순간
Agent는 망가진다.


3. Agent 메모리의 3가지 종류

반응형

실무에서 메모리는 보통 3계층으로 나눈다.


① 단기 메모리 (Short-term Memory)

“지금 이 작업을 끝내기 위해 필요한 정보”

  • 현재 목표
  • 최근 행동 결과
  • 바로 다음 판단에 필요한 상태

특징:

  • 매우 짧다
  • 작업이 끝나면 삭제

예:

- 현재 목표: 휴가 신청 처리
- 이미 확인한 정보: 연차 가능
- 다음 단계: 신청 API 호출

👉 Agent 루프의 핵심 메모리


② 작업 메모리 (Working Memory)

“이번 세션 동안만 유지되는 맥락”

  • 사용자 요구사항 요약
  • 중요한 제약 조건
  • 중간 결론

특징:

  • 요약된 형태
  • 원문 그대로 ❌

예:

- 사용자는 ‘연차 신청’을 원함
- 문서 기준으로 가능함
- 승인 필요

👉 대화 전체를 요약한 상태


③ 장기 메모리 (Long-term Memory)

“다음 세션에서도 의미 있는 정보”

  • 사용자 선호
  • 반복되는 패턴
  • 장기적 설정

특징:

  • 매우 제한적으로 저장
  • 반드시 의미 단위로 저장

예:

- 사용자는 이메일 요약을 선호함
- 보고서는 항상 간결하게 요청함

👉 이건 Vector Memory 영역이다.


4. 절대 하면 안 되는 메모리 설계 3가지

❌ 1) 대화 전체를 그대로 누적

  • 토큰 폭발
  • 맥락 오염
  • 추론 품질 하락

❌ 2) 메모리 삭제 기준 없음

  • 오래된 정보가 계속 개입
  • Agent 판단이 뒤틀림

❌ 3) 요약 없는 저장

  • 원문 그대로 저장
  • 검색해도 쓸 수 없음

5. “요약(Summarization)”은 메모리의 핵심 기술

Agent 메모리의 본질은 이거다.

“기억이 아니라, 정리다.”

좋은 요약의 조건

  • 사실 위주
  • 감정/수사 제거
  • 행동에 영향을 주는 정보만

❌ 나쁜 요약:

사용자는 화가 나 있었고, 여러 가지 이야기를 했다.

✅ 좋은 요약:

- 사용자는 환불을 원함
- 배송 지연이 원인

6. Vector Memory는 언제 써야 할까?

모든 메모리를 벡터로 만들 필요는 없다.

Vector Memory가 필요한 경우

  • 세션을 넘어서는 기억
  • 의미 기반 검색이 필요한 정보
  • 사용자 선호/패턴

Vector Memory가 필요 없는 경우

  • 단기 상태
  • 현재 루프용 정보
  • 계산 중간값

👉 Agent 메모리 ≠ 전부 벡터화


7. 메모리 설계의 현실적인 구조

실무에서 가장 안정적인 구조는 이렇다.

[단기 메모리]
- 현재 상태
- 최근 행동 결과

[작업 메모리]
- 세션 요약 (텍스트)

[장기 메모리]
- 벡터 DB (선별적)

그리고 중요한 원칙 하나.

메모리는 LLM이 아니라
시스템이 관리한다.

LLM에게
“이거 기억해” 맡기면
99% 실패한다.


8. 최소 메모리 관리 예시 (개념 코드)

class Memory:
    def __init__(self):
        self.short = {}
        self.session_summary = ""

    def update_short(self, key, value):
        self.short[key] = value

    def summarize_session(self, text):
        # 실제로는 LLM 요약
        self.session_summary = text

    def clear_short(self):
        self.short = {}

👉 핵심은 구조지, 라이브러리가 아니다.


9. 메모리 때문에 Agent가 망한 실제 패턴

  • 고객 상담 Agent
    → 예전 불만을 계속 끌고 와서 대화 망침
  • 업무 자동화 Agent
    → 이미 끝난 작업을 다시 시도
  • 리서치 Agent
    → 오래된 가설에 집착

이 모든 문제의 공통 원인:

“잊어야 할 것을 잊지 못했다.”


10. Agent 메모리 설계의 핵심 원칙 5가지

1️⃣ 기억은 최소화
2️⃣ 요약만 저장
3️⃣ 세션 단위로 구분
4️⃣ 장기 메모리는 선택적으로
5️⃣ 삭제 조건을 먼저 설계

Agent는 기억력이 좋은 존재가 아니라
기억을 잘 버리는 존재여야 한다.


11. 이 글의 핵심 요약

개념요약

Agent 메모리 상태 관리
대화 로그 메모리 아님
단기 메모리 현재 루프
장기 메모리 선별적
핵심 기술 요약
가장 중요 잊기

📘 다음 글 예고

👉 LLM 실전 활용 7: Agent 실패 패턴 총정리 — 왜 AI는 실무에서 자주 망가지는가

다음 글에서는:

  • 무한 루프
  • 비용 폭발
  • 엉뚱한 Tool 선택
  • 과도한 자율성
  • “데모는 좋은데 운영은 망함” 사례

실제 프로젝트 실패 패턴 기준으로 정리한다.



LLM,AI에이전트,메모리설계,VectorMemory,RAG,Agent실무,AI시스템,LLM아키텍처,생성형AI,AI개발

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함
반응형