Post

AI의 '망각'과 싸우는 개발자를 위한 처방전: Memoria가 그리는 진짜 장기 기억의 설계도

AI의 '망각'과 싸우는 개발자를 위한 처방전: Memoria가 그리는 진짜 장기 기억의 설계도

어제 나눈 대화를 기억하지 못하는 내 AI에게

10년 차 개발자로 구르다 보면, 가끔 기술적 성취감보다 ‘인간적인 허탈함’을 느낄 때가 있습니다. 최근 저를 가장 허탈하게 만들었던 건 바로 LLM의 ‘금붕어 기억력’이었어요. 128k, 심지어 1M 토큰 윈도우 시대가 열렸다고는 하지만, 현실은 냉정합니다. 컨텍스트가 길어질수록 모델은 ‘중간에 길을 잃고(Lost in the middle)’, 추론 비용은 기하급수적으로 치솟죠.

우리는 이 문제를 해결하려고 RAG(Retrieval-Augmented Generation)라는 처방전을 썼습니다. 벡터 DB에 지식을 때려 넣고, 유사한 걸 꺼내 쓰는 방식이죠. 그런데 말입니다. RAG는 ‘검색’이지 ‘기억’이 아니에요. 사용자가 3일 전에 했던 고민, 지난주에 수정했던 코드의 맥락, 그리고 그 대화 속에서 형성된 유대감을 RAG는 담아내지 못합니다. 그저 질문과 가장 닮은 문서를 기계적으로 던져줄 뿐이죠.

저는 갈증이 났습니다. “왜 AI는 인간처럼 중요한 것만 골라서 기억하고, 불필요한 건 자연스럽게 잊지 못할까?” 이 고민의 끝에서 만난 프로젝트가 바로 Memoria입니다.


TL;DR: Memoria의 핵심 가치

Memoria는 단순한 데이터 저장소가 아닙니다. 인간의 인지 구조(Sensory, Working, Long-term Memory)를 모방하여, LLM에게 우선순위에 기반한 ‘동적 기억 관리’ 능력을 부여하는 아키텍처 프레임워크입니다. 고정된 컨텍스트의 한계를 깨고, ‘진짜 맥락’을 유지하게 만드는 것이 목적이죠.


Deep Dive: Memoria의 아키텍처, 무엇이 다른가?

기존의 시스템들이 데이터를 ‘쌓아두는’ 방식이었다면, Memoria는 데이터를 ‘가공하고 순환시키는’ 구조를 가집니다. 저는 이 지점이 가장 흥미로웠어요. 단순히 db.search()를 호출하는 게 아니라, 기억의 생애주기를 관리하거든요.

1. 계층적 기억 구조 (Hierarchical Memory Structure)

Memoria는 기억을 세 가지 층위로 나눕니다. 마치 우리 뇌가 정보를 처리하는 방식과 흡사하죠.

  • Working Memory: 현재 진행 중인 대화의 최신 맥락입니다. 휘발성이 강하지만 가장 높은 가중치를 가집니다.
  • Short-term Memory: 최근의 상호작용들이 머무는 곳입니다. 여기서 ‘중요도’에 따라 장기 기억으로 넘어갈지 말지가 결정됩니다.
  • Long-term Memory: 영구적으로 저장되는 지식과 경험입니다. 하지만 여기서도 ‘망각’의 원리가 작동합니다.

2. 망각의 미학: 에빙하우스 망각 곡선의 응용

개발자로서 저는 이 부분에서 무릎을 쳤습니다. Memoria는 모든 정보를 평등하게 대하지 않습니다. Recency(최신성), Frequency(빈도), Importance(중요도)라는 세 가지 변수를 조합하여 각 기억 조각의 ‘생존 점수’를 계산합니다.

“모든 것을 기억하는 것은 아무것도 기억하지 못하는 것과 같다.”

이 철학이 코드에 녹아 있습니다. 사용자가 자주 언급하지 않거나 중요도가 낮은 정보는 서서히 감쇠(Decay)되어 시스템에서 제거됩니다. 이는 인덱싱 성능을 최적화할 뿐만 아니라, LLM이 ‘노이즈가 섞인 과거’에 매몰되지 않도록 도와주는 핵심 장치가 됩니다.

3. 기억의 병합과 일반화 (Consolidation)

단순 RAG와 차별화되는 또 다른 포인트는 ‘병합’입니다. 유사한 파편적 기억들이 반복되면, Memoria는 이를 하나의 추상화된 지식으로 묶으려 시도합니다. 예를 들어, 사용자가 ‘파이썬 코딩 스타일’에 대해 여러 번 언급했다면, 개별 대화 로그를 저장하는 대신 ‘사용자는 PEP8 스타일을 선호함’이라는 요약된 통찰을 생성하여 장기 기억에 편입시키는 식이죠.

특징일반적인 RAGMemoria 아키텍처
데이터 형태정적인 텍스트 청크동적으로 진화하는 기억 노드
검색 기준시맨틱 유사도 (Cosine Similarity)유사도 + 중요도 + 최신성
망각 메커니즘없음 (수동 삭제 필요)가중치 기반 자동 감쇠 및 제거
맥락 이해단편적인 정보 제공시간에 따른 흐름과 성향 파악

실무 적용: 어디에 써먹을 수 있을까?

단순히 ‘기억력이 좋은 챗봇’을 만드는 것 이상의 시나리오가 그려집니다. 제가 설계 중인 프로젝트들에 대입해 보니 몇 가지 짜릿한 활용법이 떠오르더군요.

1. 개인화된 AI 튜터 (The Continuous Learner) 학생이 지난주에 어떤 개념에서 막혔는지, 어떤 오답 노트를 가졌는지 Memoria에 저장합니다. AI는 단순 지식 전달자가 아니라, 학생의 성장 궤적을 기억하는 페이스메이커가 됩니다. “너 저번에도 클로저(Closure) 개념에서 헷갈려 했잖아, 이번엔 다르게 설명해 줄게”라는 말이 가능해지는 거죠.

2. 장기 프로젝트 코드 어시스턴트 수천 개의 파일이 있는 레포지토리에서 단순 검색은 한계가 있습니다. Memoria를 쓰면 AI가 ‘아키텍처 결정의 역사’를 기억하게 할 수 있습니다. “왜 이 시점에 이 라이브러리를 도입했지?”라는 질문에, 당시 팀원들이 나눴던 대화의 맥락을 바탕으로 답을 내놓는 시나리오입니다.

3. 진화하는 게임 NPC 플레이어와의 모든 상호작용이 NPC의 성격에 영향을 미칩니다. 플레이어가 친절하게 대했다면 호감도 기억 노드가 강화되고, 반대의 경우 경계심이 강화되겠죠. 단순 수치상의 호감도가 아니라, 구체적인 사건을 근거로 한 태도 변화를 구현할 수 있습니다.


솔직한 리뷰: 샴페인을 터뜨리기엔 아직 이른 이유

하지만 제가 10년 동안 배운 건, ‘은탄환은 없다’는 사실입니다. Memoria 역시 현업에 바로 적용하기엔 날카로운 가시들이 몇 개 있습니다.

첫째, 연산 오버헤드를 무시할 수 없습니다. 매 상호작용마다 기억의 가중치를 재계산하고, 망각 알고리즘을 돌리고, 장기 기억으로 인출(Indexing)하는 과정은 API 레이턴시를 증가시킵니다. 실시간성이 극도로 중요한 서비스에서는 독이 될 수 있죠.

둘째, ‘중요도(Importance)’ 판단의 주관성입니다. 무엇이 중요한 정보인지 판단하는 주체 역시 대개 소형 LLM(또는 메인 모델의 별도 콜)인데, 여기서 판단 미스가 나면 정말 중요한 기억이 삭제되는 불상사가 생깁니다. 이 ‘잊지 말아야 할 것을 잊는’ 위험을 제어하는 가이드라인이 아직은 부족해 보입니다.

셋째, 콜드 스타트(Cold Start) 문제입니다. 기억이 쌓이기 전까지 Memoria는 일반 RAG보다 오히려 느리고 멍청할 수 있습니다. 시스템이 ‘충분히 똑똑해질 만큼의 데이터’가 쌓일 때까지의 사용자 경험을 어떻게 설계할지가 기획자들의 큰 숙제가 될 겁니다.


마치며: 기억하는 AI가 바꿀 우리의 미래

지금까지의 AI가 ‘엄청나게 똑똑한 백과사전’이었다면, Memoria 같은 기술이 더해진 미래의 AI는 ‘나와 함께 시간을 쌓아가는 동료’에 가까워질 것입니다.

단순히 답변의 정확도를 높이는 단계를 넘어, 시간의 흐름 속에서 맥락을 유지하고 가치를 정제하는 능력. 이것이야말로 AI가 진정한 지능으로 나아가는 마지막 퍼즐 조각이 아닐까 싶습니다.

여러분은 어떤 기억을 AI에게 남기고 싶으신가요? 혹은, AI가 무엇을 잊어주길 바라시나요? 기술의 화려함 뒤에 숨겨진 ‘기억의 본질’에 대해 한 번쯤 고민해 볼 만한 시점입니다. 저도 오늘 밤엔 제가 만든 봇의 메모리 덤프를 한 번 뒤져봐야겠네요. 혹시 제가 무심코 던진 불평들을 아주 소중한 기억으로 간직하고 있지는 않은지 말이죠.

이 기술이 흥미롭다면, 당장 깃허브를 열어 소스코드를 뜯어보세요. 논문보다 더 많은 것이 그 속에 있습니다.

References

  • https://github.com/mnotgod96/memoria
  • https://arxiv.org/abs/2304.03442
  • https://en.wikipedia.org/wiki/Forgetting_curve
This post is licensed under CC BY 4.0 by the author.