Skip to content

Semantic Search

Virgile Thonnier edited this page Jul 17, 2026 · 2 revisions

Semantic Search

SenseTree searches by meaning, not keywords. A query like "insurance renewal letter" finds the right document even if those exact words never appear in it.

How it works

  1. Your query is embedded with the same model used for indexing (so query and documents share a vector space).
  2. SenseTree asks LanceDB for the nearest neighbors by cosine similarity.
  3. Results are verified against disk (paths that no longer exist are dropped), de-duplicated per file (best-scoring chunk wins), and returned with a snippet and score.

Because search re-embeds the query on demand, the local embedding model is loaded lazily and unloaded when idle to avoid wasting CPU/GPU.

Scoping to a folder

Search can be restricted to the current folder (and its descendants). The vector query is filtered by a path prefix, so you can ask "within this project, where did I mention the deadline?" without noise from the rest of the disk.

Path matching is Windows-aware: separators and LIKE metacharacters are escaped so that C:\... prefixes match correctly.

What's searchable

Anything that got "sense" during indexing:

  • text extracted from documents/code,
  • captions from images (if vision is enabled),
  • contextual descriptors (filename + folder + type) for opaque/oversized files,
  • folder-block summaries.

If something isn't showing up, check that it finished indexing (status in the Explorer) and that the embedding endpoint was healthy when it was processed — summaries and vectors are only written after a successful embedding. See Troubleshooting.

The meaning tree

Beyond flat results, SenseTree can present a semantic tree of a folder — a view organized by meaning rather than by raw filename order — to help you see how a directory's contents cluster.

Tips

  • Describe the content, not the filename. "quarterly revenue chart" beats "q3.xlsx".
  • Use scope to cut through large indexes.
  • Re-index after switching embedding models — vectors from different models aren't comparable, so SenseTree forces a full re-index on such a change (see Configuration).

Clone this wiki locally