Chapter 5 of 10
Generate claims, citations, and abstentions
Synthesis
About 4 minutes · includes examples, an exercise, and references
Chapter at a glance
- •Claim-level handles prevent nonexistent citations but still require semantic support verification.
- •Qualifiers, numbers, scope, time, and negation are part of entailment.
- •Abstention distinguishes no evidence, insufficiency, ambiguity, conflict, and disallowed action.
The generator turns an evidence packet into a response. Its job is not to repeat passages but to produce useful claims whose support can be inspected. This requires a structured answer contract, evidence-handle citations, conflict handling, and a post-generation verifier. Prompt wording helps, but reliable behavior comes from constraining inputs and outputs and independently checking observable properties.
Choose the atomic unit of support. A claim is a proposition that can be assessed against evidence. One sentence may contain several claims, such as a limit, scope, and exception. Encourage short claims or structured claim objects rather than attaching one citation to a dense paragraph. Each material factual claim should list evidence handles. Non-factual transitions and clearly identified user-provided statements may follow different rules.
Use handles created by the context builder, such as E1 and E2. The generator may cite only those enum values in a structured schema. After generation, resolve handles to immutable source locators. Reject unknown handles. This prevents fabricated links but does not prove entailment. A second verifier—rules, a natural-language-inference model, another model with bounded input, or human review—must assess whether cited evidence supports the claim.
Entailment is sensitive to qualifiers. Evidence that says “up to five retries in test environments” does not support “use five retries in production.” Check numbers, negation, modality, actor, jurisdiction, version, and effective date. Evidence can support only part of a composite claim. Split or revise unsupported content. Preserve quoted spans when a consequential claim depends on exact wording.
Conflict policy belongs in the answer contract. Prefer a superseding authoritative revision when metadata establishes that relation. If two current authorities genuinely conflict, state the disagreement and cite both instead of averaging them. If source authority is insufficient, qualify or abstain. The model should not resolve organizational policy by rhetorical confidence.
Abstention has categories. No evidence means retrieval did not provide support. Insufficient evidence means fragments exist but do not justify the requested conclusion. Ambiguous scope requires clarification. Conflicting evidence requires resolution. Disallowed advice requires refusal or escalation. A structured status lets the interface offer the right next action. Evaluate false abstention as well as unsupported answering; a system that always declines is safe-looking but not useful.
Answer format should serve the task. A concise direct answer can lead, followed by evidence and caveats. Procedures can use numbered steps with per-step citations. Comparisons can use rows whose values cite sources. Machine consumers need a versioned JSON schema. Do not expose chain-of-thought; store the externally checkable claim-evidence mapping and verification results instead.
Citation rendering must preserve context. Display source title, revision or date, section, and locator. A bare numeric marker that opens a different mutable page undermines reproducibility. Avoid long copied passages; cite and summarize within permitted use. Where the user needs exact policy language, show a minimal excerpt with clear quotation and source.
The runnable validator below checks schema-level grounding: every factual claim has at least one known evidence handle. It deliberately does not claim semantic verification. A production verifier adds support judgments and can return supported, partially supported, contradicted, or not enough evidence. The answer publisher then removes, revises, qualifies, or escalates claims according to consequence.
Generation settings are part of reproducibility. Record model, provider, prompt or policy version, decoding parameters, context packet digest, output schema, and verifier version. Repeated output can vary, so evaluate multiple trials for unstable tasks. Deterministic validation should run every time.
Do not let a citation veneer substitute for end-to-end quality. A response may cite every sentence yet omit decisive counterevidence, use low-authority sources, or answer the wrong scope. Evaluate completeness, source quality, and correctness alongside citation presence and entailment. The goal is not maximally cited prose; it is a useful answer whose material claims have adequate, authorized, current support.
Key points
- Claim-level handles prevent nonexistent citations but still require semantic support verification.
- Qualifiers, numbers, scope, time, and negation are part of entailment.
- Abstention distinguishes no evidence, insufficiency, ambiguity, conflict, and disallowed action.
- Store inspectable claim-evidence mappings rather than hidden reasoning.
Validate evidence handles in a structured answer
Read the expected behavior in the surrounding walkthrough, then copy and run this reference implementation.
def validate_answer(answer, evidence_handles):
errors = []
if answer.get("status") not in {"answered", "abstained", "needs_clarification"}:
errors.append("invalid status")
for index, claim in enumerate(answer.get("claims", [])):
citations = claim.get("citations", [])
if not citations:
errors.append("claim " + str(index) + " has no citation")
unknown = set(citations) - set(evidence_handles)
if unknown:
errors.append("claim " + str(index) + " cites unknown handles " + repr(sorted(unknown)))
return errors
packet = {"E1": {"text": "Retry at most twice."}}
answer = {"status":"answered", "claims":[{"text":"Retry twice.", "citations":["E1"]}]}
print(validate_answer(answer, packet))
# An empty error list proves handle validity, not that the claim is entailed.Exercise
Build a claim verifier
Generate and validate an answer from evidence containing a rule, exception, and obsolete revision.
- Define a structured status, claims, citations, caveats, and conflict schema.
- Validate handles and judge support with qualifiers and dates.
- Test unsupported truth, partial support, contradiction, ambiguity, and correct abstention.
Success criteria
- No material claim publishes with an unknown or unsupported handle.
- The obsolete revision cannot support a current instruction.
- The interface communicates why the system abstained and what can resolve it.
Reflect: Which sentence in a typical answer contains more than one independently verifiable claim?
References and further reading
- Retrieval-Augmented Generation for Knowledge-Intensive NLP TasksThe original RAG formulation combining parametric and non-parametric memory.
- RAGAS: Automated Evaluation of Retrieval Augmented GenerationThe primary RAGAS evaluation paper.
- RAGChecker: A Fine-grained Framework for Diagnosing Retrieval-Augmented GenerationThe primary RAGChecker paper on claim-level retrieval and generation diagnostics.