Replies: 3 comments
|
This fits the direction, and the layer names match how the code already divides up. Thanks for writing it out with the pieces named. Where I think you are right: the markdown vault is the canonical state and every index is derived and disposable. That is already true in practice, and On the 20 seconds, I want to separate two numbers before anyone optimizes. That path half exists. The MCP server already exposes The concrete gap is smaller than the proposal: Two things I am not ready to commit to. A separate long-running retrieval service, because it turns a plain-files project into something with a process to babysit. And a stable retrieval API contract, because the index shape is still moving and I want to break it a few more times before promising it. One question so I size this right: when you say retrieval should feed another agent or application, can the caller you have in mind speak MCP? If yes, the work is to document |
|
Thanks, this clarification helps a lot. I agree that I was probably mixing two different issues: search performance itself and the agentic workflow around the search. If What I had in mind with the “retrieval layer” is more of a logical interface boundary: organization can remain LLM-driven and relatively expensive, while consuming the resulting knowledge should be possible through a deterministic, low-latency path without requiring another reasoning loop. Regarding your question about MCP: for Codex and similar clients, MCP is absolutely sufficient and So I would now see the practical progression as:
Beyond that minimal path, I see two additional avenues that might be worth exploring independently: Automatic re-indexing. Alternative retrieval/index backends. So the broader picture I have in mind is not necessarily a new service, but a clean boundary: Markdown vault → derived/indexed representations → thin retrieval interfaces → consumers with automatic synchronization and alternative index implementations being possible extensions rather than prerequisites. And I still think making one architectural principle explicit could be valuable: the Markdown vault is the canonical knowledge state; indexes are derived representations; retrieval interfaces are consumers of those representations. That distinction seems useful even if the implementation remains much smaller than the “three layers” in my original proposal. |
|
Let me add an final thought. IMHO one important design choice to make is to agree on the scope of the obsidian second brain. |
Uh oh!
There was an error while loading. Please reload this page.
When using
obsidian-find— both with and without semantic search — I noticed that retrieval can feel relatively slow. In my case, a query can take 20+ seconds end-to-end when executed through Codex, because retrieval is embedded in an agentic workflow that involves model reasoning, tool calls, and result interpretation.For occasional searches this is fine. However, if the Second Brain is intended to become a real-time knowledge source — for example as context for another agent, application, or chat interface — retrieval should ideally happen in a few seconds or less.
This made me wonder whether knowledge organization and knowledge retrieval should become explicitly separated layers of the architecture.
1. Organization layer
Responsible for maintaining the canonical Second Brain:
obsidian-ingestobsidian-reconcileobsidian-nightlyThese operations may be relatively expensive and can use a capable LLM. They do not necessarily need to be fast because they happen asynchronously or explicitly in the background.
2. Representation / indexing layer
Transforms the organized Markdown vault into representations optimized for retrieval.
For example:
This layer would be updated incrementally whenever notes change. The existing semantic index already seems to move in this direction.
The important distinction would be that the Markdown vault remains the canonical knowledge state, while indexes and embeddings are derived, disposable representations optimized for access.
3. Retrieval layer
Provides a fast, read-only interface to query the Second Brain.
Ideally, this layer would:
The caller could then decide what to do with the retrieved context. Codex, Claude, a small local model, or another application could all query the same Second Brain without requiring the retrieval implementation itself to depend on them.
Conceptually:
Why I think this could be useful
There already seem to be several building blocks for this in the repository — particularly
vault_ops.search, the MCP server, the semantic index, andobsidian-reindex.So perhaps the main question is not whether these components exist, but whether it would make sense to make this separation an explicit architectural principle and provide a dedicated low-latency retrieval interface that bypasses the normal
obsidian-findagent workflow.What do you think? Would such a separation fit the direction of the project?
All reactions