Repository navigation
Judge Commons images in Seed Search holistically - #615
Conversation
holistic_arms builds, on the en-gb queries, A2 (the recommended gated strip at position 2, displacing nothing) and A1 (no gate, the two most relevant Jev-safe images merged into the web order by Jev composite), and writes holistic judge batches for each against production's order, plus a 20-comparison vision check with the strips' thumbnails. The holistic judge learns to render image strips and single images, tells the judge about them only in batches that show them, and names each batch's output path. Part of #610 No functional changes to the crawler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On the 295 en-gb queries the gated strip (option 2) beats production's order, +0.84 [+0.64, +1.01] over 59 queries, and judges with the thumbnails favour it more strongly. Merging single images into the web order (option 1) is no better than production, +0.12 [-0.03, +0.29]. holistic_arms gains a splits command for the local-layer and vision breakdowns, and the write-up gets the results and a recommendation. Part of #610 No functional changes to the crawler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… the vision check A2 adds a strip without displacing a web result, and the judges' notes mostly say it adds relevant pictures to the same results, so the write-up now says so before the table, gives the all-query mean, and asks for a control that pays for the strip. A1 changes five things at once, so its result no longer rules out single images in general. The vision check counted a tie as agreeing with a loss; it now compares signs. No functional changes to the crawler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The holistic judge sees no cost to A2's strip, so A2's win may mostly measure added content. A2-displace is A2 with the strip taking the tenth web result's place, so the list stays at ten. The judge is not told such a strip adds to the results; the prompt is otherwise the same. Part of #610 No functional changes to the crawler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sult A2-displace, the gated strip in place of the tenth web result, beats production's order by +0.75 [+0.55, +0.92] on the 59 gated-in queries, against A2's +0.84, about +0.15 over all en-gb queries. The splits command compares the two per query, and the write-up and its recommendation take the control into account. Part of #610 No functional changes to the crawler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No functional changes to the crawler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
In CI, `test` resolves to Python's own test package. No functional changes to the crawler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
|
I don't understand this enough to review and comment. I will say, I think |
|
Review: mwmbl/mwmbl#615 Initial assessment: The experimental design is thoughtful, and the results support testing a gated image strip rather than merging individual images into the web ranking. However, I'd pay particular attention to the statistical interpretation and whether the evaluation justifies the recommendation. The most important distinction is that A2 improves judged relevance on queries receiving images, but it doesn't necessarily demonstrate an improvement to overall search quality.
File: mwmbl/rankeval/seed-search-images-eval.md, lines 308–310. The recommendation says: I don't think the experiment establishes this. A2-displace tests whether replacing the tenth web result with an image strip improves the judged list. It doesn't test: The text-based judge also cannot realistically model these effects. Suggested change: Qualify the conclusion. The experiment establishes that the strip can outperform the tenth web result in relevance, not that its UI cost is negligible. File: seed-search-images-eval.md, lines 226–261. The experiment uses 295 en-gb queries, with only 59 receiving an image strip. The reported conditional improvement is +0.75 for A2-displace, but the estimated improvement across all queries is approximately +0.15. That's useful evidence, but I'd be careful about generalising it. In particular: Suggested change: Explicitly describe the recommendation as provisional pending evaluation on a broader query set. I wouldn't block this PR on that, since it is an offline experiment rather than a production change. File: holistic_arms.py, lines 101–105. The current implementation selects images based on Jev relevance and sorts them by score. shown = [ The evaluation itself identifies wrong-sense images as the remaining failure mode. Examples include: This is particularly important because the image strip appears immediately after the first web result. A wrong-sense image in that position could be more misleading than an irrelevant image near the bottom of the page. Suggested change: Consider testing whether image relevance combined with agreement with the top web result improves disambiguation. I wouldn't necessarily add another filter before merging this evaluation, but I'd make this an explicit follow-up experiment. |
…nto seed-images-eval-holistic
…notes Says why the holistic comparison uses the en-gb held-out queries, that the measured runs used the judge's earlier description cut, and adds two notes for production: drop a strip image the Wikipedia card already shows, and render Commons text escaped. No functional changes to the crawler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
We are using en-gb for now - we will add more locales at a later point. |
…stic No functional changes to the crawler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…stic No functional changes to the crawler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rd notes Says this comparison uses the Combined eval's en-gb run (it also has en-us lists that could check the locale claim), names commons_text as what now normalises Commons text, records how the card's lead image is matched, and points the wrong-sense failure at giving Jev the top web results. No functional changes to the crawler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Reply from Claude: Replying to the en-gb question above (6751890856). These are the held-out queries from the earlier Combined Search evaluations ( The conclusions probably carry over to en-us. Commons search ignores locale, the gate lets in 27% of these queries against 28% of the train queries, and the strip's wins and losses come from relevant versus wrong-sense (homonym) pictures, not UK-specific content. That evaluation also has en-us lists for the same queries, so this could be checked. We don't need a localised strip. The doc's holistic section now says this. |
Stack
PR 5 of 7 in the #610 evaluation stack: #611 ← #612 ← #613 ← #616 ← #615 ← #617 ← #614. Merge in that order.
What changed
mwmbl/rankeval/seed_images/holistic_arms.pybuilds the arms on the 295 en-gb queries, which nothing was tuned on, and writes their holistic-judge batches underdevdata/seed_images/holistic/. Commands:composite,arms,displace(the A2-displace control),vision(20 comparisons with thumbnails) andsplits(local-layer split, vision against text, A2-displace against A2).label_batches.save_thumbnailnow takes a path.seed-search-images-eval.mdgets the "Holistic comparison" section and its recommendation.The arms:
Results
Haiku 4.5 judged each comparison in both orders. Only queries whose lists differ are compared. Preference runs from −3 to 3, and a positive value favours the image arm.
Caveats:
Recommendation: ship option 2, the gated strip after the top web result. Don't merge single images into the web ranking as built in A1.
How verified
make checkpasses. 33 tests pass across the holistic-judge and seed-images test files, includingtest/test_seed_images_holistic.py(new).test.prefix, which fails in CI.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