AI의 기억 시스템 | ColdRain
Post

AI의 기억 시스템

새로 이직한 회사에서 다양한 개발을 진행하고 있다.

그 중 ai 메모리 시스템을 개발을 내가 중점적으로 맡아서 진행중인데, 여러모로 쉽지 않다.

‘쉽지 않다’의 의미가 다양해서 더 문제인 것 같다.

개발적으로도, 개인적인 문제들도, 업무적으로도 모든 게 다 뒤틀린 느낌이랄까.

가끔 인생이 너무 행복하다고 느끼는 순간들이 있었다. 그 이후로는 어김없이 최악의 시기들이 찾아왔다.

그저 고점과 저점이 높아져가는거라고 생각해야겠다. 결국 내 태도, 생각에 달린 문제들이고, 변곡점을 만드는 주체도 나다.

정신줄 잘 잡고 나아가야지, 나아져야지.

어쨌든 각설하고, 개발 방식과 필요성에 대해 다양한 논의가 이루어졌는데

여러 요소들을 종합해본 결과 우리 메모리 구조는 최소 스펙으로만 설계 후 개발하기로 하였다.

개발하다보니 여러 문제들을 마주치게 되었는데, 다른 오픈소스나 ai mcp들은 어떤식으로 문제를 풀어냈는지 궁금해서 찾아보게 되었다.

claude

우리들의 친한 친구 클로드다.

글을 쓰는 이 시점(26.03.02) 클로드는 다른 AI 툴들과 메모리를 마이그레이션하는 기능까지 출시되었다. 링크

클로드의 기억 관리 시스템은 굉장히 직관적인 편이다.

클로드가 알아서 관리하는 자동 메모리 시스템, 개발자가 직접 편집하는 CLAUDE.md 파일 방식이 있는데, 결국 두 방식 모두 자연어 형식으로 파일에 메모하는 느낌이다.

기록의 주체에 따라서 자동 방식, 수동(파일) 방식 이렇게 보면 될 것 같다.

메모리 유형위치목적사용 사례 예시공유 대상
조직 전체 지침• macOS: /Library/Application Support/ClaudeCode/CLAUDE.md
• Linux: /etc/claude-code/CLAUDE.md
• Windows: C:\Program Files\ClaudeCode\CLAUDE.md
IT/DevOps에서 관리하는 조직 전체 지침회사 코딩 표준, 보안 정책, 규정 준수 요구사항조직의 모든 사용자
프로젝트 메모리./CLAUDE.md 또는 ./.claude/CLAUDE.md프로젝트를 위한 팀 공유 지침프로젝트 아키텍처, 코딩 표준, 일반적인 워크플로우소스 제어를 통한 팀 멤버
프로젝트 규칙./.claude/rules/*.md모듈식, 주제별 프로젝트 지침언어별 가이드라인, 테스트 규칙, API 표준소스 제어를 통한 팀 멤버
사용자 메모리~/.claude/CLAUDE.md모든 프로젝트에 대한 개인 기본 설정코드 스타일 기본 설정, 개인 도구 단축키본인만 (모든 프로젝트)
프로젝트 메모리 (로컬)./CLAUDE.local.md개인 프로젝트별 기본 설정샌드박스 URL, 선호하는 테스트 데이터본인만 (현재 프로젝트)
자동 메모리~/.claude/projects/<project>/memory/Claude의 자동 메모와 학습 내용프로젝트 패턴, 디버깅 인사이트, 아키텍처 메모본인만 (프로젝트별)

클로드에서는 이런식으로 메모리를 분류, 관리한다고 한다. 결국 다 마크다운 기반 파일이다.

한 가지 특이한건 CLAUDE.md 파일은 시작 시 전체가 로드되고, 하위 디렉토리의 CLAUDE.md 파일은 Claude가 해당 디렉토리의 파일을 읽을 때 필요에 따라 로드된다.

자동 메모리는 MEMORY.md의 처음 200줄만 로드되고, 더 구체적이고 지엽적으로 기술된 지침이 광범위한 지침보다 우선한다고 한다.

두루뭉술한 지침과 그걸 구체화한 구체적인 지침이 있다면, 보다 이해하기 쉬운 구체적인 지침을 기준으로 프롬프팅을 적용한다는 뜻 같다.

클로드는 메모리를 재귀적으로 읽는것도 흥미로웠다.

기억을 폴더별로 잘 구별해 놓으면 클로드가 최상위 폴더의 CLAUDE.md를 먼저 읽고, 그 이후에 여러 디렉토리별로 지침들을 읽는 방식이라고 한다.

supermemory

슈퍼 메모리는 자세한 구현이 공개가 되어있지 않아서 클로드한테 조사를 시켜봤다.

LongMemEval, LoCoMo, ConvoMem — AI 메모리 분야의 3대 벤치마크에서 모두 1위를 기록했다고 한다.

Supermemory의 핵심은 지식 그래프(Knowledge Graph)라고 한다.

문서를 그냥 저장하는 게 아니라, 내용을 이해하고 개념들 사이의 관계를 연결하는 방식으로, 인간의 뇌가 기억을 저장하는 방식에서 영감을 받았다고 한다.

특이했던 게 망각, 기억의 왜곡, 중간 공백 기억의 추론 등을 구현한 점이다.

어차피 사람도 여러 사실들로 다른 사실을 유추하고, 때론 그게 틀릴 수도 있는데 ai도 그 과정이 자연스럽게 일어날 수 있다고 본 것이다.

기억의 구성은 아래와 같이 이루어진다고 한다.

  1. Extracting — PDF, 이미지, 영상, 웹페이지 등 원본에서 텍스트를 추출한다
  2. Chunking — 의미 단위로 잘게 쪼갠다
  3. Embedding — 각 조각을 벡터로 변환해 의미적 유사성을 계산할 수 있게 한다
  4. Indexing — 다른 메모리들과의 관계를 파악해 그래프로 연결한다

만약 50페이지 PDF를 입력한다면, 수백 개의 연결된 메모리 단위로 변환된다.

각 단위는 단순한 텍스트 조각이 아니라, 전체 지식 베이스 안에서 맥락별로 이어져 있다고 한다. 이중 링크드 리스트 정도로 이해해보자.

Supermemory의 차별점 중 하나는 이중 타임스탬프 방식이다.

문서가 저장된 날짜와, 그 문서가 묘사하는 사건이 실제로 발생한 날짜를 따로 관리한다.

“3년 전 대화”와 “오늘 저장한 3년 전 대화”를 구분할 수 있다는 뜻이다.

이 덕분에 시간적 추론과 정보 충돌 처리에서 강점을 보인다고 하는데, 실제 사건이 발생한 시간(timestamp_evet)과 기록한 시간(created_at)을 나누었다고 보면 될 것 같다.

검색은 벡터 스토어와 그래프 DB를 동시에 활용하는 하이브리드 방식이다. 벡터 검색의 의미적 정확성과 그래프의 관계 이해를 결합해,

단순 키워드 매칭으로는 찾을 수 없는 연관 정보도 불러올 수 있다. 응답 속도는 300ms 이하를 목표로 한다.

Supermemory의 컨셉은 모든 것을 영원히 기억하지 않는 것이라고 한다.

어차피 사람도 조금 지나면 망각하고, 왜곡되고 뭐 그러지 않나.

그래도 이왕 기계 인프라를 쓰는거, 완전히 사람의 사고방식과 똑같을 필요는 없지 않나? 싶긴 하다.

mem0

Mem0는 LLM 애플리케이션의 핵심 문제인 “지속적인 기억”을 해결하려는 프로젝트다.

단순한 벡터 검색을 넘어 구조화된 장기 메모리 레이어를 제공하며, 토큰 비용과 지연 시간을 줄이면서도 개인화된 AI 경험을 가능하게 한다.

AI Agent 시대가 확장되면서, 모델 자체보다 “메모리 인프라”가 중요한 영역이 되고 있다.

Mem0는 이러한 흐름 속에서 AI 애플리케이션의 상태 관리(Stateful AI)를 담당하는 핵심 컴포넌트로 주목받고 있는 프로젝트다

라고 챗gpt가 정리해줬다. 프로젝트 클론 받아서 이리저리 코드를 살펴봤는데, 질문 하나당 LLM 호출이 계속 도는 것 같아서 조금 보다가 말았다.

토큰 사용량 세이브가 너무 머리아픈 것 같다.

1,2원 차이여도 사용자가 늘어나는걸 고려하다보면 참으로 머리가 아프다.

그래도 새로운 경험이라 좋다. 이전 회사에서와는 결이 다른 고민이랄까.

B2B에다가 사내 시스템을 주로 개발하다보니 토큰 사용량 보다는 답변의 정확도에 대한 고민이 주를 이뤘는데, 토큰 사용량을 최대한 줄이면서 답변의 정확도를 어느정도 챙기려다보니 점점 어려운 것 같다.

잘해보자.

참고

This post is licensed under CC BY 4.0 by the author.

© . Some rights reserved.

Using the Jekyll theme Chirpy