RegRadar / data /writeup0.md
nihar-damera's picture
Golden set: a random 30 reviewed by Nihar Damera
69eb109 verified
|
Raw History Blame Contribute Delete
5.12 kB

Retrieval ablation (golden set v1)

Golden set v1 (eval/golden/, drafted by Claude Code; a random sample of 30 reviewed by Nihar Damera (28 approved; 2 flagged, both resolved without change)). Answerable questions only: dev n = 50, test n = 70. 95% percentile-bootstrap intervals (10,000 resamples). A retrieved chunk counts when it overlaps a gold span; hit@10 = every part of the answer touched in the top 10 (recall@10 at question level); span recall@10 = share of the gold text the top 10 cover. Raw results: retrieval_dev.json, retrieval_test.json; paired differences: paired_differences.txt (computed from the per-question scores in those files).

Test (headline)

Configuration hit@10 span recall@10 MRR nDCG@10 words@10
section / dense (granite) 87.1 [78.6, 94.3] 89.3 [82.1, 95.7] 60.6 [51.3, 69.7] 67.2 [59.3, 74.9] 1851
section / dense (bge) 81.4 [71.4, 90.0] 85.0 [77.1, 92.1] 55.7 [47.3, 64.4] 63.2 [55.2, 71.2] 1933
section / BM25 84.3 [75.7, 92.9] 87.9 [80.7, 94.3] 64.0 [54.6, 73.1] 69.6 [61.3, 77.7] 2101
section / hybrid 92.9 [85.7, 98.6] 94.3 [88.6, 98.6] 68.3 [60.1, 75.9] 74.6 [67.7, 81.2] 1954
section / hybrid + rerank top 20 91.4 [84.3, 97.1] 95.0 [90.7, 98.6] 68.9 [60.7, 76.8] 74.9 [68.4, 81.2] 1961
fixed / hybrid 90.0 [82.9, 95.7] 91.3 [84.3, 97.0] 64.9 [55.8, 73.9] 71.3 [63.5, 78.7] 2117
recursive / hybrid 88.6 [80.0, 95.7] 88.4 [80.6, 95.0] 65.8 [56.8, 74.4] 72.4 [64.2, 80.1] 1700
fixed / dense (granite) 81.4 [71.4, 90.0] 82.9 [73.6, 91.4] 54.3 [45.1, 63.7] 61.0 [52.7, 69.5] 2083

All 18 configurations, both splits: retrieval_test.md, retrieval_dev.md.

Paired differences (same questions), test and dev

Comparison test hit@10 test MRR dev hit@10 dev MRR
hybrid βˆ’ dense (section) +5.7 [+1.4, +11.4] +7.7 [βˆ’0.7, +16.2] +8.0 [+0.0, +18.0] +14.0 [+7.6, +20.9]
hybrid βˆ’ BM25 (section) +8.6 [+1.4, +15.7] +4.2 [βˆ’2.6, +11.0] βˆ’2.0 [βˆ’8.0, +4.0] +4.8 [βˆ’2.4, +12.6]
rerank top 20 βˆ’ hybrid (section) βˆ’1.4 [βˆ’7.1, +4.3] +0.6 [βˆ’7.1, +8.3] +6.0 [+0.0, +14.0] +4.5 [βˆ’2.4, +12.1]
rerank top 50 βˆ’ top 20 (section) βˆ’1.4 [βˆ’4.3, +0.0] βˆ’0.7 [βˆ’1.4, βˆ’0.1] +0.0 βˆ’0.2 [βˆ’0.5, +0.0]
section βˆ’ fixed (hybrid) +2.9 [βˆ’2.9, +8.6] +3.4 [βˆ’5.0, +11.7] βˆ’4.0 [βˆ’14.0, +6.0] +8.5 [+1.3, +15.8]
section βˆ’ recursive (hybrid) +4.3 [βˆ’2.9, +11.4] +2.5 [βˆ’5.6, +10.7] +2.0 [βˆ’6.0, +10.0] +3.1 [βˆ’3.1, +9.6]
bge βˆ’ granite (section, dense) βˆ’5.7 [βˆ’12.9, +0.0] βˆ’4.9 [βˆ’14.3, +4.7] +0.0 [βˆ’8.0, +8.0] βˆ’0.1 [βˆ’10.8, +10.6]

What it says

  1. Hybrid beats dense-only on recall, on both splits (test hit@10 +5.7 [+1.4, +11.4]). On ranking it is clear on dev (MRR +14.0 [+7.6, +20.9]) and on test nDCG@10 (+7.5 [+0.7, +14.5]), but not on test MRR (+7.7 [βˆ’0.7, +16.2]). On test, hybrid also beats BM25 alone on recall.
  2. The cross-encoder reranker does not reliably help. On dev it looked like a small gain (hit@10 +6.0, interval touching zero); on test it is βˆ’1.4 on hit@10 and +0.6 on MRR. It costs 1.6-5 s a query on CPU (eval/retrieval_latency.json) against 9 ms for hybrid. Reranking 50 candidates instead of 20 adds nothing on either split. The rerankers are MS MARCO models trained on web queries; domain shift is a plausible reason, not a tested one.
  3. Section-aware chunking is best on test but its lead over fixed and recursive chunks is within the intervals (it is clearer on dev MRR). Chunk sizes are matched (words@10 1,700-2,100), so this is about where cuts fall.
  4. bge is no better than granite.

A correction: hybrid fusion was not repeatable

The first version of this table fused hybrid results inside Qdrant, whose RRF broke ties differently on every call (9 of 40 queries changed their top 5 on an immediate repeat). Fusion now happens in code with the same formula and ties broken by chunk ID (0 of 150 queries differ on repeat), and every hybrid row was re-run. Recall did not move; section / hybrid test MRR fell from 71.1 to 68.3, and the test MRR gain over dense went from +10.5 [+2.1, +19.1], which excluded zero, to +7.7 [βˆ’0.7, +16.2], which does not. Part of the first number was how ties happened to fall.

The default, and how it was chosen

Default: section-aware chunks, hybrid (granite + BM25, RRF), no reranker. Chosen on dev alone, the reranker (top 20) would have been kept: it led on dev hit@10 and nDCG. It is left off because its dev gain was at the edge of its interval, it adds seconds per query, and test did not reproduce it. That last reason used the test split, so the test numbers for the default are not a clean held-out estimate of a dev-chosen system; the dev-chosen alternative (section / hybrid + rerank 20) scores 91.4 hit@10 and 68.9 MRR on test, against 92.9 and 68.3 for the default.