Building an Obsidian RAG with DuckDB and MotherDuck
Summary
Simon Späti built a personal knowledge assistant using RAG on his Obsidian vault, with DuckDB as the vector database locally and MotherDuck for a serverless web app via WASM. The system uses BGE-M3 embeddings to enable semantic search across nearly 9,000 markdown notes, leveraging Obsidian's backlink graph to boost results and surface hidden connections between notes. He emphasizes the local-first approach to keep sensitive notes private. The article doubles as a reflection on AI agents in data engineering, arguing that 'plan mode' in tools like Claude Code is the real productivity breakthrough — not smarter models. He cautions that vibe coding and AI agents still require a human architect to avoid generating unmaintainable code that solves the wrong problem.
Key Insight
AI agents accelerate building but the real productivity unlock is plan mode — structured human-in-the-loop planning before autonomous execution — not smarter models.
Spicy Quotes (click to share)
- 3
I was surprised how well DuckDB handles this without a dedicated vector database, one file for relational data and vectors together.
- 4
The hidden connections this tool surfaces are valuable only because they're my connections, my thinking, not just crawled information on the internet.
- 6
Let them run without direction, and you'll get a thousand lines solving the wrong problem.
- 4
I get the perception of being super productive, but after a couple of hours, or sometimes days, we actually didn't achieve what we needed.
- 5
The character and soul of the person gets stripped away. The quirky things someone does, which make them who they are, that takes away from the fun of writing.
- 5
Always keep it simple, because it's easy to make it complex. The true beauty lies in making it simple, which is something agents are not good at.
- 4
Human in the seat and config-driven development is what it comes down to with AI agents.
- 5
The hard part is coming up with the spec, talking to business, etc. The coding part is the small part.
Tone
practical, reflective, opinionated
