mempalace
무엇인가
MemPalace는 AI 에이전트와 코딩 도구에 장기 기억을 붙이는 계층으로, 검색 증강에 쓰이는 메모리 저장소 계열에 속한다. 대화 기록을 요약·추출·의역하지 않고 원문 텍스트 그대로 보관하고 의미 검색으로 다시 꺼낸다. 모든 처리는 로컬에서 끝나며 외부 API 호출이 발생하지 않는다.
어떻게 동작하나
저장 구조는 평면이 아니다. 사람과 프로젝트가 윙(wings), 주제가 룸(rooms), 원문 콘텐츠가 서랍(drawers)이 된다. 검색은 전체 코퍼스가 아니라 이 계층 안에서 범위를 좁혀 실행된다. 검색 계층은 교체 가능하며 기본 백엔드는 ChromaDB이고 인터페이스는 mempalace/backends/base.py에 정의된다. 임베딩 모델은 로컬에 캐시되며 기본 minilm은 약 80MB, embeddinggemma는 약 300MB다.
무엇과 다른가
요약 기반 메모리 시스템과 달리 원문을 보존하므로 나중에 원래 표현을 그대로 인용할 수 있다. 검색도 평면 코퍼스 전체를 대상으로 돌지 않고 윙·룸 단위로 좁혀진다. 백엔드 계약이 분리돼 있어 ChromaDB를 다른 벡터 저장소로 바꿔도 나머지 코드는 손대지 않는다.
어떻게 쓰나
CLI는 uv tool install mempalace 또는 pipx install mempalace로 격리 환경에 설치한다. Docker 이미지도 제공되며 amd64와 arm64를 지원한다. MCP 클라이언트에는 stdio 서버로 연결하고 마이닝할 디렉터리를 마운트한다. 저장소는 mempalace, mempalace-recall, mempalace-task 세 가지 스킬을 노출하며, 스킬 설치는 CLI나 MCP 서버 설치와 별개다.
전제와 한계
Termux 네이티브 설치는 지원되지 않는다. ChromaDB와 ONNX Runtime이 Android용 휠을 배포하지 않기 때문이며 Debian PRoot 컨테이너로 우회한다. GPU 이미지는 x86_64 전용이다. Docker 이미지는 uid 1000으로 실행되므로 Linux 바인드 마운트는 해당 uid가 읽을 수 있어야 하고, 팰리스·설정·임베딩 모델은 /data 아래에 쌓이므로 볼륨을 붙여야 유지된다. 임베딩이 필요한 첫 호출은 모델 다운로드를 위해 네트워크가 필요하다.
관련 논문 2
유사 도구
- mem0AI 에이전트에 장기 기억 계층을 붙이는 Python 라이브러리이자 CLI다. 단일 패스 추출과 다중 신호 검색으로 대화 맥락을 축적한다.
- claude-mem에이전트 세션의 작업 기록을 AI로 압축해 SQLite에 저장하고, 다음 세션에 관련 컨텍스트를 주입하는 TypeScript 기반 CLI 메모리 계층이다.
- lumen에이전트가 파일 전체를 읽는 대신 로컬 임베딩으로 만든 의미 검색 MCP 도구를 쓰게 해, 토큰 비용과 세션 시간을 줄이는 Claude Code 플러그인이다.
- claude-context코드베이스 전체를 벡터 DB에 인덱싱하고 시맨틱 검색으로 관련 코드만 꺼내 Claude Code 등 코딩 에이전트의 컨텍스트에 넣는 MCP 서버다.
- khoj개인 문서와 웹을 색인해 로컬·온라인 LLM으로 답을 얻는 셀프호스팅 AI 앱이다. 브라우저·Obsidian·Emacs·WhatsApp에서 접근하고 에이전트와 자동화를 만든다.
- txtai벡터 인덱스·그래프·관계형 DB를 합친 임베딩 데이터베이스 위에서 시맨틱 검색과 LLM 워크플로를 돌리는 Python AI 프레임워크다.