Sufficiency check: a cheap model call, or a trained classifier? #35
The problemThe abstention issue in the tracker establishes that no retrieval-score threshold works. The Constraints
Option A — a cheap model callFor: understands entailment, which is the actual question. Handles novel phrasings. Option B — a trained classifier over pair featuresFeatures like the reranker's, plus: does the top evidence contain an entity of the type the For: microseconds, free, deterministic. Trainable on the existing null set. My current viewOption A, but not on every query. Run it only when a cheap gate fires — top score below a That is the same escalation shape as single-shot-then-loop, which makes me think it is the What my own design costs
What I would measure firstThe cheap gate's recall on the null set, alone. If it cannot catch 80% of nulls at a tolerable What I want challengedIs "gate then model" a real design or am I optimising a cost that has not been measured? I have |
Replies: 3 comments 3 replies
Option B is dead on arrival for a reason the write-up nearly says and then does not commit to. You note the classifier "would be trained on our nulls, which are synthetic". That is not a caveat, it is the whole result. Our null questions are generated by removing a fact from the graph — so the surface signature of a null in this corpus is an artefact of the generator, not of insufficiency. A classifier will learn the generator, score beautifully in-distribution, and transfer to nothing. The notebook already shows four surface signals near chance. That is the experiment, and it came out negative. |
Is there not a third option nobody has costed? Run the model call, but not on every query. The write-up says "runs on every query in the escalate-by-default design" and then prices Option A against that. But you could gate it: only invoke the sufficiency check when a cheap signal says the query is near the boundary. High retrieval confidence and high margin, skip it. Everything else, pay the 300 ms. That does not need the classifier to be correct. It needs it to be correct on the easy cases, which is a much weaker requirement. |
|
Marking this as the answer, because the cascade is the design that comes out of the thread and neither original option is it. Decision: Option A, with Marcus's gate, staged. Phase 1 — model call on every query. Ship the thing that works. Pay the 300 ms and the money. Do not optimise a component whose value you have not yet measured. Phase 2 — measure what the check actually catches. Log every invocation with the retrieval margin. After a few thousand queries you have the joint distribution of margin against the verdict, which is the data the gate needs and which nobody has up front. Phase 3 — add the gate, precision-first. Set the skip threshold for ≥99% precision on the skip class, measured on held-out data. Report the skip rate; expect 20–30%, not 80%. Re-tune on a schedule, because the distribution moves. What made Option B wrong as originally posed, and it is the transferable lesson: it asked a surface-feature classifier to answer an entailment question. Rafael's argument is architectural and no quantity of labels fixes it. What made the cascade right is that it asks the same classifier a much easier question — not "is this evidence sufficient" but "is this case obviously easy" — and that question is a monotone function of retrieval confidence. Reframing a hard question into an easy adjacent one is most of applied ML, and it is worth noticing that it happened here. |
Marking this as the answer, because the cascade is the design that comes out of the thread and neither original option is it.
Decision: Option A, with Marcus's gate, staged.
Phase 1 — model call on every query. Ship the thing that works. Pay the 300 ms and the money. Do not optimise a component whose value you have not yet measured.
Phase 2 — measure what the check actually catches. Log every invocation with the retrieval margin. After a few thousand queries you have the joint distribution of margin against the verdict, which is the data the gate needs and which nobody has up front.
Phase 3 — add the gate, precision-first. Set the skip threshold for ≥99% precision on the skip class, measu…