private document search · v1.0.4

searchthing

Really good local search for your own files. Drop in your PDFs, notes, and docs, then find what you mean, not just what you typed. Search browser crash, find tab termination. Misspell a word, still land the right passage. Everything stays on your computer. Nothing uploads. Nothing leaves the browser.

Ready|3 docs · 10 chunks|MiniLM-L6-v2 · 384d|hybrid

3 results for hybrid

// the real app, with sample files loaded. try a query, flip modes.

At a glance

v1.0.4
privacyOFFLINEno upload, no account, no tracking
searchHYBRIDkeyword + semantic ranking, fused per query
runtimeIN-BROWSERwasm + web worker, no servers
indexPERSISTENTsaved locally, survives a refresh
formatsPDF · MD · TXTsplit into searchable passages

Features

03

01Ranking

Know exactly why a result showed up.

Most apps hand you a list and hope you trust it. SearchThing shows its work. Every match displays its RRF score, vector similarity, and BM25 position, with matched terms highlighted inline. You can tell at a glance whether the words matched, the meaning matched, or both.

3 results for hybridRRF fused

02Storage

Your files never leave your computer.

Drop in PDFs, markdown, or plain text. Parsing and indexing happen in the browser. No upload, no cloud copy, no account. The sidebar lists each file with its size and indexed time. Refresh the tab, the index is still there.

03Modes

Three ways to search the same files.

Vector ranks by meaning. Search "browser crash", find "tab termination". Misspell "recvoery", still find "recovery". Hybrid blends that with BM25 keyword precision, and it's the default. Text is pure BM25, model-free, ready before the embedder loads. Switch live. Nothing re-indexes.

mode hybrid

BM25 + vector, fused via RRF

Indexing pipeline

04
./pipeline
├──parsepdf · markdown · plaintext
├──chunkbounded, searchable units
├──storeindexeddb · opfs persistence
├──embedworker thread → verso vectors
└──rank bm25 ⊕ cosine, fused at query

Q & A

05
01
Where do my files go?
Nowhere. Files are read into IndexedDB and embedded by a web worker, all in the browser. There's no upload step in the codebase. Open the network tab while you use it and watch.
02
What if I mistype, or don't remember the exact wording?
Vector mode ranks by cosine similarity over 384-dim embeddings, not exact text. "Browser crash" finds "tab termination". "Recvoery" still lands near "recovery". The right passage ranks regardless.
03
Is there any wait before I can start searching?
Almost none. BM25 results return from the first keystroke. Vector ranks merge in once the MiniLM embedder loads in the background, so the results sharpen as the model warms.
04
Does it survive a refresh?
Yes. Chunks live in IndexedDB, vectors in OPFS via Verso. Add a new file later and only that file gets embedded. Everything else is already there.

ready in your browser

no install. no signup. no account. just open it.

launch searchthing