어떻게 만들 것인가
아이디어는 잡혔다. 이제 실제로 어떻게 만들지 계획을 잡아보자.
결론부터 말하면, 이 프로젝트는 크게 4개의 Phase로 나눠서 진행할 예정이다. 한 번에 완성된 제품을 만들려 하지 않고, 단계별로 동작하는 결과물을 만들어가는 방식을 선택했다.
전체 구조를 먼저 이해하자
본격적인 계획 전에, 이 서비스가 어떤 구조로 동작하는지 간단히 짚고 넘어간다.
핵심 컴포넌트는 딱 4개다.
FastAPI가 메인 서버 역할을 하고, Ollama가 로컬에서 AI 모델을 실행한다. LanceDB는 노트를 벡터로 저장해서 의미 기반 검색을 가능하게 하고, Obsidian Vault는 실제 마크다운 파일이 저장되는 곳이다.
입력 경로는 두 가지다. 메신저(Slack, WhatsApp 등)로 보내거나, 직접 API를 호출하거나. 어느 쪽이든 FastAPI가 받아서 Ollama로 정리하고 LanceDB에 임베딩한 뒤 Obsidian에 저장하는 흐름은 동일하다.

Phase별 개발 계획
Phase 1
첫 번째 목표는 딱 하나다. "작동하는 것"을 만드는 것.
이 단계에서 만들 것들은 다음과 같다.
- Obsidian 볼트 파일 읽기/쓰기 모듈
- FastAPI 기본 서버
- Ollama 연동 (노트 정리 + 임베딩 생성)
- LanceDB 벡터 저장 및 검색
- 전체를 연결하는 API 엔드포인트
Phase 2
MVP가 동작하면, OpenClaw를 연동해서 평소 쓰는 메신저로 메모를 보낼 수 있게 하고, 매일 밤 자동으로 미처리 노트를 임베딩하는 배치 작업도 이 단계에서 추가한다.
여기서 한 가지 명확히 해둘 점이 있다. 메신저 메시지를 받는 건 인터넷이 필요하지만, 그 이후 AI가 정리하고 저장하는 모든 과정은 완전히 로컬에서만 이뤄진다. 메시지 내용 자체가 외부 AI 서버로 나가지 않는다.
Phase 3
나만 쓰는 도구가 아니라 다른 사람도 설치해서 쓸 수 있는 형태로 만드는 단계로 하겠다.
GitHub에 코드를 올리고, 설치 스크립트와 문서를 작성한다. 누구든 최대한 편하게 다운 받아서 자신의 Obsidian 볼트 경로만 설정하면 바로 쓸 수 있는 것이 목표이다.
Phase 4 — 최적화
이건 해도 되고 안 해도 되는 단계다.
범용 SLM을 노트 정리에 특화되도록 파인튜닝하는 것이 목표인데, 특히 관계 감지 능력을 끌어올리는 게 핵심이다. 단순 키워드 매칭이 아니라 개념 수준에서 두 노트가 연결되는지 판단하는 것. 이게 진짜 "두 번째 뇌"다운 기능이라고 생각한다. 다만 난이도가 높아서 선택 사항으로 분류했다.
기술 스택 선택 이유
모델은 Qwen2.5-8b-instruct를 기본으로 사용한다. 한국어 성능이 괜찮고 Ollama에서 바로 쓸 수 있다.
임베딩은 Qwen3-Embedding 0.6B. 600MB 크기에 MTEB 한국어 벤치마크 1위다.
벡터 DB는 LanceDB. 서버 없이 로컬 파일 기반으로 동작해서 설치가 간단하다.
다음 글부터는 Phase 1을 실제로 만들어가는 과정을 코드와 함께 기록할 예정이다. Task 단위로 잘게 쪼개서, 각 단계마다 동작하는 결과물을 확인하면서 진행할 것이다.
