Dense-Mem 소개
AI 에이전트에게 필요한 것은 나중에 검색할 수 있는 텍스트가 아니라, 나중에도 신뢰할 수 있는 기억입니다. 대부분의 메모리 도구는 대화를 청크로 잘라 저장한 뒤 유사도로 다시 찾아 주지만, 그 사실이 어디서 왔는지, 예전 사실과 충돌하지는 않는지까지는 다루지 않습니다. Dense-Mem은 이 간극을 메우기 위해, 증거와 출처를 보존하고 모순을 감지하며 사실을 조용히 덮어쓰지 않는 자체 호스팅 메모리 서버를 표방합니다.
Dense-Mem은 MCP(Model Context Protocol) 클라이언트에게 내구성 있는 메모리 계층을 제공합니다. 출처 추적(provenance), 타입이 지정된 클레임과 사실, 검증 게이트, 서버 측 임베딩, 회상(recall), 팀 격리, REST/OpenAPI, 토큰으로 보호되는 관리 포털이 한 묶음으로 들어 있습니다. 역할 분담은 분명합니다. 호스트 LLM이 대화와 판단을 맡아 후보를 추출하고 사용자에게 질문하며, Dense-Mem은 내구성 있는 메모리 상태와 게이트, 감사 메타데이터, 회상을 담당해 호스트가 사용자에게 설명할 수 있는 구조화된 결과를 돌려줍니다.
이 프로젝트는 연구 프리프린트 Governed Enterprise AI Memory Beyond RAG: From Vector Retrieval to Permissioned Knowledge Graphs 의 일부로 공개되었습니다. 벡터 검색에 그치지 않고 권한이 부여된 지식 그래프로 기업용 메모리를 다룬다는 문제의식이 구현의 바탕에 있습니다.
Dense-Mem의 메모리 승급 구조
Dense-Mem에서 기억은 한 번에 사실이 되지 않습니다. 메모리는 먼저 출처 조각(source fragment)으로 저장되고, 그다음 타입이 지정된 클레임이 되며, 검증과 승급 게이트를 통과해야 사실로 승격됩니다. 증거가 1급 시민(first-class)으로 다뤄진다는 점이 핵심입니다.
모순 처리 방식도 다릅니다. 비교 가능한 충돌이 발생하면 Dense-Mem은 활성 사실을 조용히 덮어쓰지 않고 clarifications[] 라는 해명 작업으로 돌려줍니다. 무엇을 질문하고 어떻게 판단할지는 호스트 LLM의 몫이고, Dense-Mem은 상태 보존과 게이트 적용, 감사 메타데이터, 회상을 책임집니다. 회상 시에는 사실뿐 아니라 클레임, 조각, 모순, 해명까지 함께 돌려주어 호스트가 맥락을 갖고 설명할 수 있게 합니다.
Dense-Mem과 다른 메모리 방식 비교
저자는 Dense-Mem을 파일 기반 메모리, 벡터 DB, 일반적인 MCP 메모리와 표로 비교합니다.
| 항목 | Dense-Mem | 파일 메모리 | 벡터 DB | 일반 MCP 메모리 |
|---|---|---|---|---|
| 증거 출처 | 클레임·사실 이전에 출처 조각을 저장 | 보통 없거나 비공식적 | 청크는 저장하지만 진실 이력은 아님 | 구현에 따라 다름 |
| 사실 변경 | 검증 게이트와 승급 규칙 | 수동 편집 | 유사도 갱신이 이력을 가릴 수 있음 | 도구마다 다름 |
| 모순 처리 | 비교 가능한 충돌을 해명 작업으로 반환 | 호출자가 직접 인지 | 비슷한 벡터가 모순을 뜻하지는 않음 | 보통 호출자 관리 |
| 회상 | 사실·클레임·조각·모순·해명 | 텍스트 검색 | 벡터 유사도 | 다양 |
| 에이전트 경계 | 호스트 LLM이 판단, Dense-Mem이 저장·집행 | 모호함 | 검색만 담당 | 모호한 경우가 많음 |
| 운영 | 팀·프로필·API 키·감사·REST·OpenAPI·MCP | 최소한 | 데이터베이스 운영 | 다양 |
Dense-Mem 설치와 기술 스택
Dense-Mem은 독립 실행형 HTTP MCP 메모리 서버로, MCP는 메인 HTTP 프로세스의 /mcp 경로에서 제공됩니다. 기본 로컬 전용 compose 예제는 PostgreSQL과 Neo4j Graph Data Science 플러그인을 포함한 neo4j:5.26-community, 그리고 Dense-Mem 서버를 함께 띄웁니다.
curl -fsSLo docker-compose.yml \
https://raw.githubusercontent.com/markhuangai/dense-mem/main/examples/docker-compose.base.yml
curl -fsSLo .env.example \
https://raw.githubusercontent.com/markhuangai/dense-mem/main/examples/.env.example
cp .env.example .env
# POSTGRES_PASSWORD, NEO4J_PASSWORD, CONTROL_PORTAL_TOKEN, AI_API_KEY 입력
docker compose up -d
docker compose exec server /app/provision-team --name "primary-memory"
서버는 시작 시 임베딩 설정(AI_API_URL, AI_API_KEY, AI_API_EMBEDDING_MODEL, AI_API_EMBEDDING_DIMENSIONS)을 요구하며, compose 예제는 OpenAI 기본값(text-embedding-3-small, 1536차원)을 제공하므로 최소 구성에서는 AI_API_KEY 만 채우면 됩니다. 단일 노드에서는 Redis가 선택이지만 다중 인스턴스 배포에서는 필수이고, Prometheus 텔레메트리는 기본적으로 꺼져 있는 선택 오버레이로 제공됩니다. 서버는 Go 1.26으로 작성되었고 PostgreSQL 18과 Neo4j 5.26을 저장 계층으로 사용합니다.
Dense-Mem의 라이선스
Dense-Mem은 Apache 2.0 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.
Dense-Mem 온라인 데모
Dense-Mem 소개 블로그
Dense-Mem 연구 프리프린트
Dense-Mem 프로젝트 GitHub 저장소
더 읽어보기
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. ![]()
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다!
텔레그램(Telegram)이나 Slack/Discord/Teams/Dooray/GoogleChat 등으로도 새 글 알림을 받으실 수 있습니다. ![]()
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ ![]()

