Mirocell
vault 노트를 RAG로 연결하는 개인 지식 Agent 시스템
2026.04 ~ Python · FastAPI · ChromaDB · Ollama · sentence-transformers
기술 스택
| 분류 | 기술 |
|---|---|
| Language | Python 3.13 |
| Framework | FastAPI, Pydantic |
| 임베딩 | sentence-transformers (multilingual-e5-small, 로컬) |
| 벡터 DB | ChromaDB (로컬) |
| LLM | Ollama (gemma4:e4b, 로컬) |
핵심 기능
Ingest — 노트 벡터화
vault의 마크다운 노트를 읽어서 frontmatter 파싱 → 섹션별 청킹 → 로컬 임베딩 모델로 벡터 변환 → ChromaDB에 저장하는 파이프라인.
Agent — 새 노트 분석
새 노트를 넣으면 기존 벡터DB에서 유사 노트를 검색하고, LLM이 태그 추천 / 요약 생성 / 관련 노트 연결을 제안한다.
Q&A — 질문-답변
자연어 질문을 임베딩해서 벡터 유사도로 관련 청크를 검색하고, 검색된 내용을 컨텍스트로 LLM에 전달해 답변을 생성한다.
구조
mirocell/
├── main.py ← CLI 진입점
├── ingest/ ← 문서 로드, 청킹, 임베딩
│ ├── loader.py
│ ├── chunker.py
│ └── embedder.py
├── agent/ ← 태깅, 요약, 관련 노트 연결
│ ├── connector.py
│ └── analyzer.py
├── search/ ← 벡터 검색, Q&A
│ └── query.py
└── chroma_data/ ← 벡터 DB (로컬 저장)
사용
python main.py ingest # vault 노트 전체 벡터화
python main.py agent new_note.md # 새 노트 태그/요약/관련노트 추천
python main.py ask "RBAC가 뭐야?" # 노트 기반 질문-답변
설계 포인트
- 임베딩과 LLM 모두 로컬 실행. 외부 API 의존 없이 오프라인 동작
- vault 노트의
##헤딩 구조를 활용한 의미 단위 청킹 - 기존 태그 목록을 LLM에 함께 전달해서 태깅 일관성 유지