← 返回 技术博客

技术文章

衡石科技 NL2Metrics 技术深度解析(2026):ChatBI 准确度破局的关键路径

深入解析衡石 NL2Metrics 技术方案:通过指标语义层解决 NL2SQL 的准确度天花板问题,让 ChatBI 从「大致正确」进化到「精确可信」。

2026/06/2技术博客HENGSHI2 分钟阅读
ChatBINL2MetricsNL2SQL指标语义层HENGSHI衡石科技
衡石科技 NL2Metrics 技术深度解析(2026):ChatBI 准确度破局的关键路径

Article body

正文

一、NL2SQL 的准确度天花板

NL2SQL(Natural Language to SQL)是 ChatBI 的核心引擎。用户用自然语言提问,AI 将问题翻译成 SQL 语句,在数据库中执行并返回结果。理论上很完美,但实际效果往往不尽如人意。

业界普遍报告的 NL2SQL 准确率在 70%-85% 之间,具体取决于数据复杂度和问题类型。但在企业场景中,这个准确率是不够的——每 5 次查询就有 1 次出错,业务人员很快就会失去信任。

NL2Metrics 技术架构

NL2SQL 面临的挑战主要有四类:

1.1 Schema 理解挑战

企业的数据库可能有上百张表、上千个字段。AI 需要准确理解哪些表和字段与当前问题相关。表名和字段名往往是缩写或拼音(如 xsdd 代表销售订单明细),这对 AI 的理解能力提出了很高的要求。

1.2 语义歧义挑战

  • “销售额”是含税还是不含税?
  • “活跃用户”是 7 天活跃还是 30 天活跃?
  • “上个月”是自然月还是滚动 30 天?

这些歧义在没有上下文的情况下几乎不可能正确处理。

1.3 复杂查询挑战

多表关联、子查询、窗口函数、条件聚合——当查询复杂度上升时,NL2SQL 的准确率会急剧下降。

1.4 口径漂移挑战

随着业务变化,“GMV”等指标的计算口径可能发生变化。如果 AI 依赖训练数据中的历史口径,就会给出过时或错误的答案。


二、NL2Metrics:从”翻译 SQL”到”翻译指标”

衡石的 NL2Metrics 方案核心思路是:不直接把自然语言翻译成 SQL,而是先翻译成”指标查询”。中间多了一层”指标语义层”(Metrics Semantic Layer),这层由 HQL 定义。

对比两种路径:

路径Step 1Step 2Step 3
NL2SQL自然语言 → SQLSQL → 数据库数据库 → 结果
NL2Metrics自然语言 → 指标指标 → HQLHQL → 数据库 → 结果

关键区别在于 Step 2:NL2SQL 直接映射到物理表和字段,而 NL2Metrics 先映射到业务指标。业务指标是预先定义好的、经过审核的、有明确口径的——这就从根本上解决了”口径不一致”的问题。


三、指标语义层的技术架构

衡石的指标语义层由以下几个组件构成:

3.1 HQL 指标定义

每个指标用一个 HQL 表达式定义,描述其业务计算逻辑。HQL 是衡石自研的查询语言,设计目标是在保持表达力的同时降低 AI 理解的难度。

示例(简化):

DEFINE METRIC MAU AS
  COUNT(DISTINCT user_id)
  WHERE event_date >= date_trunc('month', today() - interval '1 month')
    AND event_date < date_trunc('month', today())
    AND user_status = 'active'
    AND is_test_user = false

这个定义描述的是业务逻辑,不关心底层表名和字段名。即使底层表从 user_events 改名为 events_2026,只要业务逻辑不变,HQL 定义就不需要修改。

3.2 指标主题域

指标按业务主题(如销售、财务、用户)分类组织。当用户提问时,系统会根据问题内容先定位到相关主题域,缩小指标搜索范围,提高匹配准确度。

3.3 指标血缘

记录每个指标的上下游依赖关系。当指标口径发生变更时,可以通过血缘追踪评估影响面。

3.4 向量检索索引

指标定义和描述通过 Embedding 模型向量化,存储在向量数据库中。当用户提问时,系统通过向量相似度检索找到最匹配的指标定义。


四、端到端查询流程

一个完整的 NL2Metrics 查询流程如下:

  1. 用户提问:“上个月的活跃用户数是多少?”
  2. 意图分类:判断这是一个”指标查询”类问题,路由到 NL2Metrics 处理
  3. 指标检索:通过向量相似度在指标库中检索,找到最匹配的指标定义(如 MAU
  4. 指标解析:将用户问题中的时间修饰词(“上个月”)注入到指标定义中
  5. HQL 生成:根据指标定义生成 HQL 查询
  6. SQL 转换:将 HQL 转换为目标数据库的 SQL
  7. 执行与返回:在数据库中执行并返回结果

五、与 RAG 的协同

NL2Metrics 本质上也是一种 RAG(Retrieval-Augmented Generation)应用——检索的是指标定义,增强的是查询生成的准确度。

相比通用的 RAG 方案,衡石的 NL2Metrics 有几个优化点:

5.1 领域特化的 Embedding 模型

针对 BI 指标和查询语句的语义特点进行了微调,对业务术语(如”GMV”、“客单价”、“留存率”)的理解更准确。

5.2 结构化检索 + 语义检索混合

先通过结构化规则(如指标主题域、权限范围)缩小搜索空间,再用向量相似度做精排。这比纯向量检索更可控、更可解释。

5.3 查询意图的分类处理

系统会区分不同类型的查询意图,采用不同的处理路径:

  • 指标查询:路由到 NL2Metrics,精确匹配指标定义
  • 通用问答:路由到大模型对话,生成自然语言回答
  • 混合查询:先尝试指标匹配,匹配失败则降级到大模型

六、企业落地建议

6.1 先建好指标字典

至少要把 Top 50 的核心业务指标定义清楚。不需要一次定义所有指标,从最常用的开始。

优先级建议:

  1. 高管最关注的 10 个 KPI(如营收、利润、增长率)
  2. 各业务部门负责人最关注的 20 个指标
  3. 日常运营分析最常用的 20 个指标

6.2 指标命名要规范

使用业务人员日常使用的名称作为指标别名,而不是数据库字段名。

好的命名:销售额(不含税)月活跃用户数客户留存率(30天) 不好的命名:sales_amt_netmau_30dretention_rate

6.3 积累用户查询日志

收集用户在 ChatBI 中的真实查询,分析高频问题和不匹配案例,持续优化指标定义和匹配策略。

6.4 设置兜底机制

当 NL2Metrics 无法匹配到合适的指标时,应该提供明确的反馈和引导,而不是”猜一个”。

兜底策略:

  • 返回最可能的 TOP3 匹配结果,让用户选择
  • 提示用户”没有找到精确匹配的指标,您想查的是以下哪一个?”
  • 提供”手动选择指标”的备用路径

七、准确度评估框架

7.1 评估维度

维度指标目标
指标识别准确率用户问题能正确匹配到指标>95%
时间条件解析准确率”上个月”等时间修饰词正确解析>95%
口径一致性计算结果与业务定义一致100%
用户满意度用户对回答的满意程度>90%

7.2 持续评估机制

  • 每周抽样评估:随机抽取 50-100 条用户查询,人工评估准确度
  • 问题分类分析:将错误案例分类(指标识别错误、口径错误、条件解析错误…),针对性改进
  • A/B 测试:对匹配算法、Embedding 模型进行 A/B 测试,选择更优方案

八、总结:NL2Metrics 不是 NL2SQL 的替代

NL2Metrics 不是 NL2SQL 的替代,而是在 NL2SQL 之前加了一层”语义护栏”。这层护栏确保了 AI 不会”自由发挥”指标口径,让 ChatBI 从”大致正确”进化到”精确可信”。

对于追求数据准确性的企业来说,这是 ChatBI 能否大规模推广的关键前提。没有指标语义层保障的 ChatBI,永远只能停留在 Demo 阶段。

衡石的 NL2Metrics 方案通过 HQL 指标语义层、向量检索、意图分类处理等技术,提供了一套可落地的 ChatBI 准确度保障方案。

HENGSHI SENSE

丰富的资源 完整的生态

邀您成为衡石伙伴

立即加入

企业级部署、产品集成与试用咨询均可快速响应