Repository navigation
Seed Search images eval: indexing approved images for standard search - #617
Merged
daoudclarke merged 7 commits intoNov 10, 2026
Merged
Conversation
Index the 11,652 Jev-approved images of the train queries into copies of the en-gb lookup index and the dev index, as pages of their own (file name, description, optionally categories), and search the 295 en-gb queries with standard search's ranker on each copy. With writes limited to the queried terms' own pages, as production's page count makes likely, 6 queries show 14 images, 12 of them relevant, and 5 existing documents are evicted. Categories add mostly licence and maintenance terms and help nothing, so index the description only. Holistic judge batches are built; the verdicts are pending. No functional changes to the crawler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The same-term arm, the closest to production, judges slightly worse than today's standard search: -0.27 [-0.55, +0.00] over only 11 queries, with no query winning in both orders. Recommend not serving indexed images yet; if they are indexed, use the file name and description only, cap them per list and decide on gate-rejected queries. Add a closing summary across the evaluation's phases. No functional changes to the crawler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fold the category-term table into prose, simplify the command line and inline the relevance file's path. Results are unchanged. No functional changes to the crawler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…search The summary kept a pixel layer behind Jev; the decision is that an image is shown or indexed only if Jev passes it, with no further check. State that and the residual risk. search() now refuses to run without PYTHONHASHSEED=0, which the top-ten counts depend on. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> No functional changes to the crawler.
Retraining it with image results is expected to fix the ranking losses, so the recommendation no longer says not to serve indexed images, and retraining plus a re-evaluation is on the production list. No functional changes to the crawler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Nov 9, 2026
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Kept both sides of the eval doc: the holistic "Before shipping" list stays at the end of the holistic comparison, ahead of the Indexing section. No functional changes to the crawler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Author
|
Looks fine to me |
No functional changes to the crawler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Un
67B7
icode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stack
PR 6 of 7 in the #610 evaluation stack: #611 ← #612 ← #613 ← #616 ← #615 ← #617 ← #614. Merge in that order.
What changed
mwmbl/rankeval/seed_images/indexing.pyindexes the 11,652 Jev-safe images (NSFW below 1.0) of the train queries as pages of their own, throughindex_documents, under their own terms, never the query that found them:…/wiki/File:X.jpg);It writes them into copies of the en-gb lookup index and the dev index, measures eviction, searches the 295 en-gb queries with standard search's ranker (
MMRRanker(LTRRanker)), scores each shown image with Jev relevance and builds holistic-judge batches.search()refuses to run withoutPYTHONHASHSEED=0: with a random seed, tied results swap and change 34 of 295 top tens.The "Indexing" and "Summary" sections of
mwmbl/rankeval/seed-search-images-eval.md.test/test_seed_images_indexing.py(new).Results
The en-gb test index has 65,536 pages to production's 102M, so full writes evict far more than production would. Same-term arms write an image only to terms the index already holds, the competition production would see. Full-write arms are an upper bound on eviction. The dev index is too thin to be a fair test.
Eviction:
What standard search shows:
Holistic, en-gb same-term arm only (the closest to production):
Recommendation: retrain the LTR with image results. Index the file name and description only. Cap images at one or two per list. Decide whether standard search shows images on gate-rejected queries. Check thin terms against a production-sized index before rollout.
How verified
make checkpasses.test/test_seed_images_indexing.pycovers the document text, the same-term filter and the top-ten diff.PYTHONHASHSEED=0.search()now refuses to run without the fixed hash seed; the Summary no longer keeps a pixel layer behind Jev; and the write-up states that the LTR was never trained on image pages, so it no longer recommends against serving indexed images.mwmbl/rankeval/seed_images/*is omitted from coverage (set in Add a harness to evaluate images in Seed Search #611), because it is offline evaluation code.Decisions already made
Nothing outside
mwmbl/rankevalimports this code, so production is unchanged.Part of #610
🤖 Generated with Claude Code