← All writing
AIsearchexperiments

Does the order of the passages change Jev's pick?

I reversed, shuffled and renamed the thirty passages, changed the answer labels, and checked what Jev's confidence says about which picks hold.

by Aness Belbation read 16 min · 3,139 words
On this page
  1. What I measured
  2. Confidence identifies a more stable subset
  3. The same order test across modes
  4. Criterion labels and option order
  5. Renaming passages in Choice
  6. What confidence can tell me about correctness
  7. Follow-up evidence and limits

In my reranking benchmark, I gave TypeSafe's Jev thirty search results per query and used its answers to put the useful ones first. On ranking quality it kept up with Cohere Rerank 4 Pro. That leaves a different question: show Jev the same passages in a different order, or under different names, and does it still pick the same one?

I reversed, shuffled and renamed the passages, repeated identical requests, and changed the labels on the answer options. Then I checked whether Jev's own confidence tells you which picks hold still. These results first appeared on September 17 as an update to the benchmark article; they have their own page since September 23.

#What I measured

I tested passage permutations, repeated requests, and different labels for the same questions. These tests reuse the 1,617 queries from the benchmark whose original thirty candidates include at least one labelled-relevant passage, with the same candidates and 2,000-character truncation. The original and reversed Choice responses are from September 16; the new repeats, shuffles, and label experiments are from September 17. The saved Jev responses report jev-1.13.0.

Jev answered in the same four setups as in the benchmark:

SetupWhat I ask Jev
Yes/no, shared request (Noul)Thirty relevance questions, with all thirty passages in the shared state.
ChoiceOne choice among thirty passages and “none,” plus a separate question about whether any passage answers the query.
Rubric, shared request (Score)Thirty questions asking whether each passage is off-topic, related, partly useful, or fully useful.
Yes/no, isolated passage (Noul)One passage and its relevance question per request; thirty requests per search query.

Setup

Yes/no, shared request (Noul)

What I ask Jev
Thirty relevance questions, with all thirty passages in the shared state.

Choice

What I ask Jev
One choice among thirty passages and “none,” plus a separate question about whether any passage answers the query.

Rubric, shared request (Score)

What I ask Jev
Thirty questions asking whether each passage is off-topic, related, partly useful, or fully useful.

Yes/no, isolated passage (Noul)

What I ask Jev
One passage and its relevance question per request; thirty requests per search query.

The largest change to how I read the results is a distinction I needed to make explicit: ranking a passage first and choosing an answer are different measurements. Jev Choice can answer “none” while still assigning probabilities to every passage.

Original Choice run, all 1,617 scored queriesLabel-supported outcomes
Highest-ranked passage, ignoring “none”1,229 / 1,617 — 76.0%
Actual returned answer, including “none”1,135 / 1,617 — 70.2%

Original Choice run, all 1,617 scored queries

Highest-ranked passage, ignoring “none”

Label-supported outcomes
1,229 / 1,617 — 76.0%

Actual returned answer, including “none”

Label-supported outcomes
1,135 / 1,617 — 70.2%

The ranking tables in the benchmark use the first definition, and so do the ranking flips below. The answer-correctness tables below use the second. “Correct” throughout means supported by the dataset's labels; unjudged passages count as not relevant.

#Confidence identifies a more stable subset

Here I group queries by the original response's confidence, then check whether reversing the passages changes the highest-ranked passage. The grouping uses information available before the second call.

Original Choice confidenceQueriesHighest-ranked passage changed
Below 0.50345197 / 345 — 57.1%
0.50 to below 0.70327107 / 327 — 32.7%
0.70 to below 0.9034172 / 341 — 21.1%
0.90 to below 0.9935221 / 352 — 6.0%
0.99 and above2523 / 252 — 1.2%

Original Choice confidence

Below 0.50

Queries
345
Highest-ranked passage changed
197 / 345 — 57.1%

0.50 to below 0.70

Queries
327
Highest-ranked passage changed
107 / 327 — 32.7%

0.70 to below 0.90

Queries
341
Highest-ranked passage changed
72 / 341 — 21.1%

0.90 to below 0.99

Queries
352
Highest-ranked passage changed
21 / 352 — 6.0%

0.99 and above

Queries
252
Highest-ranked passage changed
3 / 252 — 1.2%

At confidence 0.9 or above, the highest-ranked passage changes on 24 of 604 queries (4.0%), compared with 400 of 1,617 overall. That group covers 37.4% of this set. The other 62.6% still need a policy: another model, more evidence, review, or abstention. Filtering doesn't repair their rankings.

The confidence belongs to Jev's actual answer, which can be “none.” Within the same 604-query group, the actual answer changes on 17 queries (2.8%). Its labelled correctness is 563/604 (93.2%) in the original order and 556/604 (92.1%) after reversal. Those are different quantities from passage-ranking flips.

September 17 follow-up

What survives a confidence filter?

Raise the minimum returned confidence, then inspect which questions remain and how often reversing the candidate order changes the top-ranked passage.

These 1,617 queries come from the eight English datasets. Each has at least one labelled-relevant passage among its original thirty candidates. Answer-removed lists are excluded.

Loading the recorded questions…

Of the 400 ranking flips, 101 swap one labelled-relevant passage for another and 98 swap two passages without a relevant label. Another 111 change a labelled-correct ranking into an incorrect one, while 90 improve it. About half therefore change labelled correctness. The opposing changes partly cancel: ranking accuracy moves from 76.0% to 74.7%.

The lowest-confidence group contains 197 of the 400 flips (49.3%). A small gap between the top two passage probabilities is also associated with instability: when that gap is below 0.05, 77 of 115 queries (67.0%) flip.

Reversal produced the largest disagreement among the individual permutation comparisons I tested. Two seeded random orders disagree on 302/1,617 queries (18.7%). Averaging two orders, then comparing with the average of the other two, gives flip rates of 13.7%, 16.1%, and 16.8% across the three possible pairings. Their descriptive pooled rate is 15.5%; those pairings reuse the same queries and are not independent observations.

Ranking accuracy is 76.2%–76.5% for the two evaluated two-order averages and 77.3% for the four-order average. A policy that adds a second order only below confidence 0.9 still disagrees with its alternative-order counterpart on 14.0% of queries, and needs that second call for 62.6%. These are useful trade-offs to measure, rather than evidence that averaging or a threshold solves the problem.

#The same order test across modes

A ranking flip means a different passage receives the highest score. Equal scores retain the original BM25 order. The score-gap column counts flips where either run gives its preferred passage at least 0.10 more score than the other run's preferred passage. A numerical tolerance of 1e-10 includes decimal gaps that binary floating-point subtraction places just below 0.10. This is an exploratory diagnostic: Choice, Noul, and rubric scores have different meanings, so equal numerical gaps do not imply equal error severity.

SetupReversal: ranking flipsWith score gap ≥0.10Labelled correctness changedSame input asked again: ranking flipsOriginal top passage labelled relevant
Jev Choice24.7%22.9%12.4%2.9%76.0%
Jev, 30 yes/no questions in one request19.6%6.0%8.8%5.7%74.3%
Jev, 30 rubric questions in one request18.6%3.5%8.5%4.6%74.6%
Jev, one yes/no request per passageNot applicableNot applicableNot applicable6.5%71.2%
Qwen recipe, 30 yes/no questions92.6%91.4%27.1%Not measured13.6%

Setup

Jev Choice

Reversal: ranking flips
24.7%
With score gap ≥0.10
22.9%
Labelled correctness changed
12.4%
Same input asked again: ranking flips
2.9%
Original top passage labelled relevant
76.0%

Jev, 30 yes/no questions in one request

Reversal: ranking flips
19.6%
With score gap ≥0.10
6.0%
Labelled correctness changed
8.8%
Same input asked again: ranking flips
5.7%
Original top passage labelled relevant
74.3%

Jev, 30 rubric questions in one request

Reversal: ranking flips
18.6%
With score gap ≥0.10
3.5%
Labelled correctness changed
8.5%
Same input asked again: ranking flips
4.6%
Original top passage labelled relevant
74.6%

Jev, one yes/no request per passage

Reversal: ranking flips
Not applicable
With score gap ≥0.10
Not applicable
Labelled correctness changed
Not applicable
Same input asked again: ranking flips
6.5%
Original top passage labelled relevant
71.2%

Qwen recipe, 30 yes/no questions

Reversal: ranking flips
92.6%
With score gap ≥0.10
91.4%
Labelled correctness changed
27.1%
Same input asked again: ranking flips
Not measured
Original top passage labelled relevant
13.6%

All rows use the same 1,617 queries, with each query weighted equally. This differs from the benchmark's headline tables, which weight each dataset equally. The Qwen reversal results are the original saved control from the benchmark's Qwen test, not a newly repeated run.

For the original calls on this same query-weighted set, the estimated cost per 1,000 queries is $0.34 for Jev Choice, $0.43 for shared-request Noul, $0.46 for the rubric, and $0.80 for isolated-passage Noul. These use saved API usage and the recorded price assumptions. Qwen's corresponding $0.08 is an allocated GPU runtime estimate that excludes boot and idle time, so it is not an equivalent all-in deployment cost. None of these amounts has been reconciled with an invoice.

The matched thirty-yes/no comparison is therefore 19.6% versus 92.6% ranking flips, with labelled correctness changing on 8.8% versus 27.1%. It still concerns this small Qwen model, recipe, and prompt; it doesn't establish a limit for constrained decoding or larger models.

The shared-request Noul and rubric setups remain sensitive to order, despite each passage having its own output question. Many changes have small score gaps, but a near-tie can still put an unlabelled passage above a labelled answer.

An isolated-passage request contains no other passage whose position can change. Its reversal column is consequently not applicable, not a measured zero. Repeating those requests still changes the highest-ranked passage on 105/1,617 queries (6.5%); none of those repeat flips clears the 0.10 score-gap test. Small score changes and the tie-breaking rule still matter.

The new repeated-input comparisons span September 16 and 17. They combine repeat variability with any unobserved service changes across those dates; calling them a pure noise floor would overstate the control. Among the original 604 high-confidence Choice queries, the highest-ranked passage changed on one repeated request.

#Criterion labels and option order

A report from a user on TypeSafe's Discord prompted this check. I have left them unnamed. The measurements here are from my saved runs, rather than a reproduction of their particular examples.

I held the relevance instruction and positive/negative descriptions fixed, and changed the criterion labels: YES/NO, A/B, X/Y, and RELEVANT/IRRELEVANT, in both option orders. Noul plus exact duplicates of Noul and YES/NO brought the total to 11 variants per passage. Each query request contained all thirty passages and 330 questions. That gives 48,510 passage scores per variant. This tests labels and option order, not arbitrary rewrites of the instruction.

ComparisonMean absolute probability differencePassage scores differing by ≥0.10
YES/NO versus its exact duplicate0.0050.1%
YES/NO options swapped0.0091.5%
A/B options swapped0.0122.5%
RELEVANT/IRRELEVANT options swapped0.0133.2%
X/Y options swapped0.06117.5%
A/B instead of YES/NO0.0091.0%
X/Y instead of YES/NO0.0277.0%
RELEVANT/IRRELEVANT instead of YES/NO0.02911.3%
Choice YES/NO versus Noul0.05514.8%

Comparison

YES/NO versus its exact duplicate

Mean absolute probability difference
0.005
Passage scores differing by ≥0.10
0.1%

YES/NO options swapped

Mean absolute probability difference
0.009
Passage scores differing by ≥0.10
1.5%

A/B options swapped

Mean absolute probability difference
0.012
Passage scores differing by ≥0.10
2.5%

RELEVANT/IRRELEVANT options swapped

Mean absolute probability difference
0.013
Passage scores differing by ≥0.10
3.2%

X/Y options swapped

Mean absolute probability difference
0.061
Passage scores differing by ≥0.10
17.5%

A/B instead of YES/NO

Mean absolute probability difference
0.009
Passage scores differing by ≥0.10
1.0%

X/Y instead of YES/NO

Mean absolute probability difference
0.027
Passage scores differing by ≥0.10
7.0%

RELEVANT/IRRELEVANT instead of YES/NO

Mean absolute probability difference
0.029
Passage scores differing by ≥0.10
11.3%

Choice YES/NO versus Noul

Mean absolute probability difference
0.055
Passage scores differing by ≥0.10
14.8%

X/Y had the largest option-order effect among the tested pairs. Resending the packed request for 200 queries produced a similar shift, and the passage-level X/Y order shifts correlated at 0.87 across the two runs.

Noul in the packed request differed from the original shared-request Noul scores by 0.006 on average, the same rounded mean absolute difference as the repeated-input control. That comparison detected no additional average discrepancy from packing these variants together. It doesn't rule out individual or systematic effects.

Grouped by the original, separately recorded Noul score, the spread across the four canonical Choice label pairs was:

Original Noul scorePassagesMean label-pair spreadSpread ≥0.30
Below 0.1032,7540.0090.0%
0.10 to below 0.307,7480.0740.5%
0.30 to below 0.704,8340.25432.9%
0.70 to below 0.901,8500.1606.0%
0.90 and above1,3240.0320.0%

Original Noul score

Below 0.10

Passages
32,754
Mean label-pair spread
0.009
Spread ≥0.30
0.0%

0.10 to below 0.30

Passages
7,748
Mean label-pair spread
0.074
Spread ≥0.30
0.5%

0.30 to below 0.70

Passages
4,834
Mean label-pair spread
0.254
Spread ≥0.30
32.9%

0.70 to below 0.90

Passages
1,850
Mean label-pair spread
0.160
Spread ≥0.30
6.0%

0.90 and above

Passages
1,324
Mean label-pair spread
0.032
Spread ≥0.30
0.0%

Label sensitivity was concentrated in the middle of the original score range. The extremes were more stable in this test. These are per-passage probabilities, not the Choice answer-confidence groups above.

VariantMean probabilityAUROCQuery-weighted nDCG@10Scores ≥0.9 labelled relevant
Noul0.1550.9060.73661.4%
RELEVANT/IRRELEVANT0.1470.9010.73450.5%
YES/NO0.1180.8880.72953.5%
A/B0.1170.8880.72955.2%
X/Y0.1160.8800.73359.6%
X/Y, options swapped0.1760.8640.71356.8%
Average of the eight Choice variants0.1350.8880.72555.2%

Variant

Noul

Mean probability
0.155
AUROC
0.906
Query-weighted nDCG@10
0.736
Scores ≥0.9 labelled relevant
61.4%

RELEVANT/IRRELEVANT

Mean probability
0.147
AUROC
0.901
Query-weighted nDCG@10
0.734
Scores ≥0.9 labelled relevant
50.5%

YES/NO

Mean probability
0.118
AUROC
0.888
Query-weighted nDCG@10
0.729
Scores ≥0.9 labelled relevant
53.5%

A/B

Mean probability
0.117
AUROC
0.888
Query-weighted nDCG@10
0.729
Scores ≥0.9 labelled relevant
55.2%

X/Y

Mean probability
0.116
AUROC
0.880
Query-weighted nDCG@10
0.733
Scores ≥0.9 labelled relevant
59.6%

X/Y, options swapped

Mean probability
0.176
AUROC
0.864
Query-weighted nDCG@10
0.713
Scores ≥0.9 labelled relevant
56.8%

Average of the eight Choice variants

Mean probability
0.135
AUROC
0.888
Query-weighted nDCG@10
0.725
Scores ≥0.9 labelled relevant
55.2%

AUROC measures how often a labelled-relevant passage receives a higher score than a passage without a relevant label, with ties receiving half credit. Noul had the highest AUROC and ranking score among the canonical variants here. I haven't established the uncertainty around these differences. Averaging the Choice variants did not improve the point estimate over canonical Noul.

Choice YES/NO was about 0.038 lower than Noul on average, but the per-passage absolute difference was larger and other labels behaved differently. I would keep the question type, labels, and order fixed when evaluating a threshold. There is no universal offset that makes the scores interchangeable.

#Renaming passages in Choice

This is a separate experiment: changing the passage identifiers in the pick-one question. It keeps the relevance instruction fixed.

Passage identifiers and runTop passage labelled relevantActual answer correct at that run's confidence ≥0.9Ranking changed versus original
p01, original76.0%93.2%Baseline
p01, repeated75.6%91.9%2.9%
Numbers, original order76.3%92.4%4.3%
Letters, original order76.2%93.0%4.7%
Random four-character codes, original order76.2%92.9%5.5%

Passage identifiers and run

p01, original

Top passage labelled relevant
76.0%
Actual answer correct at that run's confidence ≥0.9
93.2%
Ranking changed versus original
Baseline

p01, repeated

Top passage labelled relevant
75.6%
Actual answer correct at that run's confidence ≥0.9
91.9%
Ranking changed versus original
2.9%

Numbers, original order

Top passage labelled relevant
76.3%
Actual answer correct at that run's confidence ≥0.9
92.4%
Ranking changed versus original
4.3%

Letters, original order

Top passage labelled relevant
76.2%
Actual answer correct at that run's confidence ≥0.9
93.0%
Ranking changed versus original
4.7%

Random four-character codes, original order

Top passage labelled relevant
76.2%
Actual answer correct at that run's confidence ≥0.9
92.9%
Ranking changed versus original
5.5%

Across the four shuffled naming runs, ranking accuracy ranged from 75.1% to 76.1%, and actual answer correctness within each run's own high-confidence group ranged from 92.5% to 94.8%. Those groups can contain different queries. This is not a result that every originally high-confidence query survives every naming change.

For the 466 queries with original confidence at least 0.95, all four naming schemes in the original passage order produced the same highest-ranked passage. Below confidence 0.5, they agreed on 68.4%. Renaming mattered less than shuffling here; it did not have zero effect.

The saved-response check also found three returned Choice answers that differed from the highest-probability passage in near-ties. Keeping the actual answer separate from a score-derived ranking avoids silently treating those as identical.

#What confidence can tell me about correctness

TypeSafe describes confidence as a statistic derived from the shape of the answer distribution. It is not defined as the probability that the selected answer is correct. These buckets test its association with observed correctness; they do not establish that confidence 0.90 means 90% accuracy.

The following rates evaluate the actual returned Choice answer, including “none.” For the answer-removed lists, I removed all passages labelled relevant and refilled the list from later BM25 candidates. That does not establish that no genuinely relevant passage remains.

Condition, confidence ≥0.9 in that runLabel-supported answersObserved rate95% Wilson interval
Original lists with a labelled answer563 / 60493.2%90.9%–95.0%
All labelled-relevant passages removed204 / 35956.8%51.7%–61.8%
Both constructed conditions pooled767 / 96379.6%77.0%–82.1%
Reversed lists, selected by reversed-run confidence546 / 58693.2%90.8%–94.9%

Condition, confidence ≥0.9 in that run

Original lists with a labelled answer

Label-supported answers
563 / 604
Observed rate
93.2%
95% Wilson interval
90.9%–95.0%

All labelled-relevant passages removed

Label-supported answers
204 / 359
Observed rate
56.8%
95% Wilson interval
51.7%–61.8%

Both constructed conditions pooled

Label-supported answers
767 / 963
Observed rate
79.6%
95% Wilson interval
77.0%–82.1%

Reversed lists, selected by reversed-run confidence

Label-supported answers
546 / 586
Observed rate
93.2%
95% Wilson interval
90.8%–94.9%

The pooled result uses the experiment's mixture of present and answer-removed lists. It isn't a deployment accuracy estimate. Answer-removed responses are available for 1,609 of the 1,617 eligible queries; one NFCorpus and seven TREC-COVID twins are unavailable. The intervals describe sampling uncertainty under the binomial calculation; they do not account for missed labels, shared passages, or dataset selection.

For the original lists containing a labelled answer:

Reported confidenceQueriesMean confidenceActual answer labelled correct
Below 0.503450.3840.9%
0.50 to below 0.601710.5453.2%
0.60 to below 0.701560.6469.2%
0.70 to below 0.801520.7565.1%
0.80 to below 0.901890.8570.4%
0.90 to below 0.951380.9285.5%
0.95 to below 0.992140.9792.1%
0.99 and above2521.0098.4%

Reported confidence

Below 0.50

Queries
345
Mean confidence
0.38
Actual answer labelled correct
40.9%

0.50 to below 0.60

Queries
171
Mean confidence
0.54
Actual answer labelled correct
53.2%

0.60 to below 0.70

Queries
156
Mean confidence
0.64
Actual answer labelled correct
69.2%

0.70 to below 0.80

Queries
152
Mean confidence
0.75
Actual answer labelled correct
65.1%

0.80 to below 0.90

Queries
189
Mean confidence
0.85
Actual answer labelled correct
70.4%

0.90 to below 0.95

Queries
138
Mean confidence
0.92
Actual answer labelled correct
85.5%

0.95 to below 0.99

Queries
214
Mean confidence
0.97
Actual answer labelled correct
92.1%

0.99 and above

Queries
252
Mean confidence
1.00
Actual answer labelled correct
98.4%

Higher confidence generally identifies better answers, but the relationship is uneven. The broad ≥0.9 group combines the 85.5% result in the 0.90–0.95 slice with stronger results above it. A cutoff chosen after inspecting these results still needs validation on new data and the application's actual mix of questions.

A preliminary fourteen-case inspection accompanying these results reported twelve relevant picks, one probably relevant, and one unclear pick from answer-removed lists. Its sampling and adjudication were not documented as representative or independent, so I do not use it to correct the 56.8% result or estimate the share of errors caused by missing labels. The true semantic accuracy remains unmeasured.

Label density differs substantially across these datasets. In this query set, Natural Questions averages about 1.3 labelled-relevant passages per query across its corpus, versus about 493 in TREC-COVID. Even the latter is not exhaustive ground truth. For isolated-passage Jev Noul, the fraction of ≥0.9 scores labelled relevant is 34.5% on Natural Questions and 98.5% on TREC-COVID. Those differences also include different tasks and candidate distributions; they don't isolate a causal effect of annotation density.

The binary-output probability calibration summaries therefore need care. Across the pooled sample, X/Y has a smaller expected calibration error against the available labels than Noul (0.042 versus 0.075), while on TREC-COVID it has a larger one (0.292 versus 0.247). That does not establish which variant's probabilities best reflect true relevance on new data.

#Follow-up evidence and limits

The interactive rows contain both passage rankings and actual Choice answers, with input-file hashes. The order report, label report, and confidence report are saved analysis printouts, not raw model responses. Their shorthand such as “right,” “real flip,” or “noise floor” should be read with the definitions above.

The benchmark checkout contains the original cache/ responses, the follow-up order_runs/ and label_runs/ responses, the candidate labels, and the analysis scripts scripts/order_flips.py, scripts/label_eval.py, and scripts/calib_pooled.py. Those inputs, rather than this article's tables alone, are needed to reproduce the results.

These are exploratory results for one model version, one fixed relevance instruction, and selected public-dataset queries. Training-data overlap is unknown. Thresholds were inspected on this sample; I have not validated an automation policy on a held-out production workload. The label tests do not cover arbitrary instruction wording, prediction questions, other languages, or future model versions. The multiple-perspective search experiment remains untested.

The ranking comparison itself, with Cohere Rerank 4 Pro, zerank-2, the costs and the negation test, is in I gave Jev a reranker's job.