先补齐必要概念
适合:会读列表与集合,准备做诊断工具。
- 召回
- 从资料库找出可能相关的候选,不表示它们最终进入模型输入。
- 重排
- 重新排列候选的优先级,影响有限上下文中先放哪些材料。
- 必要证据
- 足以支持本问题结论的材料集合,可能同时需要正文和例外条款。
- 证据支持
- 结论是否被实际材料及适用条件支持;有引用链接也可能没有支持。
原理怎样一步步成立?
- 确认资料
原始资料存在、有效且有权使用。
- 召回与排序
记录候选标识及排名。
- 组装上下文
保留必要材料、条件与来源标识。
- 生成与核对
检查每项结论及拒答是否符合证据。
初级 · 完成实现
沿固定列表追踪证据
本层目标:能够运行证据实验,并定位上下文裁掉例外的错误。
实验把随机部分固定下来
rag_evidence.py 不执行搜索或模型,而是固定 candidates、ranked 和 context 三份标识列表。required 同时包含 policy-current 与 policy-exception。这样能独立检查证据在管线中的去向,不会因随机生成而难以复现。
第一次失败发生在哪里
候选和排序都含两块必要材料,但 context 只取第一块。diagnose 返回 context,说明此教学输入的首个缺口在组装阶段。改成前两块以后,返回 supported 表示给定证据集合通过了检查;它并没有真的生成或审阅回答。
指标需要匹配标注方式
如果任务只需一条支持证据,可计算其召回与排名;如果结论需要多个条件,就需要检查整个必要集合。生产系统还要看资料版本、权限、片段正文与引用绑定。只比较字符串标识不能证明内容完整或语义充分。
运行实验,观察反例
固定证据标识列表的管线诊断;不执行向量检索、真实重排、语言模型或语义裁判。
Python 3.10+ · 默认运行只使用标准库 · 在你的电脑运行
- 核对 necessary evidence 的两块材料
- 运行上下文缺失反例
- 分别改变候选与回答支持条件
python3 rag_evidence.py查看本入口脚本
"""Trace evidence survival through fixed lists; no search or LLM is executed."""
import json
def diagnose(required, candidates, ranked, context, supported_claims):
if not required.issubset(set(candidates)):
return "retrieval"
if not required.issubset(set(ranked)):
return "ranking"
if not required.issubset(set(context)):
return "context"
if not supported_claims:
return "generation"
return "supported"
def demo():
required = {"policy-current", "policy-exception"}
candidates = ["old-policy", "policy-current", "policy-exception"]
ranked = ["policy-current", "policy-exception", "old-policy"]
stage = diagnose(required, candidates, ranked, ranked[:1], True)
fixed = diagnose(required, candidates, ranked, ranked[:2], True)
assert stage == "context" and fixed == "supported"
return dict(first_failure=stage, fixed_evidence_check=fixed,
generation_still_needs_review=True)
if __name__ == "__main__":
print(json.dumps(demo(), sort_keys=True))
本地运行的预期输出
{"first_failure": "context", "fixed_evidence_check": "supported", "generation_still_needs_review": true}- 定位最早证据缺口
- 集合检查与语义检查分开
- 最终修复需核对真实结论
本层验收任务
运行 rag_evidence.py,然后从 candidates 删除例外,最后保持证据齐全但将 supported_claims 改为 False。
完成后逐条核对
- 原始实验 first_failure 为 context
- 删除候选证据后定位为 retrieval
- 证据完整但结论不支持时定位为 generation
保存自己的过程、代码与结果。这里提供验收要求,暂不自动评分或保存课程掌握状态。
收起答案,检查理解
实验返回 supported,是否证明真实 RAG 的回答已经正确?
展开参考推导
没有。它只校验教学标识集合和给定布尔条件;真实回答要逐项核对正文、条件、引用与结论。
延伸原理与知识练习
遇到不熟悉的原理,先阅读实现、连续追问和迁移案例,再独立说明前提与边界。作答与笔记保存到原有账号记录。
本专题的全部关联解析与练习(4 道)
依据与验证范围
原理依据来自公开资料;数字、案例和任务是本站教学设计。离线实验验证本页注明的范围,学习效果仍需通过独立任务与反馈判断。