r/Rag • u/CupGlass540 • 2d ago
Discussion [R] When the answer is a relation between documents, retrieval isn't the bottleneck: 0/38 with full evidence, 28/38 with the same facts as structure
Most RAG evaluation asks whether the right passages reached the model. I wanted
to measure what happens when they do and the model still can't answer — because
the answer is a relation *between* passages rather than a statement inside any
of them.
Setup: a five-document narrative corpus (260,204 words, 13,950 passages) and 38
questions asking whether event A precedes event B, where A and B are narrated in
different documents and share no character, place or causal link. No passage in
the corpus states either relation. Five models, one family (Qwen3, 0.6B to 14B).
Given the source passages as text, every model scored 0/38 and refused 92-100%
of the time. I think the refusal is correct — the ordering genuinely is not in
the text. Given the identical facts as a structured chronology block from an
explicit state store, an 8B model scored 28/38 (73.7%).
A four-condition ablation separates information from form. At 14B, form is
irrelevant: plain prose, sorted prose and a structured block all land at 73.7%.
At 8B, structure leads the best prose condition by 6 items (73.7% vs 57.9%).
So: an 8B model given structure matches a 14B model given prose.
Two controls I'd want to see if someone else posted this:
- Permuting the supplied story positions collapses accuracy to 10.5% (8B) and
21.1% (14B). The models follow the ordering they're given rather than
recalling the published text.
- A realistic retrieval baseline is also at the floor, and it fails by asserting
rather than refusing. Going from 4 passages to 32 drove refusal from 97% down
to 50% while accuracy stayed at chance. More context produced more confident
wrong answers.
Two things I got wrong, both found by auditing my own scorer and question
generator after v1 was already published:
- v1 reported the 8B form effect as +32 points. A scorer defect wasunder-crediting the prose conditions. Corrected, the gap is 6 items, not 12 —roughly half what I claimed. Re-scoring 1,786 saved items produced 30 gainsand zero losses, so nothing published was inflated; two things wereunderstated, and correcting them shrank my own headline.
- For 36 of the 38 questions, the gold answers derive from author-assignedstory positions rather than from evidence-backed relations, and thegenerator's own self-check recomputes the gold from the same rows. That checkis circular. So this benchmark measures agreement with an author-assignedordering — not whether a system reports what the evidence establishes.
That second one is the real limitation and it bounds what the paper can claim.
I've left v1 up rather than retracting it, with the corrections in §11.
Full write-up, including the two things the audit changed:
https://ai.bedvibe.studio/structure-not-scale/
Paper, data and code: https://doi.org/10.5281/zenodo.22169643
Happy to be told the 0/38 is a prompt artifact — I tried to kill it and couldn't,
but I'd rather find out from you than not find out.
2
u/LowDistribution3995 1d ago
Use this benchmark please and post the scorecard. It actually shows meaningfull data and having more people use it helps me tweak the metrics being scored so it stays useful for testing as opposed an easily fudgable meaningless % for marketing purposes. https://github.com/munch2u-a11y/FP-AMB.git
1
u/CupGlass540 1d ago
I'll look. One thing I'd want before running it and posting a number, and I ask
it of my own work too: what are the discrimination controls?
I spent this week finding out that a metric I built returns a clean, confident
zero in three unrelated situations — the two systems genuinely agree, the task
admits only one answer so nothing can vary, or the calls died at transport and
came back as absence. All three looked identical in the output. A scorecard
from that would have read as a pass.
So the questions I'd ask any benchmark, including mine: does a system paired
with itself score high? Does a deliberately broken one score low? And how many
items can any competent system answer, so the score is mostly carried by the
few that discriminate?
If those exist and I missed them, point me at them. If they don't, they're
worth more to you than another scorecard.
2
u/LowDistribution3995 1d ago
Hard to read this .... But if your asking if I tried to make it fair, yes. I made it as fair as I could. I don't know what system paired with itself means so... I dunno. It gives a helpful visual scorecard though that breaks down scores into categories and includes token metrics.
1
u/CupGlass540 14h ago
Fair — let me say it plainly.
Self-pairing means running your benchmark with the same system on both sides. Identical input, identical output. It should score a perfect agreement. If it doesn't, the number is partly noise.
Then the opposite: feed it something you've deliberately broken. If that still scores well, the metric isn't separating good from bad.
I ask because mine failed exactly that test last week. It returned a clean, confident zero in three completely different situations — the two systems actually agreed, the task only had one possible answer, and the calls died before they arrived and came back as nothing. All three looked identical in the output. A scorecard built on it would have read as a pass.
Those two checks are an afternoon each and they'd tell you more about FP-AMB than any scorecard I could post. If it already survives them, say so in the README — that's the thing that would make me trust the number.
2
u/LowDistribution3995 14h ago
No.... It's an actual Q&A so the scenario your describing doesn't make sense. If the tested system pulls the correct context to match the answer key it gets points, if it doesn't, it doesn't. If you have any test or benchmark that basically gives you a random printout then that's not a benchmark. I'm not going to add to the readme because what your describing isn't a real red team test, it's like a common sense test.
If I'm showing you a car and your response is I won't look at it until you've proven its a car.... I don't even know how to approach that. Like look at, its got 4 wheels and an engine. I'm not sure publicly advertising that the tires are round means anything and I'm not sure why that would ever be a serious inquiry of anyone looking to buy a car.
Sorry if I'm coming off a bit short here, but it really feels like your just dumping pseudo sounding slop. Everything your asking, I think, would take under 1 second for any agent to confirm or deny with a link to the repo....
1
u/Future_AGI 14h ago
Your jump from 0 to 28 is the useful signal here, because it points at the composition step, holding a relation across passages, rather than at retrieval itself. We started scoring that reasoning step separately from retrieval, since a run can pull every right passage and still miss the relation between them. Once the composition score is its own number, you can see which of the remaining 10 are retrieval misses versus relation misses. Relational eval setup is here if it helps: https://github.com/future-agi/future-agi
2
u/donk8r 1d ago
Your permutation control is doing more work than the headline and I would move it up. If permuting the supplied positions drops the 8B to 10.5%, then what the structured condition demonstrates is transcription of a supplied ordering. That lines up with your own limitation 2 and sharpens it: the state store already contains the answer, so the open question is who computes the chronology.
Which is why this result travels furthest in domains where the relation is derivable rather than authored. Disclosure, we build one of those (octocode, github.com/muvon/octocode), a code index where the parser extracts calls and imports at index time, so the graph gets built without anyone assigning a gold ordering. Your circularity problem does not arise there, and what survives is the part your data actually establishes, that an 8B with the relation materialized matches a 14B without it.
The 32-passage number is the one to put in front of people who think more context fixes this. Refusal dropping from 97% to 50% while accuracy stays at chance is the argument against retrieving more, and you got it as a control rather than as the claim.