Unit 07.03: Detecting an answer the evidence does not support
The check that catches the most hallucinations is embarrassingly simple, and its simplicity is what makes it usable on every answer.
Term overlap, run on everything
Take the substantive words in the answer. Check which of them appear in the chunks the answer cites. Report the ones that do not.
The example below runs that check against a supported answer and an extrapolated one.
CITED CHUNK
c1 Refunds are allowed within 7 days of purchase.
ANSWER VERDICT
"Refunds are allowed within 7 days." SUPPORTED
"Refunds are allowed within 7 days and processed
instantly." UNSUPPORTED
not in the cited chunk: instantly
This is term overlap, not entailment. It will miss a paraphrase that reuses
the source's words while changing the meaning, and it costs almost nothing to
run on every answer -- which a careful check will not.
The supported answer flags nothing. The extrapolated one flags instantly - the exact word the unit at the start of this module identified as invented.
This is term overlap, not entailment. It will miss a paraphrase that reuses source vocabulary while changing the meaning, and it will occasionally flag a harmless synonym. Both are acceptable, because it runs in microseconds on every answer, and a cheap check that runs everywhere beats a perfect one that runs on a sample.
The mistake this prevents
The mistake is waiting for a model-based entailment checker before shipping any check at all. The sophisticated version costs a model call per answer and takes weeks to evaluate. Ship the crude one now, look at what it flags, and let that tell you whether the expensive version is worth building.
Takeaway
Compare the answer's substantive terms against the cited chunks on every response, and inspect the flags. It is imperfect, cheap enough to run always, and catches the extrapolation and merging failures directly.
