Semantic search for Obsidian vaults using AWS Bedrock embeddings and LanceDB. Search via Claude MCP, sync via minimal Obsidian plugin.
Obsidian Vault
│
▼
Sync Plugin ──► Python Backend ──► AWS Bedrock (embeddings)
│
▼
LanceDB (local vector store)
│
▼
MCP Server ──► Claude
Search: Ask Claude to find notes by meaning, not just keywords.
Sync: Trigger indexing from Obsidian via command palette.
| Component | Description |
|---|---|
backend/ |
Python: embeddings, indexing, MCP server, HTTP API |
plugin/ |
Obsidian plugin: sync triggers, status bar |
- Python 3.11+
- AWS account with Bedrock access (Titan Embeddings V2)
- Obsidian 1.0+
cd backend
pip install -e .Create ~/.config/obsidian-semantic-search/config.toml:
[vault]
path = "/path/to/your/vault"
[bedrock]
region = "eu-west-1"obsidian-semantic-search reindex --full# HTTP API for Obsidian plugin
uvicorn obsidian_semantic_search.api:app --port 8765Add to claude_desktop_config.json:
{
"mcpServers": {
"obsidian-semantic": {
"command": "python",
"args": ["-m", "obsidian_semantic_search.server"]
}
}
}Copy plugin/ contents to .obsidian/plugins/semantic-sync/ and enable in settings.
| Tool | Description |
|---|---|
semantic_search |
Find notes by meaning |
similar_notes |
Find notes similar to a given note |
reindex |
Trigger full or incremental reindex |
Bedrock Titan Embeddings: ~$0.0001 per 1K tokens.
A 500-note vault costs roughly $0.05 to index initially, under €1/year ongoing.
MIT