1项目设计
1.1 研究问题
项目要回答的核心问题来自 RSI(递归自我改进)研究框架:不直接给模型人工整理好的答案或知识,只提供有限的开发反馈(以逐题对错为主),看模型能否自主发现自己的能力缺口、从未标注的原始语料中构造出可用的学习材料,并让下一代模型在同样的任务上做得更好。为此,数据侧在项目早期就做了隔离设计:训练语料、反馈集、选择集、测试集相互分离,另外保留一条「新专利迁移」轨道——训练与开发来源分离、评测时才提供新专利原文——避免在封闭知识库上反复循环验证。外环训练尚未启动,当前阶段的全部精力在内环的评测与自主建库上。
1.2 四种证据条件
同一套 4,200 道题在四种证据条件下评测,四组共用相同的题目、评分规则与单题预算,唯一的变量是模型在答题时能拿到什么:
| 条件 | 模型拿到什么 | 这一组回答什么问题 |
|---|---|---|
| 裸模型 | 只有题面。单次调用,不给语料、工具或标准答案。 | 量化检索与工具到底带来多少增益。2B 全量 5.24% 主要不是截断造成的(4,200 题中只有 143 题触及 4,096 token 生成上限)。 |
| 原始语料 | USPTO 专利 HTML 与 PubChem 记录所在的目录路径和格式说明,模型自己写检索程序。 | 衡量「有资料、无结构」时的表现。常见失败不是找不到文件,而是找到目标文件后没有截到答案片段。 |
| 人工知识库 | 结构化 TSV 表(compounds_gold.tsv、reactions.tsv)的路径与表头,模型自主查表、写程序、计算并作答。 | 结构化知识的价值上限。9B 达到 92.00%,是当前所有条件中最高分,也是自建知识库要追赶的参照。 |
| 自建知识库 | 只有原始语料和一段简短英文指令。模型自己设计表格结构、写抽取程序、自检修复,产物再用于同一套评测。 | 项目真正的目标:在同样的 4,200 题上超过原始语料条件。目前 621 题子集为 64.9%,全量尚未跑完。 |
1.3 评测协议
- 题目构成:4,200 题 = 七个任务 × 600 题,每个任务内 IUPAC 名称输入与 SMILES 输入各 300 题。七个任务为:反应条件预测、分子量、分子描述、名称转换、产物预测、反应物预测、溶剂预测。(数据集共八类 QA,正式评测取其中七类。)每道题的答案必须同时能在知识库与原始语料中找到,保证四个条件理论上都做得出。
- 评分规则:名称与描述要求匹配记录文本;数值要求精确;SMILES 按规范化结构比较;分子描述包含词面评分(exact / F1)。所有失败、超时、预算耗尽一律计入分母,不做剔除。
- 单题预算:整题 360 秒;上下文窗口 32,768 token;单次生成上限 4,096 token;上下文压缩摘要最多 2,048 token;Bash 单次输出上限 16,000 字符。
- 执行框架:三个工具组条件接入官方 DeepSeek Harness 与已披露的 Qwen 兼容层,由模型自主决定调用工具;裸模型组刻意不使用工具。
- 冻结:数据、prompt、Harness 适配、参数与评分规则已于 11 月 9 日冻结为
chemdecision-baseline-v1.0.0,冻结前通过 11 项回归检查。此后所有新实验(包括自建 KB)沿用同一协议,保证与基线可比。
2当前结果
2.1 全量基线矩阵
三个模型 × 三种证据条件的全量评测已完成并评分,合计 25,200 次(4B 与 9B 各 12,600 次、2B 12,600 次),最终对比报告生成于 2026-11-09 03:35。每个数字都能回查到逐题的 scored.jsonl 与执行轨迹:
| 模型 | 裸模型 | 原始语料 + 工具 | 人工 KB + 工具 | 状态备注 |
|---|---|---|---|---|
| Qwen3.5 2B | 5.24% | 15.17% | 22.33% | 已完成;4090 补跑 71 题后为 22.62%,因换机与 vLLM 版本不同分开记录 |
| Qwen3.5 4B | 11.10% | 25.93% | 69.69% | 已完成,含 982 题预算耗尽或超时 |
| Qwen3.5 9B | 13.60% | 46.71% | 92.00% | 已完成;逐任务分数见第 3 节比较器 |
增益并非在所有任务上都为正,这一点在汇报时容易丢掉。溶剂预测上裸模型反而更高:4B 为 48.83%(人工 KB 条件只有 8.00%),9B 为 53.00% 对 47.67%——模型已有的先验足以覆盖这个任务,结构化证据反而带来干扰。4B 的分子量(原始语料 73.83% 对人工 KB 61.67%)与名称转换(58.83% 对 45.67%)也是原始语料更好,说明小模型在有工具时的查表与计算流程还不稳定。分子描述任务上两个模型的裸模型组都是 0 分,这是严格词面评分的结果:不给资料时模型写出的描述几乎不可能与记录文本匹配。
2.2 自建知识库的第一个子集
9B 用自主构建的知识库跑全量评测,进行到 621/4,200 时因 worker 停跑暂停。在这已落盘的 621 题上,同一批 QA ID 可以与人工 KB 的历史结果直接对齐:
| 任务 | 题数 | 自建 KB 正确 | 人工 KB 正确 | 自建相对差距 |
|---|---|---|---|---|
| 分子描述 | 85 | 41 | 84 | −50.6 pp |
| 反应物预测 | 78 | 26 | 68 | −53.8 pp |
| 产物预测 | 91 | 46 | 86 | −44.0 pp |
| 溶剂预测 | 95 | 71 | 87 | −16.8 pp |
| 反应条件 | 88 | 67 | 80 | −14.8 pp |
| 名称转换 | 95 | 69 | 83 | −14.7 pp |
| 分子量 | 89 | 83 | 81 | +2.2 pp |
| 合计 | 621 | 403(64.9%) | 569(91.6%) | −26.7 pp |
同一批题上原始语料条件为 286/621(46.1%),所以自建知识库已经明确超过「直接用原始语料」的条件——这是项目目标的前半段。后半段的差距结构也很清楚:人工独对的 192 题里,68 题耗尽预算、54 题超时、70 题正常答完但判错;分子描述、反应物、产物三项合计净少 125 题,占总差 166 题的 75%。这三项恰恰是最需要显式反应角色与结构字段的任务,而自建 KB 的专利侧目前只是段落索引。分子量是唯一反超的任务(83/89 对 81/89),它本质上可以由确定性计算补足,模型写出正确的计算程序后不依赖人工整理。另外建库早期还有一个 14 题小样本:自建 8/14,原文 5/14,人工 14/14——这是正向信号,不是结论。
3逐任务配对比较
总分差一个数字会掩盖任务之间的巨大差异。下面的比较器把两种证据条件按同一批 QA ID 重新对齐(只统计两边都完成的题),逐任务展示正确率与净差。切换模型和左右条件,数字会按同一批题重新计算。净差按同题正确数之差除以 4,200 计算,逐任务除以 600;「仅左 / 仅右答对」的题数来自同题配对表。
同题配对 · 每任务 600 题 · 深色为左侧条件
综合 92.00% 对 46.71%,净差 +45.29 个百分点。仅左侧答对 2,024 题,仅右侧答对 122 题。
选择要对齐的两组
左侧条件
右侧条件
2B 只有全量总分,没有纳入这个比较器。自建 KB 只有 621 题子集,口径不同,不与这里的全量数字混算(见 2.2 节)。配对数据来自 RESULTS_ZH.md 的同题配对表。
最值得反复看的是分子描述、产物预测、反应物预测三项:9B 在这三项上人工 KB 比原始语料分别高出 68.67、69.00、68.33 个百分点——结构化知识的价值几乎全部集中在这里。切换到 4B 再看同一组,产物与反应物上的增益更大,但分子量与名称转换的差值会变成负数;把右侧换成裸模型则可以看到,原始语料条件的增益里相当一部分来自「记住常见溶剂」这类先验而不是真的查到了证据(溶剂任务上裸模型 48.83% 已经超过原始语料条件的 8.00%)。
4数据样例
题目、知识库、原始语料三者必须互相可追溯:每条 QA 都能定位到知识库中的字段,再回到专利原文与证据位置。这是四种条件可比的前提。
4.1 题面长什么样
qa_type: condition_prediction
input_type: name / smiles(每个任务各 300 题)
- 条件题例:「某专利某段程序明确报告的 work-up pH 是多少?」原文片段先写「甲醛溶液调至 pH 7.5」,随后制备中间体,再进行「150°C 成膜处理」。这类题考的是实验阶段消歧——同一片段里有多个数字,只有对应阶段里明确报告的才是答案,不是把附近所有数字抄进答案。
- 溶剂题例:「甲醇用于反应,碳酸氢钠溶液和盐水用于后处理。哪个是反应溶剂?」考查反应角色区分,模型需要理解三种液体各自出现在程序的哪个阶段。
- 分子量题例:「2-oxopropane-1-sulfonyl chloride 的 PubChem 平均分子量取整数部分。」答案是一个可以从结构式计算的确定数值。
4.2 原始语料与知识库的规模
| 目录 | 数量 |
|---|---|
| /data/patents/*.html(USPTO 专利全文) | 5,606 |
| /data/pubchem/*.xml(分子记录) | 8,082 |
| /data/pubchem/*.json(分子记录) | 7,385 |
| 表 | 行数 |
|---|---|
| all_qa_pairs.clean.csv | 4,800 |
| compounds_gold.tsv | 38,507 |
| reactions.tsv | 23,107 |
| 字段 | 非空率 | 说明 |
|---|---|---|
| 分子量 | 99.98% | |
| SMILES | 88.7% | |
| 催化剂 | 25.6% | 空值可能是专利本身未报告,不等于缺采 |
| 描述 | 12.1% | 非空不等于已确认正确 |
数据质量的现状要如实交代:v11 通过的是结构与引用检查(无重复 prompt、无缺失 ID 引用、QA / OOC 实体重叠已核查),但 2,400 条产物 / 反应物 / 催化剂 / 溶剂 QA 行尚未全部完成源级语义复核;1,710 条 OPSIN 名称与结构的分歧仍是候选问题而非确认错误;gold 里仍然存在缺失分子结构。所以不能把整个人工 KB 描述成「结构完整、化学认证」,它是有覆盖率与复核状态明细的对照物。建库实验的隔离规则是:模型建库时看不到 QA、gold 与人工 KB,三者只在评测侧汇合。
自建知识库目前的产物是 746,519 条专利段落(可按验证口径重建全部 5,606 份专利的标准化文本)与 15,467 条 PubChem 源文件记录。专利侧目前是段落索引而非结构化反应事实,这是它与大题差直接相关(见 2.2 节)。
4.3 建立约束
QA ⊂ KB ⊂ raw corpus
每条 QA → KB 字段 → 原文片段 → 证据位置
题目必须从知识库可答、知识库必须从原始语料可重建。不要求每条 KB 记录都生成 QA,也不允许用 QA 的抽取规则反向限制知识库的大小——否则评测就变成检查模型复述标注规则。历史基线确认了证据到位率:人工 KB 条件下 4B / 9B 各有 97.1% / 98.7% 的题目已有标注证据进入模型输入,所以工具组的失分主要发生在证据到位之后的环节。
5关键实现细节
5.1 Harness 与框架适配
工具组使用官方 DeepSeek Harness,通过已披露的 Qwen 兼容层接入 Qwen3.5 系列;评测程序本身不改官方 Harness,只在外面加适配层。项目早期踩过一个值得记录的坑:v1 框架有两个缺陷——压缩上下文时仍然调用工具、输出预算被错误缩放成 1 个 token——导致 v1 的 3,792 次尝试全部无效。处理方式是把 v1 的全部日志与轨迹保留存档但不作为结论,修复后以独立 v2 重跑,并在同一天追加了裸模型对照组。此后协议再未改动过。
5.2 自主建库的执行协议(v4.2,当前版本)
模型自主建库经历了 v1 到 v5 的多轮失败(字段全空、解析层级错误、重复搜索、未通过源检查),当前执行版 v4.2 的协议是:
- 任务拆成两块:PubChem 分子属性表、USPTO 专利原文段落索引。先让模型产出可运行程序并保留原文证据,再逐步完善字段。因此当前产物应称「分子表+证据索引」,不是完整的语义反应知识库。
- 要求第一次工具调用就写出完整建库程序,之后只做小块修改(每次修改携带错误反馈)。实际执行中 9B 首条命令 9,764 字符,超过了 prompt 建议的 6,000 字符,说明分块要求仍未完全遵守,这是如实披露的偏差。
- 建库桥接等待从 180 秒延长到 600 秒(此前短试验遇到过真实传输超时,长工具参数没接收完整)。prompt 与传输参数同时调整过,所以这不算纯 prompt 消融。
- 每模型各阶段共享最多 3 次修复;另有有界自动控制器:只有当前版本全失败时才追加一个携带同模型代码与错误的版本,这部分额外预算单独记录,不与主预算混算。当前版本可用则直接进入 QA。
- 通过小样本源检查的表才处理全量,通过全量检查的表进入完整 4,200 题 QA,与冻结基线比较。磁盘不足时停止新增题目并明确记录未完成,不删除旧轨迹。
5.3 基础设施与吞吐
推理服务跑在两台 4090 上的 Qwen3.5-9B 副本(vLLM 0.29.0),评测调度在 A100 上(历史基线用 A100 本机的 vLLM 0.18.0),调度端通过本机转发端口 18649 与 18659 调用两个 9B 副本。9B 自建 KB 停跑前的配置是两副本 16 并发,实测每小时约 376 题;照此吞吐,剩余 3,579 题约需 9.5 小时。停跑的直接原因是两个 worker 在探测 /v1/models 时超时退出,当天 17:22 经 A100 复查两个 9B 服务本身健康,属于客户端侧问题而非服务故障。另外要注意设备与运行时不同带来的口径问题:自建 KB 跑在 4090 + vLLM 0.29.0,历史基线跑在 A100 + vLLM 0.18.0,超时与耗时差异不能单独归因于知识库质量。
5.4 预算与耗时特征
单题中位耗时 88 秒,P90 约 6 分钟,已经接近 360 秒的单题上限——这意味着预算治理不是优化项而是正确性项。预算耗尽的典型形态是反复生成到 4,096 token 上限或压缩摘要本身超限。4B 人工 KB 条件有 982 题没有答完(945 题耗尽预算、34 题超时、3 题 agent 异常),这些全部按错题计入分母。自建 KB 单题的模型调用数中位数为 6 次,人工 KB 条件为 4 次——结构化程度低的证据会让模型多花交互轮数。
5.5 磁盘治理与留存
A100 的根分区曾在 11 月 10 日至 11 日间写满,触发了一次磁盘治理:清理 16,800 份可重建缓存约 1.33 TiB,保留全部轨迹与结果文件。治理后的约定是:每题结束自动清理可重建缓存,完整保留 response、轨迹、工具调用与生成代码;/home 约 1.3 TiB、/data2 约 595 GiB 可用,新评测的输出与临时目录一律指向 /home。
6项目进度
从数据盘点到当前,每一条都注明当时发生了什么、留下了什么产物。最后一个条目是 11 月 12 日晚上的最新状态。
10.18 数据盘点与 RSI 研究设计
完成 v11 数据快照的盘点(4,800 条 QA、38,507 条化合物、23,107 条反应),做了 30 项 2026 年 RSI 相关文献调研,确定数据隔离、反馈预算与新专利迁移两条轨道。此时项目尚未选定最终方法,也没有改动任何远程数据或服务。
10.19 候选语料补采与数据质量检查
构建候选语料:13,879 份通过完整性与文本结构检查的专利全文、247,334 条不含旧抽取标签的原文片段。L20 原件损坏严重,补采时触发源站 HTTP 429,按规则停止并留档,未强行绕过。
11.04 全量基线评测启动
七任务 4,200 题正式开跑:Qwen3.5 4B / 9B,人工 KB 与原始语料两条件,接入官方 DeepSeek Harness 让模型自主调用工具。所有中间文档、日志与代码自此用 Git 管理。
11.05 发现框架缺陷并以 v2 重跑
v1 发现两个缺陷:压缩上下文时仍调用工具、输出预算被错误缩成 1 token。3,792 次尝试保留存档但不作为结论,修复后启动独立的 v2 全量,同日追加裸模型对照组。
11.09 全量 25,200 次完成评分、基线冻结
03:35 生成最终对比报告。冻结 chemdecision-baseline-v1.0.0(11 项回归检查通过),2B 进入全量。完成 25,200 条成功与失败轨迹的归因分析,确认人工 KB 条件下 4B / 9B 各有 97.1% / 98.7% 的题已有标注证据进入模型输入。
11.10 – 11.11 模型自主建库多轮受挫
自建 KB v1 到 v5 反复失败:字段全空、解析层级错误、重复搜索、未通过源检查。9B 在一轮中把同一条成功返回的 grep 命令重复执行了 51 次。同期完成磁盘治理:清理 16,800 份可重建缓存约 1.33 TiB,保留全部轨迹与结果。
11.12 新方案出现正向信号
另一位 agent 改用通用格式解析器的方案:任务拆成 PubChem 属性表 + USPTO 段落索引,产出 746,519 条专利段落与 15,467 条 PubChem 记录,14 题小样本 8/14(原文条件 5/14、人工 14/14)。9B 全量评测跑到 621/4,200 后因 worker 探测 /v1/models 超时停跑;17:22 时两个 4090 上的 9B 服务经 A100 复查健康。
11.12 晚 4B 自建 KB 启动、9B 配对分析完成
4B 复用 9B 的同一份自建 KB、同一批题与评分规则,19:57 首批 2/4,200 题落盘,8 并发。9B 的 621 题同题配对分析完成:与人工 KB 差 26.7 个百分点,分子描述、反应物、产物三项贡献净差的 75%。
7失败案例
25,200 条轨迹的归因分析里挑出八个可回查的案例。它们共同说明一件事:工具组的失分经常不在「模型能力」,而在执行控制、观测切片与评分口径——这些是可以通过改协议或工具改进的,不该笼统归为模型不行。左侧选择案例,右侧给出经过与归因。
模型读到酮的名称,最终写出的 SMILES 却漏掉羰基。证据已经进入上下文,错在结构生成与身份核对,不是检索没找到。
归因类别:证据已到位仍答错。这类失分不能靠扩大语料或增加检索次数解决。
- 终态:正常答完,gold 不匹配
- 证据:标注证据已确认进入模型输入
- 复核:结构生成错误,SMILES 漏掉羰基
- 影响:扩大语料或增加检索次数都不会解决
案例来自 25,200 条全量归因分析、2B 裸模型诊断与 9B 自建 KB 同题配对报告(轨迹 ID 形如 v13-9a560293…)。原始轨迹、工具调用与生成代码均已留存,原分数没有被改动,分析侧未做重评分。
8口径与风险
下面每一条都会实质影响结论,引用看板上的任何数字时不能省略对应的口径。
- 621 题不是全量。自建 KB 的 64.9% 只覆盖已落盘的 621/4,200 题,落盘顺序按确定性任务序,不是随机抽样,不能外推为全量分数。且自建 KB 跑在 4090 + vLLM 0.29.0,历史基线跑在 A100 + vLLM 0.18.0,设备、运行时与并发都不同,超时与耗时的差异不能单独归因于知识库质量。4B 的补跑同理:换机器与 vLLM 版本后 22.33% 与 22.62% 必须分开记录。
- 严格匹配不等于化学能力。名称与描述要求匹配记录文本,数值要求精确,SMILES 按规范化结构比较,分子描述含词面评分。5.24% 这类分数是本协议下的匹配分,不能直接等同于模型的通用化学能力。反过来说,含 gold 名称的更长答案是否可接受需要语义复核,不能自动判对——分子描述任务里 43 道人工独对题有 42 道是正常答完但判错的,口径敏感度很高。
- 循环验证风险。反复用同一批开发题的对错做优化,模型可能逐渐「试出」答案而不是真的学会。研究设计为此保留了独立选择集、最终测试集与新专利迁移轨道;在迁移轨道上,训练与开发来源分离,评测时才提供新专利原文。在迁移结果出来之前,任何内环提升都只能说「在这个封闭题集上更好」。
- 服务共享 GPU。推理服务与其他任务共享 4090,额外流量会影响 360 秒预算下的 agent 表现;单次快照的分数带±个位数百分点的环境噪声。
- 轨迹指标是词面启发式。归因分析里的「证据已进入上下文」等指标来自轨迹文本的启发式判断,不是检索成功的证明,也不是因果归因。
9下一步
按这个顺序做,原则是先让数字可比,再谈方法改进。前两项是把自建 KB 的全量分数补齐,第三、四项是修已知的具体缺陷,第五项是协议稳定性,第六项回到项目的研究问题本身。
- 恢复 9B 自建 KB 全量评测:输出与临时目录指向 /home,保留已落盘的 621 题;按原吞吐(约 376 题/小时)剩余约 9.5 小时,跑完后与人工 KB、原始语料做同题配对。
- 跑完 4B 自建 KB 全量(已启动,8 并发),同一批 4,200 题与三个条件做同题配对比较,形成自建 KB 的完整四条件矩阵。
- 把自建 KB 的专利段落索引补成结构化反应事实:加入显式的反应角色与结构字段。分子描述、反应物、产物三项贡献了净差的 75%,这是收益最大的单点改进。
- 复核分子描述的字段选取与评分口径:43 道人工独对题里 42 道是正常答完但判错,需要判断多少属于口径问题、多少是真实能力差距。
- 治理预算与超时:单题中位 88 秒、P90 约 6 分钟、已贴近 360 秒上限;自建 KB 单题调用数中位 6 次(人工 KB 为 4 次),需要控制交互轮数。
- 回到 RSI 外环:建独立验证集,跑「新专利迁移」轨道,检验晚代模型是否真的更擅长继续学习——这是整个项目要回答的问题。