AI 에이전트의 기억력: 실용적인 가이드
요약
본 가이드는 AI 에이전트가 여러 상호작용에 걸쳐 정보를 저장하고 활용할 수 있게 하는 '에이전트 메모리'의 개념을 설명합니다. LLM 자체는 기억할 수 없기 때문에, 외부 메모리 시스템 구축이 필수적입니다. 다양한 메모리 유형과 업데이트 방식, 그리고 LangGraph, Claude, CrewAI 등 실제 구현 방법을 다룹니다.
핵심 포인트
- LLM은 스스로 기억하지 못하므로 외부 메모리 메커니즘이 필요합니다.
- 메모리는 컨텍스트 창(책상)을 보완하는 영구적인 파일 캐비닛 역할을 합니다.
- 기억은 에이전트에게 맥락, 개인화, 패턴 인식, 적응 능력을 제공합니다.
- LangGraph, Claude, CrewAI 등 실제 프레임워크에서 메모리 구현 방식을 배울 수 있습니다.
매일 밤 모든 대화를 잊어버리는 뛰어난 동료를 고용한 것을 상상해 보세요. 매일 아침 프로젝트 내용, 당신의 선호 사항, 그리고 어제 결정했던 것들을 다시 설명해야 합니다. 그들은 능력이 있지만, 당신과 함께 일하는 데 있어 결코 더 나아지지 않습니다.
이것이 바로 기억력이 없는 AI 에이전트입니다. 기반 언어 모델(LLM)은 모든 대화를 백지 상태에서 시작하기 때문에, 에이전트가 '알아야' 하는 모든 것은 어딘가에 저장되어야 하고 그것을 다시 가져와서 전달해야 합니다.
이 가이드에서는 다음 내용을 배울 것입니다:
- 에이전트 메모리란 무엇이며, 왜 더 큰 컨텍스트 창(context window)이 이를 대체할 수 없는지
- 에이전트가 가질 수 있는 다양한 종류의 기억과 각각의 비유 및 다이어그램
- 메모리가 업데이트되는 두 가지 주요 방식과 발생할 수 있는 문제점들
- LangGraph, Claude, CrewAI가 현재 메모리를 구현하는 방법
- 하나의 아키텍처에서 이 조각들이 어떻게 결합되는지
에이전트 메모리란 무엇인가요?
에이전트 메모리는 에이전트가 여러 상호 작용에 걸쳐 정보를 저장하고, 회상하며, 사용할 수 있게 하는 메커니즘입니다. 모델 호출(model call) 전에 시스템은 관련 기억을 검색하여 이를 모델의 컨텍스트 창(한 번에 모델이 볼 수 있는 텍스트)에 배치합니다.
핵심은 대규모 언어 모델(LLM) 자체는 스스로 기억할 수 없다는 것입니다. 메모리는 그것 주변에 추가하는 구성 요소입니다.
컨텍스트 창을 당신의 책상이라고 생각해 보세요. 책상 위의 모든 것은 쉽게 손이 닿지만, 책상은 작고 하루가 끝날 때 비워집니다. 메모리는 파일 캐비닛과 같습니다. 더 크고 영구적이며, 누군가 올바른 폴더를 가져와 책상 위에 놓아주어야만 유용한 것입니다.
에이전트가 메모리를 필요로 하는 이유?
간단한 대조를 생각해 보세요. 기본적인 온도 조절기는 온도를 읽고 반응합니다. 기억력을 가진 스마트 온도 조절기는 사용 패턴을 학습하고 당신이 무엇을 원할지 예측합니다. 둘 다 에이전트이지만, 경험을 통해 개선되는 것은 오직 하나뿐입니다.
기억은 에이전트에게 네 가지 것을 제공합니다:
- 맥락(Context): 대화 전반에 걸쳐 유지되는 정보
- 개인화(Personalization): 세션 간에도 지속되는 특성
- 패턴 인식(Pattern recognition): 과거 사건들을 통해 파악하는 능력
- 적응(Adaptation): 이전에 무엇이 효과적이었는지에 기반한 변화
하지만 실제 비용도 존재합니다. 너무 많은 것을 저장하면 검색 속도가 느려지고 노이즈가 발생합니다. 기억 설계를 어렵게 만드는 부분은 모든 것을 보존하는 것이 아니라, 관련성이 높고 빠르게 가져올 수 있는 정보를 유지하는 것입니다.
기억의 종류
누가 세는지에 따라 에이전트의 기억을 세 가지, 네 가지, 혹은 다섯 가지로 계산할 수 있습니다. 이들은 모두 동일한 분할 지점, 즉 단기(short-term)와 장기(long-term)에서 시작하며, 장기는 다시 의미적(semantic), 일화적(episodic), 절차적(procedural) 기억으로 나뉩니다. 이러한 명칭은 인간 심리학에서 유래했으며, CoALA라는 프레임워크를 통해 에이전트에게 도입되었습니다. 본 가이드에서는 이 공유된 구조를 사용합니다.
단기 기억 (Short-term memory)
단기 기억(작업 기억, working memory라고도 함)은 에이전트가 현재 필요로 하는 것들, 즉 현재 대화 내용, 최근 도구 사용 결과, 그리고 작업의 상태를 담고 있습니다. 용량에 제한적이며 세션이 종료되면 지워집니다.
비유: 한 가지 작업을 할 때 모니터 위에 붙여놓는 포스트잇과 같습니다. 오늘 유용하지만 내일은 버려지는 것이죠.
예시: 에이전트가
의미 기억(Semantic memory)은 사실들—사용자의 선호도, 특정 영역의 규칙, 엔티티가 무엇인지 등—을 저장합니다. 이는 특정 순간에 묶여 있지 않습니다.
비유: 파리가 프랑스의 수도라는 것을 언제 배웠는지 기억하지 못하면서 일반적인 지식을 알고 있는 것과 같습니다.
예시: '이 고객은 이메일 후속 조치를 선호한다'와 같이, 에이전트가 조회할 수 있는 사실로 저장됩니다.
일화 기억(Episodic memory)
일화 기억은 언제, 무엇이 발생했는지와 함께 특정 과거 경험을 기록합니다. 이를 통해 에이전트는 이전에 보았던 유사한 상황으로부터 추론할 수 있습니다.
비유: 일기장입니다. 되돌아보며 비슷한 일이 언제 일어났었는지 찾을 수 있습니다.
예시: 에이전트가 시도했던 내용과 그것이 성공했는지 여부를 포함하는 타임스탬프가 찍힌 과거 작업 로그입니다. 이러한 과거의 에피소드는 종종 퓨샷 예제(few-shot examples, 모델에게 좋은 예시가 무엇인지 보여주기 위해 프롬프트에 배치되는 샘플 질문-답변 쌍)로 사용됩니다.
절차 기억(Procedural memory)
절차 기억은 무언가를 '어떻게' 해야 하는지 아는 것입니다: 기술, 규칙, 루틴입니다. 에이전트는 매번 처음부터 추론할 필요 없이 행동할 수 있습니다.
비유: 자전거 타기. 지침을 떠올리는 것이 아니라 그냥 합니다.
예시: 에이전트가 따르는 명령어 블록 또는 워크플로우 템플릿입니다. 사람들은 이를 약간 다르게 정의합니다. 일부는 모델의 가중치(weights)와 에이전트의 코드가 결합된 것으로 간주하며, 에이전트가 자체 시스템 프롬프트를 자동으로 다시 작성하는 경우는 드물다고 언급합니다. 다른 이들은 업데이트된 시스템 프롬프트나 재사용 가능한 워크플로우 템플릿으로 간주합니다.
메모리 업데이트 방법 (Ways of updating memory)
어떤 종류의 메모리가 있는지 아는 것이 절반입니다. 나머지 절반은 언제, 어떻게 메모리를 기록할지 결정하는 것입니다.
실시간 경로(Hot path) 대 백그라운드(Background)
두 가지 타이밍이 있습니다:
- 실시간 경로에서 (In the hot path): 에이전트가 답변을 하는 도중에 무언가를 저장하기로 결정하며, 보통 메모리 도구(memory tool)를 호출하여 수행합니다. 메모리는 즉시 사용 가능하지만, 저장할 때마다 지연 시간이 추가되고 메모리 로직이 에이전트 자체의 로직과 섞입니다. ChatGPT가 이런 방식으로 작동합니다.
- 백그라운드에서 (In the background): 별도의 프로세스가 대화 중 또는 후에 메모리를 업데이트합니다. 추가적인 지연 시간은 없으며 메모리 로직이 분리되어 유지되지만, 업데이트가 늦게 도착하고 언제 실행할지에 대한 규칙이 필요합니다.
관리 전략 (Management strategies)
일반적으로 다섯 가지의 흔한 전략이 있으며, 이들을 조합할 수 있습니다:
- 슬라이딩 윈도우 (Sliding window): 가장 최근 N개의 메시지만 유지합니다.
- 요약 (Summarization): 오래된 대화 기록을 짧은 요약으로 압축합니다.
- 사실 추출 (Fact extraction): 핵심 사실들을 구조화된 레코드로 뽑아냅니다.
- 검색 증강 회상 (Retrieval-augmented recall): 청크(chunk)를 외부 저장소에 보관하고 유사성(similarity)을 통해 관련 있는 것만 가져옵니다.
- 하이브리드 (Hybrid): 위의 방법들을 혼합하며, 종종 백그라운드 관리와 함께 사용됩니다.
에이전트가 스스로 메모리를 관리하게 하기 (Letting the agent manage its own memory)
연구자들은 또한 에이전트가 자신의 기억을 관리하는 방법을 학습하도록 탐구했습니다. AgeMem이라는 접근 방식에서 에이전트는 장기 메모리를 위한 ADD, UPDATE, DELETE 세 가지 작업과 단기 컨텍스트를 위한 RETRIEVE, SUMMARY, FILTER 세 가지 작업을 도구로 받습니다. 저자들은 강화학습(RL)을 통해 에이전트를 훈련시키고 다섯 가지 벤치마크 전반에 걸쳐 개선된 결과를 보고했습니다. 이는 설치하는 제품이라기보다는 연구이며, 이 분야가 어느 방향으로 나아가고 있는지를 보여줍니다.
무엇이 잘못될 수 있는가
다음 실패 모드들은 테스트할 가치가 있습니다:
- 에이전트가 시작 시 메모리를 조회하는 것을 잊음
- 중복되거나 충돌하는 항목이 저장됨
- 오래된(stale) 메모리가 검색되어 잘못된 답변을 생성함
- 중요한 세부 사항이 전혀 저장되지 않음
일반적인 프레임워크가 메모리를 구현하는 방법
LangGraph
LangGraph는 메모리를 단기 및 장기 영역으로 분리합니다. 단기 메모리는 그래프의 상태이며, 체크포인터(checkpointer)를 통해 스레드(하나의 대화) 내에서 체크포인트로 저장됩니다. 장기 메모리는 Store에 존재하며, 네임스페이스 아래에 정리된 JSON 문서로, 내용과 임베딩 함수가 구성된 경우 의미로 검색 가능합니다. LangGraph는 또한 장기 메모리를 의미적(semantic), 일화적(episodic), 절차적(procedural)으로 구조화하고, 핫 경로(hot path)를 위한 memory-agent와 백그라운드 작업을 위한 memory-service라는 두 가지 템플릿을 제공합니다.
Claude
Anthropic의 메모리 도구는 Claude가 /memories 디렉터리에서 파일을 생성하고, 읽고, 업데이트하고, 삭제할 수 있게 합니다. 중요한 설계 선택은 이 기능이 클라이언트 측에서 실행된다는 것입니다. 즉, Claude가 파일 작업을 요청하면 사용자의 애플리케이션이 이를 수행하므로 데이터가 어디에 저장될지 사용자가 결정합니다. 명령어로는 view, create, str_replace, insert, delete, 그리고 rename이 있습니다. 이 도구가 활성화되면, API는 Claude에게 메모리 디렉터리를 먼저 확인하고 진행 상황을 저장하도록 지침을 추가합니다. 이는 언제든지 컨텍스트가 초기화될 수 있기 때문입니다. 이 기능은 장기간의 작업을 위해 컨텍스트 편집(context editing) 및 압축(compaction)과 결합됩니다. 경로는 모델에서 오기 때문에, 디렉터리 순회 공격(directory traversal)을 방지하기 위해 핸들러에서 이를 검증해야 합니다.
CrewAI
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기




