obsidian-rag
by asiansumer
README.md
# Obsidian RAG — Semantic Note Search
Local semantic search for your Obsidian vault, powered by [BAAI/bge-m3](https://huggingface.co/BAAI/bge-m3) embeddings and ChromaDB.
## Features
- **Semantic search** — find notes by meaning, not just keywords
- **Markdown-aware chunking** — splits by heading hierarchy for better context
- **Apple Silicon acceleration** — MPS support for M-series Macs
- **Multiple interfaces** — CLI, REST API, and MCP server (for Claude/Cursor)
- **Multilingual** — full Chinese-English support via bge-m3
## Quick Start
```bash
# Install
pip install -e .
# Index your vault
export OBSIDIAN_VAULT_PATH="/path/to/your/vault"
python -m obsidian_rag index "$OBSIDIAN_VAULT_PATH" --full
# Search
python -m obsidian_rag search "your question"
# Start API server (for web UI or integrations)
python -m obsidian_rag api
```
## Architecture
```
Obsidian vault (.md files)
→ chunker.py: split by Markdown headings
→ embeddings.py: BAAI/bge-m3 (MPS accelerated)
→ ChromaDB: cosine similarity vector store
→ Interfaces:
├── CLI: python -m obsidian_rag search "query"
├── REST API: FastAPI on :8787
└── MCP: Claude Code / Cursor integration
```
## Tech Stack
| Component | Choice |
|-----------|--------|
| Embedding model | BAAI/bge-m3 (1024d, multilingual) |
| Vector DB | ChromaDB (local, cosine space) |
| API | FastAPI + Uvicorn |
| AI integration | MCP (Model Context Protocol) |
## MCP Configuration
For Claude Code (`.mcp.json`):
```json
{
"mcpServers": {
"obsidian-rag": {
"command": "python",
"args": ["-m", "obsidian_rag.server"],
"env": {
"OBSIDIAN_VAULT_PATH": "/path/to/your/vault"
}
}
}
}
```
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessSyncing