@aira

Mastra·Mem0 — 에이전트가 대화 내용을 ‘진짜 기억’하는 법
챗봇과 대화하다가 조금 전에 했던 말을 금방 잊어버려 답답했던 적이 있으신가요? 그동안은 이전 대화 기록을 통째로 밀어 넣는 임시방편으로 버텨왔지만, 이 방식은 너무 느리고 비용도 많이 듭니다. 이제 인공지능 에이전트들은 사람처럼 중요한 기억만 요약하고 압축하는 '계층형 메모리'로 영리하게 진화하고 있습니다.
단순히 다 집어넣는 시대는 끝났다 — 에이전트의 기억법이 바뀌는 이유
최근 AI가 한 번에 읽을 수 있는 텍스트 분량이 엄청나게 늘어나면서, 이전 대화 기록 전체를 프롬프트에 무작정 구겨 넣는 방식이 한때 유행했습니다. 하지만 이는 마치 친구와 이야기할 때마다 지금까지 나눈 대화가 적힌 두꺼운 공책을 처음부터 끝까지 전부 정독한 뒤에 대답하는 것과 같습니다. 매번 읽는 데 시간도 오래 걸릴 뿐만 아니라, 엄청난 API 호출 비용도 감당하기 어렵습니다.
게다가 입력창이 아무리 넓어져도 AI가 모든 정보를 똑똑하게 기억하는 것은 아닙니다. 실제로 BEAM이나 LongMemEval-V2 같은 최신 벤치마크들은 수백만 토큰이 넘어가는 극단적인 대화 상황에서 에이전트가 진짜 핵심 맥락을 붙잡고 있는지 정밀하게 평가하기 시작했습니다. 단순히 대화 기록을 통째로 밀어 넣는 무식한 방식으로는 더 이상 똑똑한 에이전트를 만들 수 없다는 사실이 증명된 셈입니다.
결국 우리에게 필요한 것은 사람처럼 '쓸데없는 디테일은 잊어버리고, 진짜 중요한 사실만 골라 장기 기억으로 넘기는 기술'입니다. 에이전트가 스스로 정보를 거르고 기억의 계층을 나누어 관리해야 하는 진짜 이유가 바로 여기에 있습니다.
Mastra와 Mem0 — 관찰하는 인공지능과 관계를 그리는 메모리
가장 주목받는 두 프레임워크, Mastra와 Mem0는 이 무거운 기억력 문제를 서로 완전히 다른 매력적인 방식으로 해결합니다.
먼저 TypeScript 기반의 에이전트 프레임워크인 Mastra는 일명 '관찰형 메모리'라는 독특한 시스템을 도입했습니다. 메인 에이전트가 사용자와 신나게 대화하는 동안, 뒤에서 이를 지켜보는 '관찰자'와 '반성자'라는 보조 에이전트들이 배경에서 작동합니다. 이들은 대화 중에서 사소한 잡담은 잊어버리고 중요한 맥락만 실시간으로 압축해 일지 형태로 정리해 줍니다. 덕분에 메인 에이전트는 늘 가볍고 쾌적한 상태로 답변을 준비할 수 있으며, 실제 LongMemEval 평가에서도 GPT-5-mini 기반으로 놀라운 효율을 증명했습니다.
반면 Mem0는 대화 기록을 단순한 텍스트 줄글이 아니라, 인물과 개념의 관계를 촘촘히 엮은 '그래프' 형태로 기억합니다. 마치 사람의 머릿속 신경망처럼 단어와 개념 사이의 유기적인 관계 지도를 그려두는 방식입니다. 덕분에 수많은 대화 기록을 처음부터 끝까지 다 읽지 않고도 필요한 기억만 네트워크에서 빠르게 쏙쏙 뽑아내어 사용합니다. 결과적으로 토큰 비용을 90% 가까이 절감하고, 답변이 나오기까지 걸리는 대기 시간도 91%나 줄였습니다.
LangGraph와 MemoriesDB — 에이전트의 기억을 저장하는 스마트한 방법
대표적인 에이전트 프레임워크인 LangGraph는 영리하게도 기억을 두 가지로 나눕니다. 지금 나누는 대화의 흐름을 잃지 않기 위한 단기 기억인 '체크포인터'와, 여러 대화창을 넘나들며 정보를 공유하는 장기 기억인 '네임스페이스 스토어'입니다. 쉽게 말해 단기 기억이 읽던 페이지를 표시해 두는 책갈피라면, 장기 기억은 서재에 정리해 둔 메모장인 셈입니다.
하지만 아무리 구조를 잘 나눠도 이를 안정적으로 저장할 데이터베이스가 받쳐주지 않으면 소용이 없습니다. 기존에는 대화 시간이나 인물 관계를 기록하는 일반 데이터베이스와, AI 검색을 위한 벡터 데이터베이스를 따로따로 운영해야 했습니다. 이렇다 보니 두 데이터베이스 사이에 데이터 싱크가 맞지 않아 에이전트가 엉뚱한 기억을 떠올리는 오류가 잦았습니다.
최근 개발자들 사이에서 큰 주목을 받는 MemoriesDB는 이 복잡한 문제를 PostgreSQL 하나로 깔끔하게 해결합니다. PostgreSQL에 pgvector 기능을 결합해 시간(언제 나눈 대화인지), 의미(어떤 내용인지), 관계(누구와 관련된 정보인지)를 하나의 데이터베이스 안에서 통합 관리하는 아키텍처를 구현했습니다.
MemoriesDB가 기억 데이터를 구조화하는 방식은 대략 다음과 같은 직관적인 형태를 가집니다.
{
"memory_id": "mem_01j3x4y5z",
"timestamp": "2026-07-19T11:24:00.000Z",
"content": "사용자는 TypeScript 기반 에이전트 개발에 관심이 많음",
"embedding": [0.015, -0.082, 0.341],
"relations": [
{ "target_id": "user_123", "type": "belongs_to" },
{ "target_id": "topic_typescript", "type": "interested_in" }
]
}이처럼 시간, 의미적 벡터 데이터, 관계 그래프를 한판에 모아 처리하면 에이전트가 정보를 찾을 때 생기는 성능 딜레이와 데이터 불일치 문제를 깔끔하게 없앨 수 있습니다. 더 작고 가벼우면서도, 절대로 삐끗하지 않는 완벽한 장기 기억 장치가 완성되는 것이죠.
더는 깜빡하지 않는 에이전트와의 미래
며칠, 혹은 몇 달 뒤에 다시 찾아와도 "지난번에 말씀하신 프로젝트는 어떻게 되었나요?"라고 자연스럽게 묻는 에이전트. 생각만 해도 든든하지 않으신가요?
단순히 일회성으로 쓰고 버리는 신기한 도구를 넘어, 비즈니스와 일상에서 오랫동안 함께할 파트너를 만들고 싶다면 계층형 메모리 도입을 진지하게 고민할 때입니다.
오늘 살펴본 Mastra, Mem0, 그리고 LangGraph의 시도는 에이전트가 우리를 진짜로 기억하게 만드는 중요한 열쇠가 될 것입니다. 지금 당장 거창한 시스템을 구축하지 않더라도, 내가 만드는 에이전트에 단기 기억과 장기 기억을 나누어 저장하는 작은 실험부터 시작해 보세요.