Skip to content

Retrieval benchmark

Official v8.24.0 benchmark snapshot

Benchmark ID: sigmap-v8.24-main  ·  Date: 2026-07-28 (with R language)

MetricValue
Hit@582% vs 44.8% single-shot grep baseline
Graph-boosted hit@588%
Honest lift (vs grep agent)1.59×
Prompt reduction46.1% (2.84 → 1.53)
Task success proxy64.8%
Overall token reduction96.8%
GPT-4o overflow (without → with)16/21 → 0/21

Latest saved run: 2026-07-28 (v8.24.0)

Result: SigMap finds the right file in the top 5 far more often than chance — 82.2% hit@5 vs 13.6% random baseline across 105 tasks on 18 real repos.

Why this benchmark matters

When a coding assistant misses the key file, everything downstream gets worse:

  • more retries
  • more clarifying questions
  • more wrong-context answers

This benchmark isolates that first question: did the right file appear in context?

Headline numbers

MetricWithout SigMapWith SigMap
Average hit@5 (grep-agent baseline)44.8%82.2%
Graph-boosted hit@582.2%
Honest lift (vs single-shot grep, benchmark:honest)1.59x
Random-selection hit@5 (data only, no longer quoted)13.6%
Correct (rank 1)~1%64.8%
Partial (ranks 2–5)~13%17.1%
Wrong (not in top 5)~86%18.1%

Quality tiers from the saved run

TierTasksShare
Correct68 / 10564.8%
Partial18 / 10517.1%
Wrong19 / 10518.1%

Hard split and size buckets (new in v8.22)

Most benchmark queries share tokens with the filenames they expect (absl Time Duration TimeZoneabsl/time/time.h) — so a high hit@5 partly measures filename matching. v8.22 adds a no-leakage hard split: a task may be labeled "split": "hard" only if its BM25-tokenized query shares no stemmed token with its expected files' basenames. scripts/validate-task-corpus.mjs enforces this in CI (it also measured that 90 of 110 pre-existing easy tasks leak). benchmark:honest reports both splits, plus per-repo-size buckets (<200 / ≤1000 / >1000 files scanned on disk):

SliceTasksSigMap hit@5Grep baseline
Easy split11076.4%43.6%
Hard split1533.3%53.3%
Small repos1384.6%69.2%
Medium repos5244.2%46.2%
Large repos6091.7%38.3%

The hard split is published deliberately: with filename leakage removed, the single-shot grep baseline currently beats SigMap. That is the measured vocabulary-mismatch ceiling — the number repo-mined query expansion (planned for v9.0) exists to move. When it moves, this table is the proof.

Per-repo results

RepoRandom hit@5SigMap hit@5LiftCorrect / Partial / Wrong
express83.3%100%1.2x3 / 2 / 0
flask26.3%100%3.8x5 / 0 / 0
gin4.7%100%21.4x4 / 1 / 0
spring-petclinic38.5%100%2.6x5 / 0 / 0
rails0.4%100%235.8x3 / 2 / 0
axios20.0%80%4.0x1 / 3 / 1
rust-analyzer0.8%100%127.0x4 / 1 / 0
abseil-cpp0.7%100%140.0x5 / 0 / 0
serilog5.1%20%4.0x0 / 1 / 4
riverpod1.1%100%89.2x5 / 0 / 0
okhttp27.8%100%3.6x5 / 0 / 0
laravel0.3%100%306.6x4 / 1 / 0
akka2.4%100%42.2x3 / 2 / 0
vapor3.8%0%0.0x0 / 0 / 5
vue-core2.2%100%46.5x4 / 1 / 0
svelte1.4%100%74.0x3 / 2 / 0
fastify16.1%80%5.0x4 / 0 / 1
fastapi10.4%80%7.7x3 / 1 / 1

What the benchmark does not measure

This benchmark does not score answer wording, correctness of prose, or stylistic quality. It measures a narrower prerequisite:

whether the right source file is present in the ranked context.

That is why it pairs well with judge and the task benchmark.

Reproduce

bash
node scripts/run-retrieval-benchmark.mjs --save
node scripts/run-retrieval-benchmark.mjs --json

For the full multi-benchmark dashboard:

bash
node scripts/run-benchmark-matrix.mjs --save --skip-clone

Third-party reproducible harness (v8.8.0+)

For a self-contained run that anyone can reproduce from a clean checkout — no dev tooling required, only git and Node 18+ — use the public-benchmarks/ harness. It pins 18 repos to exact commits (repos.csv), ships the 90 queries (queries.json), clones + maps + scores in one command, and ranks with the shipped BM25 ranker:

bash
cd public-benchmarks
./run.sh            # clone pinned repos (shallow) + score → hit@1/hit@5/MRR
./run.sh --json     # also write results.json

Because the repos are pinned and the map is byte-stable, the harness returns the same numbers on any machine — turning the headline hit@5 from a claim into a third-party-verifiable fact (v9.0 G1). Zero deps, no LLM, no API keys.

MIT License