You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Wikipedia benchmark validator (benchmarks/datasets/wikipedia/validate_queries.sql) reports that 0/80 queries have matching top-10 doc sets with the bundled ground_truth.tsv, and 1/80 has a real score-diff of ~0.086. This has been latent for an unknown period and was masked by two compounding bugs that are now fixed.
Pre-#367 (and pre-#360), the same failure mode existed but two layered bugs hid it:
MS MARCO validator aborted before cleanup.benchmarks/datasets/msmarco/validate_queries.sql:176 had an ambiguous query_id SQL error. With \set ON_ERROR_STOP on this halted the script before the closing DROP FUNCTION IF EXISTS validate_single_query; ran. That left the MS MARCO validate_single_query(int, text, float8) overload in the bench_test database.
Wikipedia validator defines a colliding overload.validate_queries.sql:34 defines validate_single_query(int, text, int DEFAULT 4). With the MS MARCO overload still around, LATERAL validate_single_query(q.query_id, q.query_text) at line 141 became:
ERROR: function validate_single_query(integer, text) is not unique
Watchdog masked both failures. Before fix: sort posting list when spilling memtable (root-cause MS MARCO bucket-8 hang) #360, the workflow's Wikipedia validation step only grepped for VALIDATION FAILED. The SQL error produced neither FAILED nor PASSED markers, and set -o pipefail was not in effect, so Wikipedia validation PASSED was echoed unconditionally.
PR #360 fixed (1) and (3). Now MS MARCO reaches its DROP, and Wikipedia validation runs to completion — exposing the real GT/index mismatch.
The 20 worst (sorted by missing_docs DESC) all show 10 missing + 10 extra (completely disjoint top-10s), max_abs_diff=0.000000 — score comparison is vacuous when no docs overlap
1 query has a real score diff of ~0.086 (> 4 decimal places) → fails the score-match gate
Likely causes (not investigated yet)
Wikipedia ground_truth.tsv was generated against a different corpus snapshot, different doc_id assignment, or different tokenization config than what download.sh / load.sql produces today.
PR #367 fixes #365 (BMW K-dependent score under-reporting). That fix:
Makes MS MARCO validation pass (it was failing before)
Passes all 17 standard CI checks (sanitizers pg17/18, performance, scoring1..6, bmw, wand, bmw_skip_advance, etc.)
Does not change algorithmic invariants in a way that would zero out top-10 overlap on a 100K-doc corpus
The Wikipedia 0%-overlap pattern is structural, not a scoring drift.
Proposed work
Decouple validator function names. Rename validate_single_query → validate_msmarco_query / validate_wikipedia_query (or always require a 3-arg call). Eliminates the cross-dataset overload-collision foot-gun even if a future SQL error skips cleanup again.
Regenerate benchmarks/datasets/wikipedia/ground_truth.tsv against the current download.sh+load.sql corpus snapshot using precompute_ground_truth.sql. Compare against current Tapir output; investigate any remaining real discrepancies the same way we did on MS MARCO.
Recommend (a) for speed — the validator's existence is more important than its current accuracy on Wikipedia, and option (b) requires understanding which docs are 'expected' to mismatch which we currently can't justify.
Summary
The Wikipedia benchmark validator (
benchmarks/datasets/wikipedia/validate_queries.sql) reports that 0/80 queries have matching top-10 doc sets with the bundledground_truth.tsv, and 1/80 has a real score-diff of ~0.086. This has been latent for an unknown period and was masked by two compounding bugs that are now fixed.Discovery
Surfaced by the benchmark run on PR #367:
Pre-#367 (and pre-#360), the same failure mode existed but two layered bugs hid it:
benchmarks/datasets/msmarco/validate_queries.sql:176had anambiguous query_idSQL error. With\set ON_ERROR_STOP onthis halted the script before the closingDROP FUNCTION IF EXISTS validate_single_query;ran. That left the MS MARCOvalidate_single_query(int, text, float8)overload in thebench_testdatabase.validate_queries.sql:34definesvalidate_single_query(int, text, int DEFAULT 4). With the MS MARCO overload still around,LATERAL validate_single_query(q.query_id, q.query_text)at line 141 became:VALIDATION FAILED. The SQL error produced neitherFAILEDnorPASSEDmarkers, andset -o pipefailwas not in effect, soWikipedia validation PASSEDwas echoed unconditionally.PR #360 fixed (1) and (3). Now MS MARCO reaches its DROP, and Wikipedia validation runs to completion — exposing the real GT/index mismatch.
What the real validation output looks like
From PR #367 benchmark run:
max_abs_diff=0.000000— score comparison is vacuous when no docs overlapLikely causes (not investigated yet)
ground_truth.tsvwas generated against a different corpus snapshot, different doc_id assignment, or different tokenization config than whatdownload.sh/load.sqlproduces today.Why this is a separate issue from #365
PR #367 fixes #365 (BMW K-dependent score under-reporting). That fix:
The Wikipedia 0%-overlap pattern is structural, not a scoring drift.
Proposed work
validate_single_query→validate_msmarco_query/validate_wikipedia_query(or always require a 3-arg call). Eliminates the cross-dataset overload-collision foot-gun even if a future SQL error skips cleanup again.benchmarks/datasets/wikipedia/ground_truth.tsvagainst the currentdownload.sh+load.sqlcorpus snapshot usingprecompute_ground_truth.sql. Compare against current Tapir output; investigate any remaining real discrepancies the same way we did on MS MARCO.Unblocking PR #367 / v1.2
PR #367 contains the v1.2 blocker fix for #365. The Wikipedia regression here is pre-existing and orthogonal. Suggest one of:
continue-on-error: trueuntil GT is regeneratedbenchmarks/datasets/wikipedia/known_mismatchesallowlist akin to MS MARCO's, accepting the current Wikipedia state for nowRecommend (a) for speed — the validator's existence is more important than its current accuracy on Wikipedia, and option (b) requires understanding which docs are 'expected' to mismatch which we currently can't justify.