本文属于 RAG 工程框架中的「3 重排与证据组装」环节,聚焦「Citation Packing(引用组装)」方法。可先阅读 RAG-00.方法概述 再进入本篇。
原理
把答案拆分为声明(claim),为每个声明绑定最小证据片段,保证可追溯与可审计。
关键技术/实现路径
- claim 切分与证据匹配。
- 一句一证据或多句一证据策略。
- 引用冲突检测与去重。
优缺点
- 优点:提升可信度和可审计性。
- 缺点:实现复杂度提升。
性能与资源
- 中等开销,适合高可信场景。
应用场景
- 合规问答、法律和医疗知识助手。
统一合成数据示例
输入数据片段
1 | { |
中间结果(claim–证据最小对齐)
1 | [ |
最终生成示例(含引用)
1 | {"answer":"机票上限2000元,需30天内提交。","citations":[{"doc_id":"D01","evidence_span":"span1"},{"doc_id":"D01","evidence_span":"span2"}]} |
原始发表与工程实现
- 代表性原始发表:Attributed QA 系列。
- 核心解决问题:解决答案与证据绑定。
- 成熟实现工具:LlamaIndex CitationQueryEngine, Haystack。
详细原理拆解
- claim-evidence 绑定,提升 citation precision 与答案可审计性。
- 典型实现可拆为:输入预处理 -> 方法核心计算 -> 候选/证据构建 -> 生成与引用。
- 工程调优重点:质量(准确率/引用率)与成本(时延/token)的联合优化。
1 | flowchart LR |
工程落地扩展示例
伪代码
1 | def citation_pack(draft_answer, evidence_spans, aligner): |
参数示例
1 | claim_splitter: sentence_or_llm |
常见失败案例
- 失败模式 1:一句 claim 合并两个事实,只能绑一条证据,审计仍不可信。
- 失败模式 2:对齐阈值过低,错误 span 被引用为支持。
- 失败模式 3:证据池来自多个版本制度,span 与 claim 版本不一致。
Demo 数据带入计算示例
1 | c1「上限2000」↔ span1 重叠 0.98;c2「30天内」↔ span2 重叠 0.95。 |