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.17-cp313-cp313-manylinux_2_17_x86_64.whl (103.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

hhg-0.0.17-cp313-cp313-macosx_11_0_arm64.whl (93.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

hhg-0.0.17-cp312-cp312-manylinux_2_17_x86_64.whl (103.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

hhg-0.0.17-cp312-cp312-macosx_11_0_arm64.whl (93.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

hhg-0.0.17-cp311-cp311-manylinux_2_17_x86_64.whl (103.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

hhg-0.0.17-cp311-cp311-macosx_11_0_arm64.whl (93.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

File hashes

Hashes for hhg-0.0.17-cp313-cp313-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 db66515fbcb2aa077f8213c48e9c6a1a2d22149ec8d4ebaa15a9f89018617e9c
MD5 9c493523044e85c3f02237f2567e4db4
BLAKE2b-256 31f29120f083f2a142e91ebb3ce8b8ba2436cec3e732038e6f7b6e054fdbfa7d

See more details on using hashes here.

Provenance

The following attestation bundles were made for hhg-0.0.17-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.17-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for hhg-0.0.17-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1d4dbd3c44b09f41a21490adb390f12b97cbd798e76d35f3b0eb21d80ef53a5c
MD5 727acd871f0f6e728db87cbfa83dbfc4
BLAKE2b-256 dd22f47210c06adb78349cd7e0fd905d7216c1f11fa09543eccc57d280dcf905

See more details on using hashes here.

Provenance

The following attestation bundles were made for hhg-0.0.17-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.17-cp312-cp312-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for hhg-0.0.17-cp312-cp312-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 de5386d2a2664497ba42994854a96576cf74f00736f73861bf7bfdb6657f05ce
MD5 c5f84c61d2b232d8481a977e61c4a4f2
BLAKE2b-256 bc9a013fe36cad89d785d5f0ebf34c75617ecbd41de50ed566a837d6583dc8ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for hhg-0.0.17-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.17-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for hhg-0.0.17-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d6d58c202f12cad6dfa9573f99c26f6bf6c68b0f7638a5575391fae5b8b9a881
MD5 995cdf653fc88bebe1020c9a56931d07
BLAKE2b-256 0d045ba06e2ba27c65a68095fa0297ced61ee228b01ba21dcd0579b2d1068884

See more details on using hashes here.

Provenance

The following attestation bundles were made for hhg-0.0.17-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.17-cp311-cp311-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for hhg-0.0.17-cp311-cp311-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 f2b3317c2964cf418e33bdcf30b9f24efcaf58bd7bae5ac3caef99b910efe00c
MD5 55c0f1a491800d46a658e1c47bfafa81
BLAKE2b-256 4b032e61396a453880b208530a8b192a7b19d60690e61e189bf6a751d4b6ca10

See more details on using hashes here.

Provenance

The following attestation bundles were made for hhg-0.0.17-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.17-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for hhg-0.0.17-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 abc2ca1928efd037452c20943344ba3d0e10e38fedb4c3b5900d9f9d12be345c
MD5 fee34fdb6668ccbe94ef9b09995353cc
BLAKE2b-256 986ba14d5e817647cc1796c784cd443c03c184391915b89f253a16213d026d66

See more details on using hashes here.

Provenance

The following attestation bundles were made for hhg-0.0.17-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