新闻详情

新闻详情

首页 / 资讯中心 / 详情

SuperSonic 端到端评测指南:用 evaluation 脚本量化 Chat BI 的 NL2SQL 准确率与响应延迟

发布时间:2026/10/2 1:37:22来源:尧图网络
SuperSonic 端到端评测指南:用 evaluation 脚本量化 Chat BI 的 NL2SQL 准确率与响应延迟
后端AI 应用数据分析数据可视化前端【免费下载链接】supersonicSuperSonic is the next-generation AIBI platform that unifies Chat BI (powered by LLM) and Headless BI (powered by semantic layer) paradigms.项目地址https://gitcode.com/GitHub_Trending/su/supersonic点击查看免费下载本文以 evaluation/README.md 为骨架结合 evaluation 目录下的完整脚本源码系统讲解 SuperSonic 评测体系的运行流程、底层实现与实战价值。读完本文你将掌握如何启动一次构建表数据 → 数据建模 → 获取模型预测 → 对比评估的完整评测理解 Execution Accuracy / Exact Match / Partial Match 等指标的计算原理并知道如何借助这套工具评估提示词、参数配置与代码改动对 NL2SQL 准确率和响应速度的影响。一、评测流程概览evaluation/README.md 将评测流程概括为两步正常启动项目必须包括 LLM 服务SuperSonic 的 Chat BI 能力依赖 LLM 完成自然语言到 SQL 的转换评测的本质是验证这条链路因此 LLM 服务不可缺失执行evaluation.sh脚本脚本会自动完成构建表数据、数据建模、获取模型预测结果、执行对比逻辑四件事评测结束后在命令行直接看到执行准确率错误 case 会写入同目录的error_case.json文件。看似只有两步背后却是一条完整的自动化流水线。下文先说明运行环境与配置再逐层拆解脚本内部的四个环节最后解读输出结果与评测意义。二、前置条件与运行环境运行评测前需要准备前置条件说明SuperSonic 服务已正常启动且配置并连通 LLM 服务评测脚本通过 HTTP 调用其 Chat API默认地址为http://localhost:9080Python 环境需要python3与pip3可通过环境变量PYTHON_PATH/PIP_PATH覆盖默认解释器Python 依赖由 evaluation/requirements.txt 声明evaluation.sh会自动安装依赖清单如下版本号以仓库为准pysqlite30.5.2 PyJWT2.8.0 PyYAML6.0.1 sqlparse0.4.4 nltk3.8.1pysqlite3评测用的 SQLite 数据库驱动PyJWT生成访问 SuperSonic API 所需的 HS512 签名 TokenPyYAML读取 evaluation/config/config.yaml 配置sqlparse解析预测 SQL用于结果集的字段对齐nltk提供word_tokenize用于 SQL 语句分词。三、一键执行入口evaluation.shevaluation/evaluation.sh 是整个评测的入口脚本完整内容如下#!/usr/bin/env bash path$(pwd) echo ${path} python_path${PYTHON_PATH:-python3} pip_path${PIP_PATH:-pip3} requirementPath$path/requirements.txt ${pip_path} install -r ${requirementPath} echo install python modules success python $path/evaluation.py脚本逻辑非常简单先安装依赖再执行evaluation.py。两点值得注意path$(pwd)取当前执行目录因此建议在evaluation/目录下运行确保相对路径正确支持通过环境变量覆盖解释器例如在仅提供python命令的机器上可执行PYTHON_PATHpython PIP_PATHpip bash evaluation.sh。evaluation.py的主流程位于if __name__ __main__段build_table() # 1. 构建表数据 time_cost get_pred_result() # 2. 数据建模 获取模型预测结果记录每题耗时 get_evaluation_result(time_cost) # 3. 执行对比逻辑输出准确率 remove_unused_file() # 4. 清理临时文件配置config.yamlevaluation/config/config.yaml 是唯一需要手工关心的配置文件内容极简url: http://localhost:9080url指向 SuperSonic 服务地址会被 build_models.py、build_pred_result.py、evaluation.py 三处共同读取用于拼接领域、模型、数据集、Agent、Chat 以及查询解析等全部 API 地址。四、流水线第一环构建表数据build_tables.pybuild_tables.py 负责在 evaluation/data/ 下生成 SQLite 数据库internet.db并在每次运行前删除旧库重建保证评测数据始终可复现。评测数据建模为 4 张表模拟互联网企业-品牌-收入场景表名语义关键字段company公司company_id、company_name、headquarter_address、founder、ceo、annual_turnover、employee_countbrand品牌brand_id、brand_name、company_id外键、legal_representative、registered_capitalcompany_revenue公司品牌收入排名company_id、brand_id、revenue_proportion、profit_proportion、expenditure_proportioncompany_brand_revenue公司品牌历年收入brand_id、year_time、revenue、profit、revenue_growth_year_on_year、profit_growth_year_on_year表内数据为百度、阿里巴巴、腾讯、京东、网易等公司及其子品牌的少量样例记录imp_date取当前日期方便在明细查询时做时间维过滤。这张数据库同时承担两个角色一是作为语义模型 SQL 查询的真实数据源建模脚本中sqlQuery直接对internet.db查询二是作为评测执行准确率时的落点数据库预测 SQL 与金标 SQL 都在其上执行并比较结果集。五、流水线第二环数据建模build_models.pybuild_models.py 通过 SuperSonic 的 REST API 自动完成领域 → 模型 → 关系 → 数据集 → Agent → 会话的建模链路全程无需人工在界面上操作。5.1 认证HS512 JWT脚本使用 PyJWT 生成管理员的访问令牌def get_authorization(): exp time.time() 100000 # secret 请和 com.tencent.supersonic.auth.api.authentication.config.AuthenticationConfig.tokenAppSecret 保持一致 secret WIaO9YRRVt7QtpPvyWsARFngnEcbaKBk783uGFwMrbJBaochsqCH62L4Kijcb0sZCYoSsiKGV/zPml5MnZ3uQ token jwt.encode({token_user_name: admin, exp: exp}, secret, algorithmHS512) return Bearer token源码注释明确指出secret必须与 SuperSonic 服务端AuthenticationConfig.tokenAppSecret位于 auth 模块保持一致否则所有 API 调用都会被拒绝。若你修改了服务端密钥请同步更新此处的硬编码值。5.2 建模链路build()函数按依赖顺序执行并带幂等保护通过getDomainList/getModelList先查询是否已存在同bizName的领域或模型已存在则跳过创建、直接复用。创建领域Domain调用/api/semantic/domain/createDomain创建DuSQL_互联网企业bizName: internet并记录domain_id创建模型Model依次创建 4 个模型company、brand、company_revenue、company_brand_revenue。每个模型的modelDetail均以sql_query方式声明直接查询第五节构建的internet.db中对应表并显式声明identifiers主键/外键如company_id主键、brand.company_id外键dimensions时间维度imp_date与company_name、brand_name等类别维度measuresannual_turnover、revenue_proportion等度量默认SUM聚合isCreateDimension / isCreateMetric标记是否自动派生维度/指标创建模型关系ModelRela调用/api/semantic/modelRela建立 4 条 inner join 关系例如company.company_id brand.company_id、brand.brand_id company_revenue.brand_id支撑多表 JOIN 查询创建数据集DataSet调用/api/semantic/dataSet将 4 个模型及其维度、指标组织为DuSQL 互联网企业数据集typeEnum: DATASET并附带默认查询配置时间粒度 DAY、RECENT 模式创建 Agent调用/api/chat/agent创建 id 为 10 的 Agent其toolConfig挂载NL2SQL_LLM工具并绑定上述数据集使 Chat 能力与语义层打通创建会话Chat调用/api/chat/manage/save创建名为DuSQL问答的会话再从/api/chat/manage/getAll取回chat_id供下一环节使用。六、流水线第三环获取模型预测结果build_pred_result.pybuild_pred_result.py 是评测与 SuperSonic Chat 能力的直接对接点核心逻辑如下读取问题集从 evaluation/data/internet.txt 逐行读取 100 条自然语言问题如在各公司所有品牌收入排名中给出每一个品牌其所在公司以及收入占该公司的总收入比例同时给出该公司的年营业额这些是评测输入调用查询解析接口对每条问题向{url}/api/chat/query/parse发起 POST请求体为{agentId: agent_id, chatId: chat_id, queryText: query}携带上一步生成的 Bearer Token提取预测 SQL从响应data.selectedParses[0].sqlInfo.querySQL取最优解析结果并做三项清洗querySQL querySQL.replace(dusql., ).replace(dusql, ).replace(\n, )即去掉数据库名前缀、反引号残留与换行符使预测 SQL 与金标 SQL 格式对齐 4.兜底策略接口异常或未返回有效 SQL 时写入默认 SQLselect * from tablea一条必然无法匹配的语句用于标记失败 5.记录耗时每条问题记录请求耗时cost并在相邻问题间time.sleep(3)限速请求全部开始前还有time.sleep(60)的预热等待给 Agent 冷启动留出时间 6.写结果文件全部问题处理完后将预测 SQL 逐行写入 evaluation/data/pred_example_dusql.txt与金标文件行号一一对应并把耗时列表返回给主流程。这一环节决定了评测的可移植性脚本只依赖 SuperSonic 的 HTTP API与具体 LLM 品牌无关。因此切换大模型只需修改 SuperSonic 服务端的 LLM 配置评测脚本零改动即可重跑。七、流水线第四环对比逻辑与准确率评估evaluation.pyevaluation/evaluation.py 是全仓库最核心的评测实现采用 DuSQL 数据集标准的评估方法。它读取三份文件预测 SQLpred_example_dusql.txt、金标 SQLevaluation/data/gold_example_dusql.txt、表结构evaluation/data/tables_dusql.json用于构建外键映射以支持列名等价替换。7.1 SQL 结构化解析预测与金标 SQL 先经 process_sql.py 解析为标准的结构化表示文件头部完整定义了内部 DSL# col_unit: (agg_id, col_id, isDistinct(bool)) # val_unit: (unit_op, col_unit1, col_unit2) # table_unit: (table_type, col_unit/sql) # cond_unit: (not_op, op_id, val_unit, val1, val2) # condition: [cond_unit1, and/or, cond_unit2, ...] # sql { # select: (isDistinct(bool), [(agg_id, val_unit), ...]) # from: {table_units: [...], conds: condition} # where: condition # groupBy: [col_unit1, ...] # orderBy: (asc/desc, [val_unit1, ...]) # having: condition # limit: None/limit value # intersect: None/sql # except: None/sql # union: None/sql # }其中聚合函数集合为AGG_OPS (none,max,min,count,sum,avg)操作符集合为WHERE_OPS (not,between,,,,,,!,in,like,is,exists)可通过 Schema 的get_schema(db)从 SQLite 元数据动态构造表-列映射。7.2 难度分级Hardness基于金标 SQL 结构Evaluator.eval_hardness用三个计数器给每条 SQL 定级count_component1统计 where / group / order / limit / JOIN / or / like 的复合度count_component2统计 intersect / union / except 嵌套子查询数量count_others统计多聚合、多 select 列、多 where 条件、多 group 列等其它复杂度。按组合规则划分为easy/medium/hard/extra四个难度等级最终报告按等级分别统计准确率便于定位模型在哪个复杂度区间掉点。7.3 三类核心指标主流程默认etype exec即执行准确率代码同时完整实现了匹配评估逻辑。Execution Accuracy执行准确率eval_exec_match在internet.db上真实执行预测 SQL 与金标 SQL再对两个结果集做比较提取预测结果列名并清洗re.sub(t\d., , p_fields[i].replace(,).lower())即去掉T1. 等别名前缀、反引号并转小写对每一列将取值排序后映射为{字段名: 排序后的值列表}逐字段比较特殊跳过sys_imp_date这类系统字段避免时间口径差异干扰预测 SQL 执行异常时直接判定不相等并将结果写入错误 case。Exact Matching Accuracy精确匹配率eval_exact_match先对结构化表示逐组件做部分匹配再要求所有部分 F1 均为 1且 from 中的表集合一致才算整句精确匹配。Partial Matching部分匹配eval_partial_match对 10 个组件分别统计 accuracy / recall / F1partial_types [select, select(no AGG), where, where(no OP), group(no Having), group, order, and/or, IUEN, keywords]select(no AGG)忽略聚合函数只看列选择where(no OP)忽略操作符只看条件列group(no Having)不含 having 的 group 匹配IUENintersect / union / except / nested 的嵌套匹配keywordswhere/group/order/limit/or/not/in/like 等关键结构词匹配。每个组件的acc、rec、f1由get_scores计算且仅在预测与金标组件数一致时计分避免多选一列被计为命中。此外脚本顶部还有两个全局开关DISABLE_VALUE True # 关闭条件值评估比较 where 时忽略具体数值 DISABLE_DISTINCT True # 关闭 select 中 distinct 的评估这意味着默认评估更关注 SQL结构正确性而非字面数值符合业务问答结构对了、值可变的实际诉求。7.4 报告输出与错误 caseprint_scores在命令行以表格形式打印结果第一行列easy / medium / hard / extra / all五个分组随后是count题目数、execution执行准确率以及 partial 各维度的 acc / rec / F1。文件末尾还会打印整体执行准确率scores[all][exec]。对于执行不相等或精确匹配为 0 的题目脚本会把明细写入 evaluation/error_case.jsonelement {query: questions[index], gold_sql: g_str, pred_sql: p_str} # 执行失败时额外写入 element[p_res_map] result[p_res_map] element[q_res_map] result[q_res_map]即每条错误 case 包含原始问题、金标 SQL、预测 SQL以及预测/金标各自排序后的结果集映射便于肉眼比对差异来源。文件末尾追加一个耗时统计对象cost_dic {max_time: max(time_cost), min_time: min(time_cost), avg_time: sum(time_cost)/len(time_cost)}同时覆盖准确率与响应速度两个维度的评测结论。7.5 临时文件清理主流程最后调用remove_unused_file()删除运行中生成的data/internet.db与data/pred_example_dusql.txt保证每次评测从干净的初始状态开始internet.db会在下一轮由build_table()重建pred_example_dusql.txt由get_pred_result()重写。八、如何解读评测结果并定位问题一次完整评测后你会得到两类产出命令行报告按难度分组的execution准确率。重点关注all列整体准确率以及easy→medium→hard→extra的准确率衰减曲线——若低难度题目准确率明显低于高难度题目通常意味着基础语义解析表列映射、条件抽取存在问题而非模型能力不足error_case.json逐条给出问题、金标 SQL、预测 SQL 与结果集差异。典型排查路径预测 SQL 为默认的select * from tablea该题接口调用失败或未产生可用解析优先排查 LLM 服务与 Agent 配置结构大体正确但p_res_map与q_res_map列不一致多为表/列选择错误检查语义模型的维度、指标配置结果集值不一致多为条件值、聚合方式差异可结合 partial 报告中的where、select(no AGG)分数交叉验证。九、评测意义快速迭代的量化标尺evaluation/README.md 明确指出评测工具的两大意义结合源码可进一步展开快速对接其他大模型评测链路只调用/api/chat/query/parse这一稳定 HTTP 接口服务端更换 LLM改模型名、接入点、密钥后脚本无需改动即可重跑准确率与耗时max/min/avg_time立刻可对比量化提示词与代码改动的影响无论是调整提示词模板、修改 NL2SQL 解析逻辑、优化插件参数还是改动 Agent 的 toolConfig都可以通过改配置 → 重跑evaluation.sh→ 对比execution准确率与error_case.json形成闭环判断改动是正向还是负向避免凭感觉上线。由于数据集100 条 DuSQL 风格问题与金标 SQL、表数据、建模流程全部固化且可复现这套评测成为 SuperSonic 团队在 benchmark 之外、贴近真实 Chat BI 场景的回归验证手段任何涉及自然语言 → SQL的能力变更都能以统一标尺衡量其准确率与响应速度的变化。十、把评测接入日常开发实用建议目录约定在 evaluation/ 目录内执行bash evaluation.sh保证path$(pwd)解析正确服务就绪检查运行前确认curl http://localhost:9080可访问且 LLM 服务可用README 明确强调必须包括 LLM 服务密钥同步修改服务端AuthenticationConfig.tokenAppSecret后务必同步更新 build_models.py 中的secret常量定制评测集扩展评测只需三步——向data/internet.txt追加自然语言问题、向data/gold_example_dusql.txt追加行号一一对应的金标 SQL格式为SQL\t表名、在data/tables_dusql.json中补充外键与表结构信息耗时口径get_pred_result的耗时仅包含 HTTP 请求往返时间不含 60s 预热与 3s 间隔可作为响应速度的相对对比指标。这套开箱即用的评测脚本让 Chat BI 的每一次迭代都能用数据说话——这正是它作为 SuperSonic 质量基线的核心价值。赞分享后端AI 应用数据分析数据可视化前端【免费下载链接】supersonicSuperSonic is the next-generation AIBI platform that unifies Chat BI (powered by LLM) and Headless BI (powered by semantic layer) paradigms.项目地址https://gitcode.com/GitHub_Trending/su/supersonic点击查看免费下载相关推荐纳秒级交易响应NautilusTrader端到端延迟测量与优化实践纳秒级交易响应NautilusTrader端到端延迟测量与优化实践 NautilusTrader是一个开源的高性能算法交易平台和事件驱动回测系统专为追求极致金融科技后端告别触控延迟mac-precision-touchpad让苹果触控板在Windows焕发新生告别触控延迟mac precision touchpad让苹果触控板在Windows焕发新生 mac precision touchpad是一款专为苹果Mac驱动开发系统底层硬件开发N_m3u8DL-RE 快速上手一条命令搞定 m3u8/MPD 流媒体下载、解密与直播录制N_m3u8DL RE 快速上手一条命令搞定 m3u8/MPD 流媒体下载、解密与直播录制 N_m3u8DL RE 是一个跨平台的流媒体下载工具能解析 HLCLI音视频上一篇TRELLIS.2常见问题解答新手必知的10个关键操作技巧下一篇web-mode.el与主流前端框架React、Angular和Vue开发实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

低空经济产业框架:四层架构与网络化路径解析 2026/10/2 4:25:14

低空经济产业框架:四层架构与网络化路径解析

简介:《中国低空经济产业框架报告(2024)》以演示文稿形式系统梳理低空经济的全景框架,面向关注新兴产业投资、政策研究与产业规划的企业管理者、分析师及研究人员。报告从基础概念切入,界定1000米(可延伸至…

阅读更多 →
从单模型服务到LLM推理平台:模型部署框架选型与实践 2026/10/2 4:25:14

从单模型服务到LLM推理平台:模型部署框架选型与实践

做模型部署这行五年多,从最早拿 Flask 包一个 ONNX 模型给业务方调用,到现在维护着支撑多个业务线的 LLM 推理平台,中间踩过的坑比我写过的代码都多。很多朋友问我,模型部署到底难在哪?为什么一个“跑通”的模型到了线…

阅读更多 →
百城巡回送龙虾爆火背后:用户心理、投票机制与活动执行全拆解 2026/10/2 4:25:08

百城巡回送龙虾爆火背后:用户心理、投票机制与活动执行全拆解

做营销这些年,我最大的感受是:一个活动能从公司内部立项走到全国引爆,背后赌的往往不是预算大小,而是对"人性"的理解够不够深。最近"百城巡回送龙虾,下一站你定"这个玩法刷遍了不少本地生活群&…

阅读更多 →
端侧大模型部署实战:350亿参数如何压进手机内存 2026/10/2 4:25:08

端侧大模型部署实战:350亿参数如何压进手机内存

1. 端侧大模型落地的核心矛盾:内存墙到底卡在哪把350亿参数的模型塞进一台手机,这件事在两年前听起来像是天方夜谭。我第一次在展会上看到有人在手机上跑70亿参数模型的时候,第一反应是"这玩意儿能撑过三句话不闪退就算赢"。结果人…

阅读更多 →
考虑空间可调度特性的分布式电源与充电站联合配置方法 2026/10/2 4:25:07

考虑空间可调度特性的分布式电源与充电站联合配置方法

我前阵子正好在研究电动汽车充电站和分布式电源的协同规划问题,翻了不少文献,很多方案都是把充电站和分布式电源分开做优化,要么只考虑充电负荷的时间平移,要么压根忽略了充电站本身对配电网潮流分布的直接影响。后来看到“考虑充…

阅读更多 →
陪玩平台多端源码拆解:Java后端交易闭环与订单支付设计 2026/10/2 4:25:07

陪玩平台多端源码拆解:Java后端交易闭环与订单支付设计

做陪玩平台类项目的开发者,这两年应该没少看到"打手""陪玩""开黑"这类关键词。说白了,这类业务就是撮合平台:一端是技术好、愿意接单陪玩的打手,一端是想上分、想有人陪着玩的普通玩家,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉