这套"自然语言查数据"的系统
我们如何判断它的表现是在提升还是退化?
基于评测工程 NL2DB_eval,介绍评测方法本身。
按键盘 ← → 或点击下方按钮翻页
先认识三个核心组件
用"员工、地图、翻译"打比方,把三个组件讲明白。
编排 harness
指挥流程的"员工"。接到问题后按固定节奏推进:先规划、再执行、再检查、再收尾。
本体 ontology
那张"地图"。业务术语和数据库字段的对照关系,帮助系统减少探索弯路。
执行 model / LLM
那位"翻译兼执行者"。把问题翻译成查询语句,再把结果组织成通俗的答案。
测评相关的术语
| 名词 | 通俗解释 |
|---|---|
| 题库 / 测试用例 | 一组预先设计、附有标准答案的问题 |
| 标准答案 ground truth | 出题人预设的正确结果,用于对照 |
| 指标 metric | 衡量表现的标准,例如探索轮次、响应时长 |
| 收敛 / 收敛性 | 系统经过若干轮探索后,能否在合理轮次内找到答案并停止。反复探索无法停止、该停时未停、过早停止导致遗漏答案,均属于收敛不佳 |
| 基线 baseline | 用于对比的"上一版本"或"基准版本" |
| Token | 大模型处理文本的计量单位,大致对应算力与成本 |
| 归因 | 判断表现变化的原因,明确归属到哪个组件(编排/本体/执行) |
系统构成:三个组件如何协作
- 编排负责"流程节奏"(探索多少轮、何时停止)
- 本体负责"定位"(选择哪张表、哪个字段)
- 执行负责"实现"(编写查询、计算答案)
为什么不能只看"答案是否正确"
仅看最终答案,会忽略三类重要信息:
过程
答案正确,但探索轮次过多、资源消耗过大。
可信度
答案正确,但过程中曾"编造"数据,可靠性存疑。
定位
答案错误,却难以判断是流程、本体还是执行环节的问题。
评测要回答的两个问题
一次只更换一个组件
实验时只改变一个变量,其余保持不变,才能确认"变化是由该变量引起的"。
- 每次评测只更换一个组件:更换模型、调整编排、修改本体,三选一
- 另外两个组件保持固定版本,并记录在案
- 使用同一套题目、同一份数据进行评测
- 结果必须与基线或上一次评测对比
评估分两层:底层"指标" + 上层"分数"
指标
从每次执行记录(日志)中统计出的原始数值,例如平均探索轮次、正确率、Token 消耗、耗时,相当于评估的"底账"。
分数
把指标按归因权重折算成 0–1 的展示分,例如编排分、本体分、执行分,相当于评估的"结论"。
七个过程指标(上):正确性与探索效率
| 指标 | 说明 | 对应问题 |
|---|---|---|
| ① 探索轮次 | 从提问到答完,循环执行的轮数 | 探索了几轮才得到答案? |
| ② 结果正确性 | 最终答案与标准答案的符合程度 | 答案是否正确? |
| ③ 查询质量 | 中间生成的查询语句质量(语法/选库/冗余) | 查询方式是否正确? |
| ④ 事实一致性 | 过程中是否存在前后矛盾或编造字段的情况 | 前后是否自相矛盾? |
七个过程指标(下):完整性与资源效率
| 指标 | 说明 | 对应问题 |
|---|---|---|
| ⑤ 回答完整性 | 一个问题的多个子需求是否全部覆盖 | 是否遗漏了子问题? |
| ⑥ Token 消耗 | 消耗的算力和成本 | 资源消耗是否过高? |
| ⑦ 结论生成时间 | 从提问到生成答案的等待时长 | 等待时间是否过长? |
三个组件各自考察什么
编排 harness 考察
- 探索轮次是否合理、能否及时停止
- 是否存在重复探索
- 前后口径是否一致
- 回答是否完整
探索收敛快、事实不漂移、回答不漏项、无重复劳动。
本体 ontology 考察
- 数据库与表的选择是否正确
- 术语解析是否准确
- 本体是否提升了探索效率
选对库表、术语解析准确、探索更高效。
执行 model 考察
- 查询语句语法是否正确
- 语义是否贴合问题
- 数值是否准确
语法正确、语义贴题、数值准确。
归因:指标如何归属到组件
每个指标对三个组件的责任权重不同。●● 主导、● 参与、○ 边缘。
一条流水线:出题 → 执行 → 评分 → 报告
四步单向流转,自动化程度较高。后续四页分别展开。
第一步 · 出题(题库)
一套标准题目,15–20 道。题目过少缺乏统计意义,过多则单次评测耗时较长。
难度
- 简单:单表
- 中等:多表
- 困难:模糊表达 + 跨库
类型
- 精确查询
- 聚合统计
- 排序筛选
- 跨库联合
边界
- 无结果
- 歧义表达
- 超出本体覆盖
第二步 · 执行(自动向系统提问)
- 评测工具自动将每道题发送给被测系统,通过接口交互,不接触系统代码
- 完整记录全过程:每一轮"计划/执行/检查"、每条查询语句、最终答案、耗时、Token
- 结果按日期归档,避免多次评测相互覆盖
第三步 · 评分
- 可自动计算的指标自动完成:轮次、正确性、Token、耗时
- 需人工判断的项目由人工标注:语义是否贴题、查询是否冗余(该环节尚未实现,处于规划中)
- 三层结构:规则引擎(自动)+ 人工标注 + 综合评分,各自独立演进
- 输出统一的"三组件分数 + 证据",分数必须附带证据,不能只给数值
第四步 · 生成报告(两类报告)
单模型报告
单个方案的总结,包含三模块水平、七维指标和逐题证据。
对比报告
两个方案的对比,比较各维度差异、差距大小与原因。
- 纯网页格式,无需服务器,离线可查看;顶部两个标签可互相跳转
- 全部展开、滚动阅读,无需点击展开
- 使用业务语言(编排/本体/执行),不出现内部代号
单模型报告要点
先看页头,再看三张分数卡,最后看结论;需要追溯原因时再查看证据。
- 第一步看页头:标题带主语 + 快照条(日期/版本/范围),确认这是哪一版的结果
- 第二步看"三模块水平总览":三张分数卡(编排/本体/执行),每张包含环形进度 + 分数 + 一段通俗解读
- 第三步只看这段解读:例如"探索收敛快""存在事实漂移""库表定位准确",这就是结论摘要
探索收敛快、无漏项
库表定位基本准确
语法有错误、数值有偏差
分数和颜色如何解读
- 分数范围为 0–1,颜色对应红绿灯语义:绿 ≥0.7 良好 橙 0.4–0.7 一般 红 <0.4 较差
- 模块水平 = 单题 0.6 + 连续追问 0.4(两种评测均执行时加权;仅执行一种时采用该种结果)
- 无本体的方案,本体卡显示"无本体(基线对照)",不评分,仅作为对比参照
深入了解:按顺序查看
| 区块 | 内容说明 |
|---|---|
| ② 模块维度明细 | 将总分拆解为各项具体维度,横向条形图展示。得分最低的维度即最需要改进的环节 |
| ③ 七维指标 | 雷达图展示整体轮廓,下方卡片展示精确数值,属于原始数据 |
| ④ 逐题证据 | 先按难度查看柱状图,再逐题定位正确与偏离的情况 |
对比报告要点
- 顶部:两个方案的快照卡并排(A 蓝边 / B 绿边),先确认对比的是哪两个方案
- ① 三模块水平对比:分组柱状图,每项 A/B 两根柱,显著差异标 ★,绿色代表提升、红色代表下降
- ② 差异解读:自动生成的文字结论,说明"谁更强、强多少、可能的原因"
- ③④ 明细表:维度级 / 指标级 A/B 对照表,变化最大的项排列在最前,便于快速定位关注点
报告中的"区块说明"锚点
- 每个区块标题下都有一行浅色小字,用通俗语言说明该区块数据所反映的系统能力
- 例:三模块总览下方注明"三个分数合起来,就是这个方案作为智能查数助手的总体评价"
- 用途:对某个图表不理解时,先阅读这行说明,即可了解其含义
连续追问评测
单题评测考察单次回答质量,连续追问评测考察跨轮记忆与抗干扰能力。
跨轮复用
上一轮查询过的表与字段,本轮是否正确复用。
防重复
是否重复执行相同的查询。
防干扰
是否被前一轮的无关信息干扰。
一个真实案例
修改了"本体"(统一了某个状态码的大小写),用同一套题目重新评测:
有所提升的指标
复用率 50% → 62.5%
重复探索 4 → 1(编排水平提升)
未变化的指标
最终正确率未提升,受另外三个问题影响。
最近一轮评测:双方案对比的关键发现
同一底层模型、同一套题目、同一份数据,仅切换有无本体,因此差异可归因到本体这条线。
单题评测(简单题)
无本体"小境"有效回答率约 65%,高于有本体"小境 Neo"的约 53%。差距集中在几道本体敏感的题目上。
连续下钻评测(复杂场景)
结果相反,"小境 Neo"在跨轮复用、避免重复查询等指标上全面占优。
结论与修复路线
当前证据尚不充分,结论用"倾向认为"表述。本体缺陷集中在四个方面:口径建模、运行噪音、场景边界约束、简单题成本。
1
口径显式化:每道题注明统计口径(状态、币种、时间范围);有歧义的题列出多个合法答案并分别声明口径。业务口径是唯一权威,建模对不上就修正,不让评测答案迁就系统。
2
完善评分与用例:数值正确性与口径正确性分开打分;保留暴露本体短板的题目作为检测探针;每道题重复多次,以稳定性区分稳定答对与碰运气答对。
3
定位清楚再下结论:口径建模与场景边界可通过修正 Neo4j 数据解决;运行噪音与"连续追问会话记忆尚未接通"相关,先接线再重测,结论才公平。
关键原则
1
一次只更换一个组件,控制变量,才能归因。
2
统一契约,任何评测最终都输出同一套三组件分数。
3
分数必带证据,每个数值都能追溯来源。
4
使用业务语言表达,采用编排/本体/执行等说法,不用内部代号。
一个已知短板:收敛性尚未完整评测
该系统依靠多轮推理后给出答案,因此最需要考察的是能否做到"探索适量、及时收敛"。目前的评测尚未完整覆盖这一点。
目前可观测的指标
- 探索轮次是否合理
- 是否存在重复查询
- 是否存在前后矛盾(事实漂移)
三个盲区
- 仅看平均值会掩盖个别题目严重发散的情况,长尾问题无法体现
- 只惩罚轮次过多,轮次过少但答案错误反而被判定为良好
- 缺少明确的"收敛率"指标:有多少题目在合理轮次内给出正确答案
现状与局限
- 第一版评分为"近似规则",证据粒度较粗
- 部分判断(语义、冗余)仍需人工标注
- 连续追问的"跨轮记忆"尚未完全打通,相关指标可能失真
总结
这套方法回答两个问题:
把三个组件视为三个开关,一次只拨动一个。
术语对照卡
| 内部术语 | 对外用词 | 通俗说法 |
|---|---|---|
| harness | 编排 | 指挥流程的员工 |
| ontology | 本体 | 业务术语↔字段的地图 |
| model | 执行 | 翻译+执行者 |
| component_scores | 模块水平 | 三个组件的分数 |
| single / session | 单题 / 连续追问 | 单次提问 / 连续提问 |
| baseline | 基线 | 上一版本(对比参照) |
| ground truth | 标准答案 | 出题人预设的正确结果 |