评测要先隔离被测层:外部依赖可控、模型调用真实
一、隔离的是「不确定的那一段」
评测对象是 Agent + 工具使用规则,不是搜索服务的召回能力。所以:
- 替换:真实搜索 → 测试版工具,按用例编号返回准备好的内容;
- 保留:模型调用、工具调用决策、回答生成、完整调用链。
调用链固定为:输入题目 → Agent 决定是否调工具 → 工具返回指定结果 → Agent 给出答案与解析 → 保存完整过程。
这样单独检验的是「拿到结果之后如何使用」,暂不评价召回。
二、构造情形要覆盖「像但不对」
围绕同一个失效假设(相似题答案被误用),每道题配五种返回,覆盖从正常到冲突的梯度:
| 检索情形 | 构造方式 | 观察重点 |
|---|---|---|
| 原题命中 | 返回同一道题及正确答案、解析 | 改进策略是否影响正常答疑 |
| 选项重排 | 题干相同、打乱选项顺序,返回原选项字母 | 是否照抄答案字母 |
| 条件变化 | 改一个影响答案的数字或约束,返回改后的题与答案 | 是否把相似题当原题 |
| 无结果 | 返回 found=false | 是否能独立解题 |
| 答案冲突 | 题干相同,但答案与解析结论互相矛盾 | 是否检查依据一致性 |
三、三条执行纪律
- 只改一处:B 方案相对 A 只增加「检索结果使用前校验」,其余提示词与配置保持一致。不同时改模型、讲解风格、记忆机制 —— 否则判断不出效果来自哪项改动。
- 不向 Agent 暴露用例标签:标签(如「这是条件变化用例」)只存在于测试编排里,泄露就等于给答案。
- 未调用工具也要记录:Agent 根本没调工具,说明调用策略本身有问题,属于有效结果,不是无效样本。
四、构造数据必须标注来源
人为改写的检索结果要标为「构造测试数据」,不能称作线上真实错误。 判据:证据的强度取决于它是怎么来的;把构造样本说成真实缺陷,结论会被高估。
同一条纪律还管到「谁提供的数据」:评测集若由他人(如测试同学)提供, 贡献就只能写成执行评测与问题定位,不能写成「我构建了评测集」—— 数据来源决定了哪部分能算你的成果。
五、隔离出来的层要显式声明边界
替换掉真实检索后,结论只覆盖「拿到结果之后如何使用」这一层。 所以:不能因为跑通了实验,就说优化了真实检索系统; 涉及召回率/覆盖率的问题(库里有没有、找不找得到)属于被替换掉的那一层,不在结论范围内。
相关
- 对照才产生信息 —— A/B 两方案跑同一批用例,差异才有意义
- 判据要用真值而非代理 —— 用「构造数据可控」换掉真实召回的不可控,是在为归因排除代理噪声
- 测试策略 —— 本页是「集成/评测」侧的方法:先隔离出要测的那一层,再串回真实链路
- 相似度分数不等于答案可用 —— 检索结果可控之后,判据本身也要选对
- 评测规模要与结论的推广范围匹配 —— 本页是「受控小样本」,那条讲它的边界与升级到真实链路的路径