用单文件 Python 对比 RAG 改动效果
教程用纯 Python 构建单文件评估脚本,通过 20 道 JSONL 标准题记录回答,并比较修改前后的结果。检查涵盖事实匹配、禁用短语和来源引用,也可加入模型评审,生成适合附在 PR 中的差异报告。
原文暂未完整获取,基于公开信息的快读
改完 RAG 机器人的 system prompt,怎样判断回答有没有退步?dev.to 的这篇教程给出了一套轻量做法:用单文件 Python 脚本跑 20 道 JSONL 标准题,保存改动前后的回答,再生成能贴进 PR 的逐题差异报告。重点是让提示词修改有可核对的回归记录。
目前能确认什么
教程把流程拆成标准题集、请求执行器、确定性检查、可选模型评审和差异报告。标准题应覆盖常见问题、拒答场景、过时信息陷阱,以及用户不规范的问法;作者强调,要和负责业务内容的人一起确定答案。
检查规则很直接:预期事实按字符串匹配,命中禁用短语则整题记零分,来源检查核对返回的 sources 是否包含指定文档 ID。未填写的检查字段会跳过。
这里的分数衡量的是预设检查项通过比例,不能直接当作回答正确率。
模型评审用于补充字符串检查难以判断的完整性、礼貌等问题。节选中的机器人调用和评审调用都是占位函数,接入自己的服务仍需实现。
我的判断
这套方法适合先守住明确的业务底线。例如修改提示词后,退款期限有没有漏掉,已下线功能是否又被承诺,预期来源是否仍然返回。逐题差异比只看平均分更方便定位退步。
但字面匹配存在盲区:同义表达可能被判遗漏,包含关键词的错误回答也可能过关。返回了指定来源 ID,也不能证明该文档支持回答中的每项主张。
它能作为提示词改动的回归门槛,覆盖范围取决于题集和检查规则。
目前节选未展示完整执行器、差异报告和模型评审实现,如何处理请求失败、回答波动,以及如何标记人工复核,仍不清楚。若检索数据或模型同时变化,也不能仅凭两次分数差异,把效果归因于提示词。