
现场再问几道题,能发现问题,却很难直接比较两个版本。有人换了文档,有人改了问题,还有人只展示成功结果,最后的分数就失去了共同分母。联合验收需要一份双方都能重新运行和解释的材料包。
冻结的是测试条件,不是禁止发现新问题
材料包应包含资料版本与权限范围、问题ID、参考答案或预期行为、检索配置、模型标识、提示词与评分规则,以及执行环境。新发现的问题进入单独记录,决定补测或纳入下个版本,而不是悄悄替换旧样本。

图中的箭头是材料组汇总示意,左侧四类材料均需纳入,不能只打包问题与评分规则。
排序指标需要明确标注与理想排序,忠实度则需要保留生成时可见的上下文。只保存最终分数,无法辨别是检索、生成还是资料出了问题。NDCG定义 Faithfulness定义
内容指纹帮我们发现材料变化
下面把教学配置与样本编码为稳定JSON,再计算SHA-256。改一个模型标识或问题都会改变指纹。哈希用于检测变化,不证明资料真实,也不代替签名、权限与原文件保管。
import json
from hashlib import sha256
bundle = {"model": "teaching-model-v1", "retrieval_k": 3,
"cases": [{"id": "q1", "question": "Which policy applies?",
"expected": "resolve version", "source_hash": "demo-only"}]}
def fingerprint(x):
raw = json.dumps(x, sort_keys=True, ensure_ascii=False, separators=(",", ":"))
return sha256(raw.encode()).hexdigest()
first = fingerprint(bundle)
changed = dict(bundle, model="teaching-model-v2")
assert first == fingerprint(json.loads(json.dumps(bundle)))
assert first != fingerprint(changed)
print("teaching bundle fingerprint", first)
真正的材料包应对每份文档分别记录文件指纹,再把清单纳入总指纹。敏感原文不宜随报告公开;可在授权环境中保留,向复核人员提供受控访问。
分母里要留下失败
| 结果 | 应怎样记录 |
|---|---|
| 正常完成 | 答案、引用、检索上下文与耗时 |
| 无证据拒答 | 预期是否应该拒答 |
| 解析失败 | 原响应、解析错误与重试 |
| 超时或依赖异常 | 阶段、时长与未完成状态 |
| 权限拒绝 | 是否正确拒绝,工具是否执行 |
样本不足或标注争议要在报告中显示,不能用删除困难题提升总分。双人复核分歧时,先保存各自理由,再由资料责任人确认;不要让更熟练操作界面的一方自动成为事实裁判。
本文没有连接RAG服务或真实业务资料,指纹例子只验证材料变化可被发现。联合验收追求的是双方能复查相同证据,而不是让任何一方“挑不出瑕疵”。
本文探讨RAG系统联合验收中保障结果可复现的关键方法:冻结测试条件(含资料版本、问题ID、检索配置、模型标识、提示词与评分规则),使用内容指纹(SHA-256)检测材料变更,确保每份文档独立哈希并纳入总指纹;强调保留失败样本以维持评估分母一致性,避免选择性剔除影响公正性。核心目标是支持双方在相同证据基础上独立复核。

371

被折叠的 条评论
为什么被折叠?



