Documentation
Semantic search
Search by meaning, not just keywords, local embeddings, on-device, nothing sent anywhere.
Gisti understands what you meant, not just what you typed. Every note, clipboard item, chat, and screenshot is embedded on-device into a vector that captures its meaning, so searching for “deploy checklist” can surface a note titled “release steps” that never uses the word “deploy”.
How it works
- Local model: embeddings are computed with Qwen3-Embedding (a compact, 4-bit quantized model), run through Apple’s MLX framework directly on your Mac’s GPU – not a cloud embeddings API. The ~350 MB model weights download once from Hugging Face on first use; after that, nothing about your content ever leaves the machine.
- Everything gets indexed: note title + body, clipboard text, full chat transcripts, and (for screenshots and copied images) their recognized OCR text. A screenshot becomes searchable by what it says.
- Hybrid ranking: exact matches, typo-tolerant fuzzy matches, and semantic matches are fused into one ranked list (Reciprocal Rank Fusion), so a literal hit and a “same idea, different words” hit can both surface – ranked by actual relevance, not just recency.
- Similarity math runs locally via Apple’s Accelerate framework – fast enough to re-rank your whole library as you type.
Where you’ll see it
- Search bar: the icon on the left of the input field is also the semantic-search toggle. Click it, or press ⇧ ⌘ S (in Stream or Topics), to switch modes – the icon itself switches from a magnifying glass (plain text search) to a brain icon (semantic search on), with a small progress ring around it while the model loads or your library is indexing.
- Similar items: open any note, clip, chat, or screenshot, and a “Similar” panel suggests other saved items that are conceptually close, reusing the item’s already-computed vector, so it appears instantly.
- Topics (⌘ 2): your whole Stream, automatically clustered into meaning-based groups instead of folders – see Topics.
A pipeline that heals itself
Every stored vector is stamped with the embedding model that produced it and an internal pipeline version. If you switch models, or a future Gisti update improves how vectors are computed, old vectors are detected as stale automatically and the affected items are quietly re-embedded in the background – search quality keeps improving across updates without a manual re-index.
Turning it on
Semantic search and Topics are optional, off until you enable Settings → Semantic Search. Until then, the search-bar icon is dimmed and does nothing – there’s nothing to toggle until the setting is on. Turning it off again immediately stops indexing. Thresholds, result counts, and the embedding model itself are tunable in advanced.yaml.