Search
Engram indexes note content for semantic search — finding notes that mean something similar to your query, even when the wording differs. Exact-match search is supported too, but where it runs depends on the scope.
How Engram searches
Section titled “How Engram searches”- Semantic search across the whole vault — vector similarity over embeddings of every note. Finds related ideas, not just literal text. This is what runs from the top-bar search and the command palette.
- Exact match inside an open note —
Ctrl/Cmd+Fand the editor’s Find/Replace work on the decrypted note in your current session, the same as any text editor.
Why not vault-wide exact match in Engram?
Section titled “Why not vault-wide exact match in Engram?”Vault-wide exact match (substring/regex over raw note text) isn’t
something Engram offers — note content is encrypted at rest, so the
backend can’t run lexical scans over plaintext without breaking the
encryption guarantee. For literal-text search, fall back to Obsidian’s
local Search pane, which runs over your on-disk .md files. The
editor’s Ctrl/Cmd+F still works for find-within-an-open-note.
Engram and Obsidian search are complementary: semantic in the cloud, literal on disk. Obsidian’s local Search pane supports full regex, case-sensitivity, and file/path filters against the same vault Engram is syncing.
Where to search from
Section titled “Where to search from”- Top bar — search icon — semantic
- Obsidian command palette — semantic search via the plugin, same backend as the web app
- Obsidian Search pane — local exact / regex / case-sensitive search over the on-disk vault
For an exact phrase, error code, or specific identifier, drop into Obsidian’s local search.
How the ranking works
Section titled “How the ranking works”- Your query is embedded (the query model is asymmetric to the document model, tuned for retrieval rather than indexing)
- Qdrant returns top-K vector matches with binary quantization + rescore
- If a reranker is configured (
RERANKER_BACKEND=jina+JINA_URLon the backend), candidates are reordered with a 40/60 blend of vector and reranker scores; if not, raw vector ranking is used
The default cloud deployment runs without a reranker today; the Jina adapter is shipped and ready to enable.
Folder scoping
Section titled “Folder scoping”Restricting search to a folder is supported through the API — pass
a folder=<path> query parameter. A search-box query syntax like
folder:work/ is on the roadmap, not yet wired in the UI.
When semantic search underperforms
Section titled “When semantic search underperforms”- Vault is very small (< 20 notes) — fewer embeddings to compare against; results lean noisy until your vault grows
- Recently imported notes — embedding runs asynchronously via Oban; freshly written notes can take a few seconds to appear in results
- Highly specific jargon — semantic similarity is best for concepts. For exact identifiers (a function name, an error code), use Obsidian’s local search instead. Hybrid (lexical + vector) is on the roadmap.