Skip to main content

Hybrid file search — semantic + keyword matching

This project has been archived.

The maintainers of this project have marked this project as archived. No new releases are expected.

Project description

hhg (hybrid grep)

Hybrid file search — semantic + keyword matching

pip install hhg
hhg build ./src
hhg "authentication flow" ./src

What it does

Search code and text using natural language. Combines semantic understanding with keyword matching (BM25) for accurate results:

$ hhg build ./src                    # Build index first
Found 40 files (0.0s) Indexed 646 blocks from 40 files (34.2s)

$ hhg "error handling" ./src         # Then search
api_handlers.ts:127 function errorHandler
  function errorHandler(err: Error, req: Request, res: Response, next: NextFunc...

errors.rs:7 class AppError
  pub enum AppError {
      Database(DatabaseError),

2 results (0.52s)

Why hhg over grep?

grep finds exact text. hhg understands what you're looking for.

Query grep finds hhg finds
"error handling" Comments mentioning it errorHandler(), AppError
"authentication" Strings containing "auth" login(), verify_token()
"database" Config files, comments Connection, query(), Db

Hybrid search combines semantic understanding (finds related concepts) with BM25 keyword matching (finds exact terms). Best of both worlds.

Use grep/ripgrep for exact strings (TODO, FIXME, import statements). Use hhg when you want implementations, not mentions.

Install

Requires Python 3.11-3.13 (onnxruntime lacks 3.14 support).

pip install hhg
# or
uv tool install hhg
# or
pipx install hhg

The embedding model (jina-code-int8) downloads on first use (~154MB).

Usage

hhg build [path]                # Build/update index (required first)
hhg "query" [path]              # Semantic search
hhg status [path]               # Check index status
hhg list [path]                 # List all indexes under path
hhg clean [path]                # Delete index
hhg clean [path] -r             # Delete index and all sub-indexes

# Options
hhg -n 5 "error handling" .     # Limit results
hhg --json "auth" .             # JSON output for scripts/agents
hhg -l "config" .               # List matching files only
hhg -t py,js "api" .            # Filter by file type
hhg --exclude "tests/*" "fn" .  # Exclude patterns
hhg --exclude "*.md" "api" .   # Code only (exclude docs)

# Model
hhg model                       # Check if model is installed
hhg model install               # Download model (auto-downloads on first use)

Note: Options go before positional args, or use -- separator:

hhg --exclude "*.md" "api" .   # Options first
hhg "api" . -- --exclude "*.md" # Or use -- separator

Output

Default:

src/auth.py:42 function login
  def login(user, password):
      """Authenticate user and create session."""
      ...

JSON (--json):

[
  {
    "file": "src/auth.py",
    "type": "function",
    "name": "login",
    "line": 42,
    "end_line": 58,
    "content": "def login(user, password): ...",
    "score": 0.87
  }
]

Compact JSON (--json --compact): Same fields without content.

How it Works

Query → Embed → Hybrid search (semantic + BM25) → Results
                        ↓
             Requires 'hhg build' first (.hhg/)
             Auto-updates stale files on search

Supported Files

Code (22 languages): Bash, C, C++, C#, Elixir, Go, Java, JavaScript, JSON, Kotlin, Lua, Mojo, PHP, Python, Ruby, Rust, Svelte, Swift, TOML, TypeScript, YAML, Zig

Text: Markdown, plain text, RST — smart chunking with header context for docs, blog posts, research papers

Development

git clone https://github.com/nijaru/hygrep && cd hygrep
pixi install && pixi run build-ext && pixi run test

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

hhg-0.0.19-cp313-cp313-manylinux_2_17_x86_64.whl (103.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

hhg-0.0.19-cp313-cp313-macosx_11_0_arm64.whl (93.6 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

hhg-0.0.19-cp312-cp312-manylinux_2_17_x86_64.whl (103.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

hhg-0.0.19-cp312-cp312-macosx_11_0_arm64.whl (93.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

hhg-0.0.19-cp311-cp311-manylinux_2_17_x86_64.whl (103.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

hhg-0.0.19-cp311-cp311-macosx_11_0_arm64.whl (93.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file hhg-0.0.19-cp313-cp313-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for hhg-0.0.19-cp313-cp313-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 215deced5b1ddbb1b4b8bc8d4d02ff7a7cc8a887be4de830f5598c979a629cf1
MD5 1689c4e055b7e6c5a41dce5ace501059
BLAKE2b-256 bc84be96ebc2cb63cbd38efac193e601bd07b8220ea07738a652e9e95425c16e

See more details on using hashes here.

Provenance

The following attestation bundles were made for hhg-0.0.19-cp313-cp313-manylinux_2_17_x86_64.whl:

Publisher: release.yml on nijaru/hygrep

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hhg-0.0.19-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for hhg-0.0.19-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 844a49d09c108dc464181958a9d3870a44e74bac83d4f391213c34145957f344
MD5 ce46e10e4cee697995159367b7dbbc92
BLAKE2b-256 99ae47c5ca184f50785688c3aee733464eaee483c56f91302d3afbc0d9c66dd3

See more details on using hashes here.

Provenance

The following attestation bundles were made for hhg-0.0.19-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on nijaru/hygrep

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hhg-0.0.19-cp312-cp312-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for hhg-0.0.19-cp312-cp312-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 5b7677f9d4d1041b18fbfc4f2c3fcb94cbaf4cbbe8d99ab8a1a9b7b166f4b127
MD5 b1c88fb414a586805d24250abe5fd0c5
BLAKE2b-256 641cdee84e916cbb2487bfac9a79f4b65c5729a5decd95ff2cc71dd406dbfd4c

See more details on using hashes here.

Provenance

The following attestation bundles were made for hhg-0.0.19-cp312-cp312-manylinux_2_17_x86_64.whl:

Publisher: release.yml on nijaru/hygrep

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hhg-0.0.19-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for hhg-0.0.19-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 579a13018daa18396042737f0d82151d7bb00bfffe4048aa920f24ac871e48b0
MD5 f448386407142fb73f40026e66689a7b
BLAKE2b-256 fdcfb4793c7d733d3a2ebe49441d088d7e4d9e94a49ed9846937168c2cda2a66

See more details on using hashes here.

Provenance

The following attestation bundles were made for hhg-0.0.19-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on nijaru/hygrep

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hhg-0.0.19-cp311-cp311-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for hhg-0.0.19-cp311-cp311-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 3fbcc3b7f0b61c4c1625f2dd9b2ff2747bb2f0785e1e664c4185e96d37abad96
MD5 3761aaa8f52e86287c1acacd0ab7b20a
BLAKE2b-256 01c2c5808674c15577ea42eefc528ce56a16f75b4713573aba035c3fdff97396

See more details on using hashes here.

Provenance

The following attestation bundles were made for hhg-0.0.19-cp311-cp311-manylinux_2_17_x86_64.whl:

Publisher: release.yml on nijaru/hygrep

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hhg-0.0.19-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for hhg-0.0.19-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b26847975c4cbeacd579e7d4d36963cc01444c725da71f3f07d064bd6201d8ff
MD5 c6519c36a294bd7351ae755d293c8218
BLAKE2b-256 79e2c7094e1c2f7ac40346a8b4668d91c1f7c90869ebce6ed7b1144c8797823c

See more details on using hashes here.

Provenance

The following attestation bundles were made for hhg-0.0.19-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on nijaru/hygrep

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page