Type Safe
Back to Workflow
WorkflowType Safe WorkflowCommunityNeeds review

RAG Citation Support Verification

Check whether cited passages support each answer claim before a RAG response is shown to users.

An editorial verification workflow that scores claim-evidence support and routes unsupported or ambiguous claims to revision or human review.

Provider
Type Safe Workflow
Reviewed
September 23, 2026
Project status
Community
Verification
Needs review
Categories
research, development
Compatibility
JEV, Laya, Bespoke Nimble, RAG

Inputs

  • ✓Atomic claim
  • ✓Cited passage
  • ✓Document metadata

Outputs

  • ✓Support label
  • ✓Contradiction label
  • ✓Confidence
  • ✓Route

Workflow steps

  1. 1Split generated text into claims that can be judged independently.
  2. 2Resolve each citation to the exact passage shown to the model.
  3. 3Judge supported, contradicted, insufficient, or not-applicable for each pair.
  4. 4Reject missing citations before model evaluation.
  5. 5Route unsupported, contradicted, and low-confidence claims to revision or review.
  6. 6Publish only after every material claim passes the policy.

Decision tasks

  • ✓Verify

Workflow implementation guide

This editorial pattern requires local evaluation before operational use. Empty tested-version fields mean the directory has not run it against a pinned model release.

Business problem

A retrieved document can be relevant to a topic without supporting the exact claim made in the generated answer.

Who this is for

Teams operating retrieval-augmented assistants, answer engines, or internal knowledge tools.

Model selection notes

Evaluate on domain-specific claim and evidence pairs. The best choice depends on language, evidence length, deployment policy, and error cost.

Tested model versions

Unknown

Industry
Knowledge Management, AI Products
Difficulty
advanced
Estimated setup time
1 to 2 days including labelled evaluation
Compatible model candidates
jev, laya, bespoke-nimble
Required integrations
RAG pipeline, Citation mapper
Recommended model
No single model recommended before local evaluation

Detailed execution steps

  1. 1Split generated text into claims that can be judged independently.
  2. 2Resolve each citation to the exact passage shown to the model.
  3. 3Judge supported, contradicted, insufficient, or not-applicable for each pair.
  4. 4Reject missing citations before model evaluation.
  5. 5Route unsupported, contradicted, and low-confidence claims to revision or review.
  6. 6Publish only after every material claim passes the policy.

Confidence policy

Use claim-level thresholds calibrated on domain evidence. Contradiction is always blocking; missing or insufficient evidence cannot be rescued by high confidence.

Human review policy

A reviewer handles material unsupported claims, policy-sensitive answers, and disagreements between deterministic citation checks and model judgements.

Privacy notes

Evidence can contain confidential documents. Minimize passages, enforce access controls before retrieval, and avoid logging full inputs.

Cost notes

Cost scales with claim count and evidence length. Deduplicate passages and skip non-material claims only under a documented policy.

Common failure modes

  • ✓Long passages contain one matching phrase but do not support the full claim.
  • ✓The generated answer combines several facts into one untestable claim.
  • ✓Citation access rules are applied after content has already been exposed.

Troubleshooting

  • ✓Shorten evidence to the smallest passage that preserves context.
  • ✓Split compound claims and retain the mapping to their original sentence.

Structured request example

{"state":{"claim":"The policy covers contractors.","evidence":"This policy applies to employees only."},"questions":{"support":{"type":"choice","criteria":{"supported":null,"contradicted":null,"insufficient":null}}}}

Require every material claim to pass

typescript · TypeScript 5.9

Provider version must be pinned before testing
type ClaimCheck = {
  material: boolean;
  label: 'supported' | 'contradicted' | 'insufficient';
  confidence: number;
};

export function answerRoute(checks: ClaimCheck[]) {
  const unsafe = checks.some((check) =>
    check.material && (check.label !== 'supported' || check.confidence < 0.9)
  );
  return unsafe ? 'revise-or-review' : 'publish';
}

Implementation guidance

Keep the declared inputs and outputs visible in code review. Validate every model response before it reaches a database, API, or customer-facing action.

Related resources