Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
omengrep (og)
Local semantic code search using embeddings and BM25.
What it does
omengrep extracts functions, classes, and methods from source files using tree-sitter, then indexes each block with both embeddings and BM25 keywords. Queries match against both indexes, so searching "error handling" finds errorHandler() and AppError — not just comments containing those words.
)
)
&)
| Query | grep finds | omengrep finds |
|---|---|---|
| "error handling" | Comments mentioning it | errorHandler(), AppError |
| "authentication" | Strings containing "auth" | login(), verify_token() |
| "database" | Config files, comments | Connection, query(), Db |
Use grep/ripgrep for exact strings. Use omengrep when you want implementations, not mentions.
Install
Requires Rust nightly toolchain.
&&
The embedding model (~17MB) downloads automatically on first use.
Usage
# Options
Set OG_AUTO_BUILD=1 to build the index automatically on first search.
How it works
omengrep uses tree-sitter to parse source files into AST blocks (functions, classes, methods), then builds two indexes per block:
- Embedding index — per-token embeddings from a ColBERT-style model (LateOn-Code-edge, 17M params, INT8 ONNX). Stored as MuVERA compressed multi-vectors, searched with MaxSim reranking.
- BM25 index — keyword search with identifier-aware tokenization.
At search time, both indexes run in parallel and results merge by ID, keeping the higher score.
Runs locally on CPU. Search latency is 270-440ms.
Built on omendb.
Supported languages
Code (25 languages): Bash, C, C++, C#, CSS, Elixir, Go, HCL, HTML, Java, JavaScript, JSON, Kotlin, Lua, PHP, Python, Ruby, Rust, Swift, TOML, TypeScript, YAML, Zig
Text: Markdown, plain text (chunked by headers)
License
MIT