检索常命中投标人照抄要求原文的那一格,响应和偏离写在同一行的别的格里,模型看不到。现在候选句在表格里 时,把同一行(同一页、上下范围重叠)的单元格一起交给模型,也可以引用;v2 说明怎么读一行。 开发集 17 份上查标召回 30% → 50%,带标志词的问题 2% → 54%,规矩投标文件上的误报略降,输入 token +44%; 漏响应和响应对象错位变差,下一轮看(docs/architecture/check-eval.md §3)。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
111 lines
12 KiB
Markdown
111 lines
12 KiB
Markdown
# 查标评测(2026-11-04 起)
|
||
|
||
> 评测集规范:`evals/check/GUIDELINES.md`;工具:`evals/check/`;数据和输出在 `evals/out/check/`(不进 git)。
|
||
> **读数的前提**:金标准由 Fable 复核、用户抽查 20%(决策 E1),未经全部人工复核;本文的数字都是**开发集**上的,只用于找问题、调实现,不能当效果证据。头条效果以留出集(风格 C)和真实国动投标文件为准,第 3 步冻结代码后才跑。
|
||
|
||
## 1. 试跑(第 0 步,2026-11-04)
|
||
|
||
**范围**:开发集 S02、S04、S10 各两份投标文件(规矩 + 马虎),都是风格 A(风格 B 的改写还没做)。查标代码是第 1 步的版本:响应匹配只有「检索 + 模型判断」,规则检查还没有。模型 DeepSeek Flash,提示词 `check.match` v1。
|
||
|
||
**复核**:马虎的投标文件共注入 82 个要求项问题,Fable 复核通过 70 个、不通过 12 个(S02 10 个:默认接受的文件里注入了漏响应、「暂不支持」套在尺寸和费用这类参数上、要求本身是可选项等)。下面只算通过的。用户抽查 17 条(随机 20%,含 Fable 判不通过的 4 条),**全部同意**(2026-11-04)。
|
||
|
||
### 1.1 结果
|
||
|
||
| 投标文件 | 清单条数 | 报出问题 | 查标召回 | 致命级召回 | 规矩响应的要求上误报 | 不需要响应的条目上报了问题 |
|
||
|---|---|---|---|---|---|---|
|
||
| S02 规矩 | 248 | 104 | — | — | 21 / 56 | 39 |
|
||
| S02 马虎 | 248 | 117 | 8 / 16(50%) | 2 / 7 | | |
|
||
| S04 规矩 | 264 | 90 | — | — | 11 / 111 | 52 |
|
||
| S04 马虎 | 264 | 110 | 11 / 28(39%) | 1 / 4 | | |
|
||
| S10 规矩 | 305 | 122 | — | — | 6 / 39 | 75 |
|
||
| S10 马虎 | 305 | 142 | 5 / 20(25%) | — | | |
|
||
|
||
- 合计查标召回 24 / 64(38%)。只检索不调模型的基线召回 0:基线把检索到的第一句都当作已响应,说明现在查出的问题来自模型判断,不是检索。
|
||
- 按问题类型:漏响应(D01)9 / 14 较好;写明不支持(D05)5 / 20、负偏离未说明(D06)0 / 7、响应对象错位(D09)0 / 4 很差。
|
||
- 每次检查调用模型 31~39 次,输入约 9~11.5 万 token、输出约 1.5~1.7 万 token(约一两毛钱)。
|
||
|
||
### 1.2 问题出在哪里
|
||
|
||
1. **不需要投标人响应的条目也被报了「未找到响应」**:三份规矩的投标文件报了 316 个问题,166 个落在根本不需要响应的条目上(无效情形的列举、日期、采购人义务、别的采购包),这是误报的大头。→ C12 的响应方式抽取,加上「这条要不要投标人回答」的判断和按所投采购包过滤(第 2、3 步)。
|
||
2. **表格里的「暂不支持」「负偏离」看不见**:表格按单元格切句,检索命中的是投标人照抄要求原文的那一格,同一行里写着「暂不支持」「负偏离」的格子不在模型的输入里。→ 第 3 步把整行交给模型(偏离表直取也是这个思路)。
|
||
3. **证明材料和格式文件找不到**:规矩响应的要求上的误报,主要是证明材料(扫描件页没有文字层)和格式文件(声明函、承诺书)报了「未找到响应」,以及让投标人「见附件」的要求被报成「未给出具体值」。→ C10 扫描件兜底;文件要在(presence)的要求按文件在不在判断,不逐条找响应。
|
||
4. **级别口径**:S02 的 ★ 是「核心技术参数,负偏离扣分」,不是投标无效条款;标注集记成实质性条款,查标按致命报和真实评审不一致。→ 级别要跟着招标文件对 ★ 的定义走(读标口径 Q2 已有,查标沿用)。
|
||
|
||
### 1.3 评测集自身的问题(已修 / 待修)
|
||
|
||
| 问题 | 状态 |
|
||
|---|---|
|
||
| 分项报价平均摊,一项超过单价上限,规矩的投标文件自带致命问题(S10) | 已修:按分项上限比例分摊 |
|
||
| 偏离表有「设备名称」列,按固定列写会错位(S04) | 已修:按表头决定列 |
|
||
| 写死的落款日期晚于投标截止日(S04) | 已修:取截止日前 3 天 |
|
||
| 同一参数列在两张表里,只删一张表的行不算漏响应(S04) | 已修:漏响应在所有表里都删 |
|
||
| 符合性条件响应表的一格被算成 11 个问题 | 已修:按表级问题记一个 |
|
||
| 标注集同一要求有两个单元(两个类别、或表格一行拆成几条),一个问题算两次 | 已修:评分按句子重叠合并 |
|
||
| 「暂不支持」套在尺寸、费用、打印方式这类参数上,不像真实写法 | 待修:按参数类型选注入方式 |
|
||
| 默认接受的文件里注入漏响应(S02 另加了一张逐条的技术规格表,脚本推响应方式时被它带偏) | 待修:响应方式以档案的 modes 为准,不从表格推 |
|
||
| 「提供某文件」类要求被当成参数注入偏离 | 待修:推响应方式时识别 presence |
|
||
| 风格 B 的改写(截断、同义替换、只写值)还没做;所有数字都是风格 A 的 | 待做 |
|
||
|
||
## 2. 开发集第一版(2026-11-04)
|
||
|
||
**范围**:开发集 7 份招标文件各两份投标文件,共 14 份:S02、S05、S08、S10 是 A 规矩 + B 马虎,S01、S04、S07 是 B 规矩 + A 马虎(GUIDELINES §4)。生成器修了试跑的待修项(「暂不支持」不再套在数值参数上、表格响应方式以档案为准、「提供……文件」不注入参数类问题),风格 B 由模型改写、数字对不上的改写丢弃。查标代码仍是第 1 步的版本。
|
||
|
||
**复核**:注入的要求项问题两批共 222 个,Fable 复核通过 188 个。第二批 140 个里不通过 22 个,其中 14 个在 S07:S07 须知要求逐条标明,格式注又写未列入视作接受,且只有 ★ 项写明未响应无效,非 ★ 参数删一行算不算问题拿不准,金标准从严不算(查标侧仍按 C12 取更严的逐条)。用户抽查第一批 17 条全部同意;第二批抽查 28 条(含 Fable 判不通过的 4 条)也**全部同意**。两批合计抽查 45 条,和 Fable 的判断一致。
|
||
|
||
### 2.1 结果
|
||
|
||
| 指标 | 结果 |
|
||
|---|---|
|
||
| 查标召回(复核通过的问题) | 51 / 128(40%);风格 A 25 / 70(36%),风格 B 26 / 58(45%) |
|
||
| 端到端召回(含读标漏抽) | 51 / 132(39%) |
|
||
| 致命级召回 | 18 / 37(49%) |
|
||
| 不带标志词 / 带标志词 | 40 / 81(49%)/ 11 / 51(22%) |
|
||
| 连续一段 / 单点 | 7 / 12(58%)/ 44 / 120(37%) |
|
||
| 规矩的投标文件报出的问题 | 清单 2049 条,报出 699 个 |
|
||
| 其中规矩响应的要求上的误报 | 153 / 620(每 100 条 24.7) |
|
||
| 其中不需要响应的要求上报的 | 334 个(占 48%) |
|
||
| 干扰项误报 | 默认接受的要求没复述(T06)39,改写后的要求(T02)20,响应写在别的分册(T01)3 |
|
||
| 费用 | 14 次检查输入 150 万 token、输出 25 万 token |
|
||
|
||
按问题类型:资格证明缺失(D11)9 / 14、评分材料缺失(D13)9 / 12、漏响应(D01)15 / 23 较好;负偏离未说明(D06)0 / 20、响应对象错位(D09)1 / 14、证明材料缺失(D02)2 / 9、写明不支持(D05)11 / 31 很差。
|
||
|
||
### 2.2 读法
|
||
|
||
- **试跑的四个判断都成立,而且更清楚了**:「带标志词」的问题(写明不支持、负偏离)召回只有 22%,比不带的还低,正是表格里同一行的响应格、偏离格不在模型输入里;风格 B 反而比 A 高,因为 A 照抄要求原文,检索更容易命中照抄的那一格。规矩的投标文件上近一半的问题落在不需要响应的要求上,默认接受的要求被报了 39 次。
|
||
- **第 2、3 步按这个顺序改收益最大**:① 整行上下文 / 偏离表直取(直接对应 D05、D06、D09,51 个问题里的 45 个);② 响应方式和「这条要不要投标人回答」(C12,对应 334 + 39 个误报);③ 扫描件兜底和 presence 判断(证明材料、格式文件类误报)。
|
||
|
||
### 2.3 评测集还要改的
|
||
|
||
| 问题 | 状态 |
|
||
|---|---|
|
||
| 「暂不支持」「可选配置」仍会套在证书、供货清单、服务义务、文档交付这类非功能要求上(两批共 12 条被复核拒掉) | 待修:注入前按「功能类要求」过滤 |
|
||
| 同一要求被两个标注单元挂了同一个问题(实质性 + 技术参数、资格 + 符合性,第二批约 20 对);「第二十二条总述」这类伞状单元和具体条目不重叠 | 待修:注入前按 anchor 重叠合并标注单元;伞状单元不挂问题 |
|
||
| 条件性要求(「如依法免税则须提供」)被当作必须提供的材料挂 D11 | 待修:按投标人情况排除 |
|
||
| 低密度(每份 5~8 个问题)的投标文件还没做 | 待做:选 3 份 |
|
||
|
||
## 3. 第一轮改进:整行上下文(2026-11-04)
|
||
|
||
**改了什么**:候选句在表格里时,把同一行的单元格一起交给模型,也可以引用(`check/match.py`);提示词 `check.match` v2 说明怎么读一行(要求格 / 响应格 / 偏离格)。对应 §2.2 的第 ① 项。v2 的规则写法避开了开发集注入词库里的说法(重合的只有「负偏离」「完全响应」,是招标文件格式自带的用语)。
|
||
|
||
**评测集同时修了 §2.3 的前三项**(「暂不支持」只套功能类要求、伞状单元和条件性要求不挂问题),7 份马虎的投标文件用原来的种子重新生成,另加 3 份低密度的,共 17 份。新目标 55 个由 Fable 复核(通过 54 个),用户抽查 11 个全部同意(三批合计抽查 56 个,全部同意)。因为注入的问题换了一批(「负偏离未说明」多了、「暂不支持」少了),下表的「旧做法」要和同一批投标文件比,不能和 §2 的数字直接比。
|
||
|
||
| 指标(17 份,复核通过的问题) | 旧做法(v1、不带整行) | 新做法(v2 + 整行) |
|
||
|---|---|---|
|
||
| 查标召回 | 43 / 145(30%) | **73 / 145(50%)** |
|
||
| 致命级召回 | 9 / 31(29%) | **15 / 31(48%)** |
|
||
| 带标志词 | 1 / 65(2%) | **35 / 65(54%)** |
|
||
| 负偏离未说明 D06 / 写明不支持 D05 / 数值不满足 D03 | 0 / 58、1 / 7、3 / 7 | 28 / 58、7 / 7、6 / 7 |
|
||
| 漏响应 D01 / 响应对象错位 D09 | 18 / 27、3 / 14 | **14 / 27、0 / 14**(变差) |
|
||
| 规矩的投标文件报出的问题 | 699 | 639 |
|
||
| 规矩响应的要求上的误报 | 153 / 620(24.7 / 100) | 132 / 620(21.3 / 100) |
|
||
| 不需要响应的要求上报的问题 | 334 | 329 |
|
||
| 输入 / 输出 token | 189 万 / 32 万 | 273 万 / 28 万 |
|
||
|
||
**读法**:整行上下文解决了「看不见响应格、偏离格」的问题,带标志词的问题从几乎查不出到过半;误报略降。代价是输入 token 多 44%。**两处变差**:漏响应(D01)和响应对象错位(D09)。推测是同一行或相邻行的内容让模型更容易「找到点什么就判已响应」:漏掉的那一行不在了,检索命中的是相邻要求的行;错位的那一行响应格写的是另一条参数,模型没比对参数名。下一轮在提示词里要求先核对响应格说的是不是同一个参数 / 设备,并单独看 D01、D09 的漏报明细。不需要响应的要求上的误报(329)没有变化,要靠第 ② 项(C12)。
|
||
|
||
## 4. 下一步
|
||
|
||
1. 看 D01、D09 的漏报明细,改提示词(v3):先核对响应格说的是不是同一个参数 / 设备。
|
||
2. 第 2 步(投标侧结构识别、规则、C12 响应方式抽取)和第 3 步(整行上下文、偏离表直取、presence 判断)按 §2.2 的顺序改,每改一轮在开发集 14 份上重跑对比。
|
||
3. 留出集(S03、S06、S09,风格 B + C,封存的词库)和真实国动投标文件,在第 3 步冻结代码后只跑一次。
|