v0.19.0 adds semantic search and local model re-ranking for descriptions that contain lang:, file:, and -file: filters. Seek applies the filters to retrieval and sends only the description text to its bundled model.
Changes
- A supported filtered description has at least two plain terms plus positive
lang:orfile:filters, or negative-file:filters. Filters can appear anywhere in the query and are combined with AND. Filename filters accept substrings and regular expressions. Language filters use Zoekt's whole-file language. - Combined lexical and semantic retrieval still needs one clean, unscoped Git worktree, one stable plain file, or one stable plain folder without a nested Git worktree. Other scopes can re-rank filtered lexical candidates when enough candidates exist. Unsupported query trees keep strict BM25 order.
- Seek plans filtered semantic work per shard. It skips empty shards, uses normal USearch for full shards, scores bounded sparse selections directly, and uses the USearch predicate for other partial shards. Native routes remain approximate. Rejected graph keys can guide traversal, but they cannot enter the result set.
- A filtered semantic failure returns to the filtered lexical path and never widens the query. Unfiltered direct recovery runs only within a fixed work budget. A damaged graph invalidates the joined descriptor so a later search can rebuild it.
- Search now reads and hashes row data once, checks graph data only before native use, and sends all query tokens for a shard through one checked C call. On an Apple M5 Pro fixture, batching cut Go allocations by about 79% while latency and recall stayed stable. This result is not a cross-platform promise.
seek 'find request parser lang:go -file:_test\.go$'
seek 'validate cache generation file:^cmd/seek/'Upgrade
No command change is required. Seek stores the canonical file language in each semantic row and stable unit ID. Semantic format v4 makes the first semantic-enabled search rebuild older semantic data once. This can take tens of seconds and several GiB of memory on a large repository. Use --lexical-only to skip this work. Source builds still need Go 1.27 or newer, CGO, and a native C compiler; use make build.
Known issue
On macOS 15.x arm64, Seek's Core ML path can return incorrect FP16 scores without an error and can change semantic ranking. The CPU retry runs only when the Core ML session fails to start, so it does not detect this fault. Use --lexical-only on affected systems. See ONNX Runtime issue #32569.
Packages
Four archives support macOS 15 or newer and glibc Linux on amd64 and arm64. Linux packages were built on Ubuntu 24.04; musl is not supported. The release also includes SHA-256 checksums, a CycloneDX SBOM, build-provenance attestations, and SBOM attestations. Each archive contains the binary, license, and third-party notices. The binary contains its model and native libraries and uses no remote API. Seek needs Universal Ctags to build or update an index and Git 2.36 or later for Git-backed searches.
Install
curl -sSfL \
https://raw.githubusercontent.com/dualeai/seek/v0.19.0/install.sh |
sh -s -- v0.19.0Full changelog: v0.18.0...v0.19.0