RAG 引用排错实测:同一个问题为什么检索到旧版规则
用九份公开合成资料运行八个检索问题,保留新旧版、发票例外和角色差异的实际结果,并另外检查六组引用;附可复做的 Python 程序与完整数据。
怎么判断?
检索到一段相关文字,还要检查它是否仍然有效。本站用九份虚构资料运行了八个检索问题:无过滤对照有三项符合预设,加入资料有效期等过滤后八项符合预设。另做的六组引用核对中,正确来源被接受,五种错误被拒绝。本次只测检索与引用核对组件,没有运行语言模型,结果不能当作完整 RAG 的回答准确率。
这次把什么材料放进检索器
SampleNote 是本次专门编写的虚构服务。普通记录的保留期先后为三十天、十四天和七天,七天版本要到二〇二七年才生效;发票有单独规则。资料还放入了另一产品的相似说明。完整材料在 protocol.json 中公开,不涉及实际客户或任何公司的内部政策。
八个问题都预先写明产品与查询日期。记录类型和角色也由样本提供,程序没有从自然语言里猜出这些条件。资料有效期采用左闭右开区间:开始日可用,截止日不可用。这样可以明确检查同一问题在历史日期与未来日期应该引用哪份材料。
不筛选资料时旧版也会排在前面
对照程序把问题和正文拆成英文词项,按重合数量排序;分数相同就保留文件顺序。它没有使用向量,也不判断哪份规则仍然有效。当前普通记录的问题因此取到了旧版三十天,而要求查询历史规则的问题恰好答对。只把所有资料改成最新版本,会丢掉历史查询需要的依据。
过滤版本先按样本条件排除不适用的资料,再用同一个词项排序。普通记录不会借用发票例外,公开用户也不会取到仅对 staff 角色提供的批量上限。下表是这八次执行的实际输出;资料顺序特意保留了故障条件,三比八不能代表真实知识库的平均表现。
| 问题条件 | 应取结果 | 无过滤对照 | 过滤后实际结果 |
|---|---|---|---|
| 当前普通记录 | 14 天 | 30 天 | 14 天 |
| 历史普通记录 | 30 天 | 30 天 | 30 天 |
| 当前发票例外 | 90 天 | 60 天 | 90 天 |
| 公开用户导出 | 100 条记录 | 5000 条记录 | 100 条记录 |
| staff 角色导出 | 5000 条记录 | 5000 条记录 | 5000 条记录 |
| 资料没有 SAML 答案 | 无可用资料 | 返回 CSV 导出格式 | 无可用资料 |
| 另一产品的规则 | 14 天 | 14 天 | 14 天 |
| 未来普通记录 | 7 天 | 30 天 | 7 天 |
引用存在还要核对它支持的内容
本次又给核对程序六组候选引用。只有当前有效来源、原文片段与受控字段一致的那组被接受。引用旧文件、改写数字或使用不存在的来源,都会得到明确的拒绝原因。完整 JSON 同时保留预期判断与实际判断,不能只凭网页上出现了来源链接就认定内容已经核实。
这里的 claim_key 和 claim_value 是样本中已经定义的字段。程序可以检查十四天是否被换成四十一天,也能检查引号里的片段是否逐字存在;它没有理解任意改写后的句子。Microsoft 的 RAG 评估说明也把检索过程检查与生成回答检查分开,本次结果只属于前者及有限的引用字段核对。
| 候选引用 | 实际处理 |
|---|---|
| 当前来源、原文与字段一致 | 接受 |
| 引用片段被改成 41 天 | 拒绝:片段不在原文 |
| 片段未改,字段值改成 41 天 | 拒绝:字段值不一致 |
| 引用已失效的旧版资料 | 拒绝:来源不适用 |
| 公开用户引用 staff 资料 | 拒绝:来源不适用 |
| 引用不存在的来源编号 | 拒绝:找不到来源 |
下载资料后可以怎样复做检查
下载完整资料包并解压,进入 rag-citation 目录后执行下面的命令。脚本只需要 Python 标准库,不会发起网络请求。它会重新运行八个问题和六组引用,并保存逐项结果。对照程序有预期中的失败,不会因此让整次复做失败;过滤版本或引用核对出现偏差,程序才返回非零退出码。
结果中的执行时间会随复做变化,Python 版本也可能不同。比较时应看每项预期与实际结果,而不是要求整个结果文件的哈希相同。协议与程序各有 SHA-256,修改材料后应保留新的版本,避免把新结果误写成原样本的重复验证。
python3 run_rag_checks.py --output reproduced-results.json小样本通过后仍需补哪些检查
角色在这组程序里只是一个输入字符串,未连接真实身份系统。部署知识库时,不能让用户任意声明自己是 staff,再把这个字符串当作授权结果。Microsoft 的文档级访问控制说明讨论了查询时的身份与权限检查;本次只复现了按权限字段过滤的组件行为。
同义词检索和中文切词都没有进入这次程序。接入实际模型后,还要检查回答里有没有保留发票例外;资料不足时的生成行为也需另做测试。先用这组材料检查候选来源,能帮助定位问题在哪一步;八项通过不表示完整系统已经适合处理业务资料。
核对来源
以下链接支持文中的项目描述或事件事实。本站判断由编辑撰写,未把来源中的主张当作本站实测结论。