🍋 Lemory

기억은 당신 것이어야 하니까요

내 옵시디언·마크다운 노트를 AI의 기억으로.
남의 데이터베이스가 아니라, 내 폴더 안의 파일로요.

1분 만에 시작하기 키 없이, 무료로, 전부 내 컴퓨터에서 돌아가요 실제 나무위키 1,469노트 볼트에서 한국어 질문이 0.1초 만에 답변되는 장면 목업이 아니에요. 나무위키 실제 문서 1,469개 볼트에서 0.1초 만에 답이 나오고, 오타는 API 없이 고쳐져요.
Why

이걸 왜 만들었나요?

요즘 AI 메모리 제품들은 내 지식을 자기들 데이터베이스에 넣고 싶어 해요. 내가 한 말을 요약해서 행(row)으로 저장하죠. 저장할 때 정보가 깎이고, 나중에 원문을 확인할 수도 없고, 그 서비스를 떠나면 기억도 두고 나와야 해요.

저희 생각은 달라요. 내가 이미 가진 마크다운 파일이 더 좋은 데이터베이스예요. 날짜가 있고, 원문이 있고, 깃으로 관리되고, rm 한 번이면 지워져요. Lemory는 그 파일들과 AI 사이에 앉아서 세 가지를 해요.

AI가 기억을 꺼내요

의미 검색 + 한국어에 강한 키워드 검색 + [[위키링크]] 그래프를 합친 하이브리드 검색이에요. 경쟁 제품 전부와 같은 조건에서 측정했고, 지는 항목도 공개해요.

AI가 기억을 남겨요

결정과 사실이 볼트 안의 평범한 .md 노트로 저장돼요. 중복이면 표시하고, 관련 기억은 링크로 이어줘요.

뭐가 오갔는지 다 보여요

모든 질의, AI가 쓴 모든 노트(클릭 한 번으로 되돌리기), 클라이언트별 사용량이 대시보드에 남아요. 전부 내 컴퓨터의 SQLite 파일 하나예요.

그리고 하나 더요. 이 분야 대부분은 한국어를 나중 일로 미뤄요. Lemory는 한글 바이그램 색인, 음절 단위 오타 교정("메플이스토리"로 메이플스토리를 찾아요), 조사·활용을 아는 매칭까지 한국어를 1등 시민으로 다뤄요. 영어 노트에 한국어로 물어도 찾아요.

모든 성능 수치는 커밋된 코드와 공개 데이터로 재현돼요. 지는 항목, 실패한 실험까지 BENCHMARKS.md에 전부 공개해요.
Install

설치: 명령 한 줄이면 돼요

1
설치하기
pipx install "git+https://github.com/jwgo/lemory"

pipx가 없으면 pip install로 해도 돼요. Python 3.10 이상이면 충분해요.

2
시작하기
lemory up ~/Obsidian/MyVault

이 한 줄이 설정 → 색인 → 대시보드까지 전부 해요. 볼트는 .md 파일이 든 폴더면 뭐든 돼요. 옵시디언이 아니어도요.

3
물어보기
lemory ask "요새 내가 하던 그 프로젝트 어디까지 했지?"

끝이에요. 오타를 내도, 반말로 물어도 돼요.

키가 없어도 돼요

Gemini 키가 있으면 클라우드로, 없으면 기본 탑재된 온디바이스 스택(한국어 특화 e5-small-ko-v2 임베딩 + Gemma 4 답변)으로 돌아요. 완전 오프라인 모드에선 볼트 내용이 한 바이트도 밖으로 안 나가요. 망분리 환경에서도 그대로 써요.

모드필요한 것되는 것
온디바이스 (기본)키 없음, RAM 8GB+검색 + 답변, 전부 오프라인
경량 로컬키 없음, RAM 4GB검색만 (라즈베리파이급도 OK)
Gemini 클라우드무료 키 1개 (카드 등록 없음)검색 + 답변, 하루 약 250질문 무료

색인할 때 LLM이 아예 안 돌아요. 노트 1,000개 색인 = LLM 호출 0회, 몇 초면 검색이 돼요.

Use cases

어디에 쓰면 좋나요?

💼 업무·회의

"3분기 킥오프에서 예산 얼마로 잡았지?" "재택 정책, 작년이랑 뭐가 달라졌지?" 회의록이 쌓일수록 강해져요.

📚 공부한 것

"이벤트 루프 뭐였지? 내 노트 기준으로" 인터넷 말고 내가 정리한 내용으로 답해요.

🤖 AI 비서의 장기기억

Claude·Cursor에 MCP로 연결하면, 세션이 끝나도 결정과 사실이 남아요. 다음 세션이 이어서 기억해요.

💬 채팅 기억

ChatGPT/Claude 대화 내보내기를 넣어두면 대화 속 결정들도 검색돼요. "내 여동생 이름 뭐랬지?"가 한 달 뒤에도 나와요.

🎮 게임·취미

"카오스 벨룸 준비물 뭐라고 적어놨더라?" "김치찌개 황금비율" 공략 노트도 레시피도요.

🏠 생활 기록

"오사카 그 라멘집 이름이 뭐였지?" "전세 갱신 거절당하면 뭐부터?" 적어둔 건 뭐든지요.

일반 검색으론 안 되는 것들이 돼요

$ lemory ask "프로젝트 아틀라스 리드가 좋아하는 DB가 뭐더라?"
# 멀티홉: 아틀라스 노트 → [[리드]] 링크 → 그 사람 노트에서 답을 찾아요

$ lemory ask "요새 내가 읽던 책 뭐였지?"      # "지금" 책을 골라요
$ lemory ask "3월에 읽던 책은?"               # 3월을 물으면 그때 기록으로

[[위키링크]]가 곧 지식그래프예요. 그걸 공짜로 읽는 Lemory의 멀티홉 점수(1.000)가, LLM으로 그래프를 만드는 제품들(0.53~0.81)보다 높게 측정됐어요.

How to use

사용법: 매일 이렇게 써요

① 서버를 켜두세요

lemory serve        # http://127.0.0.1:8377

옵시디언 플러그인, Claude/MCP, 웹 대시보드가 전부 여기에 붙어요. 켜둔 동안 노트를 고치면 몇 초 안에 자동으로 다시 색인돼요. lemory ask 한 줄은 서버 없이도 돼요.

대시보드 지식 탭: 노트 상세, 로컬 그래프, 관련 노트

② AI에게 연결하세요

claude mcp add lemory -- lemory mcp --vault ~/Obsidian/MyVault --client claude-desktop
lemory skill install claude-code    # 잘 쓰는 법까지 가르치기
lemory hooks install claude-code    # 세션 끝나면 자동으로 기억 저장

Cursor, Windsurf, VS Code 등 MCP를 지원하면 뭐든 같은 방식이에요. 훅을 걸어두면 Claude Code 세션이 끝날 때마다 기억할 만한 결정이 날짜 붙은 노트 하나로 저장돼요. 부지런할 필요가 없어요.

③ 기억을 남기고, 다듬으세요

lemory remember "VPN 갱신은 매년 3월, 담당 김하늘" --tags 업무
lemory search "tag:회의록 folder:2026 예산"    # 범위를 좁혀서 검색
lemory suggest-links     # 언급만 하고 링크 안 건 것들 제안 (주 1회 추천)
lemory drift             # 깨진 링크·방치된 중복 점검
lemory graph --open      # 볼트 전체를 인터랙티브 그래프로

AI가 쓴 건 전부 대시보드 피드에 "누가 썼는지"와 되돌리기 버튼과 함께 떠요. 아무것도 몰래 지나가지 않아요.

④ 프라이버시는 한 줄이에요

---
lemory: false
---

노트 맨 위에 이 한 줄만 적으면 그 노트는 색인도, 검색도, 어떤 모델로도 전송되지 않아요. 일기장은 일기장으로 남아요.

Under the hood

어떻게 돌아가나요?

내 볼트 (*.md) ──감시──► 파싱: frontmatter · 태그 · [[링크]] · 날짜
                              │
                              ▼
          SQLite 파일 하나: 청크 · BM25 · 링크 그래프 · 임베딩 캐시
                              │
질문 ─► 오타 교정 ─► 벡터 + 키워드 (융합) ─► 제목·최신성 부스트
                              │
                     1홉 그래프 확장   ← 멀티홉 답이 여기서 나와요
                              │
                              ▼
          날짜와 출처가 붙은 컨텍스트 ─► LLM ─► 답변 [n]

검색은 로컬이고 LLM이 없어요(3~13ms). 질문당 임베딩 1회(캐시됨), 답변 생성 1회예요. 청크 2만 개를 넘으면 벡터 인덱스가 자동으로 전환돼서 청크 100만 개에서도 질의당 5.9ms예요.

숫자로 보면

측정Lemory비교
멀티홉 answer-in-context@81.000LightRAG 0.807 · mem0 0.579 · qmd 0.526
검색 지연 (p50)약 3msmem0 212ms · qmd 0.6~59초
KorQuAD recall@1 (키 없이 로컬)0.930BM25 0.900 · 벡터 단독 0.840
LongMemEval 500문항 Recall@50.983API 호출 0회, 로컬 임베더만으로
색인 (노트 1,000개)LLM 0회일부 경쟁 제품은 54노트에 45분

전부 같은 조건에서 직접 측정했고, 재현 스크립트가 저장소에 있어요. 저희가 지는 항목(예: 작은 영어 볼트에선 벡터 단독이 한 문제 차로 이겨요)도 그대로 적어뒀어요.

For developers

개발자라면

import lemory
lemory.configure(vault="~/Obsidian/MyVault")
lemory.index()
print(lemory.ask("가격 정책 뭐라고 결정했더라?").text)

REST GET /search · POST /ask · POST /memoryTS/JS 의존성 0 클라이언트 (clients/js) Python LangChain · LlamaIndex 리트리버 Docker 셀프호스팅 커넥터 SDK lemory connect script.py로 어떤 소스든 볼트 노트로

자세한 건 README 개발자 섹션을 보세요.