技术博客
衡石技术博客是一个围绕数据分析和BI领域提供丰富实用的技术文章、案例分析和实战经验的博客平台。

免费试用

全部

帮助手册

API文档

课堂中心

技术博客

白皮书

从“问数据”到“数据问你”:衡石ChatBI背后的意图识别与NL2Query技术揭秘
作者:HENGSHI 时间:2026-03-01

在数据分析领域,一个长期的悖论是:数据越多,发现洞察越难。传统的BI工具要求用户主动提问,但用户往往不知道要问什么,或者不知道如何用工具的语言表达自己的问题。而ChatBI的出现,正在将这种模式翻转——从“人问数据”变成“数据问你”。

但实现这一翻转并不容易。让机器理解人类的自然语言,并精准地转化为数据库能执行的查询语句,背后涉及一系列复杂的技术挑战。本文将深入解密衡石ChatBI的技术内核,剖析意图识别、NL2Query、多轮对话管理等关键模块的实现细节,揭示从口语化问题到精准数据洞察的全过程。


一、从“被动应答”到“主动理解”:意图识别的三层挑战

当用户输入“上个月华东区销售额top5的销售是谁?”时,机器需要理解的内容远比表面复杂。衡石的意图识别引擎通过三层处理,将自然语言转化为结构化意图:

第一层:实体识别(NER)

实体识别是从文本中提取关键信息单元的过程。上述问题中,需要识别出:

  • 时间实体:“上个月” → 需要转化为具体的日期范围(如2025-02-01到2025-02-28)

  • 地域实体:“华东区” → 映射到区域维度的成员ID

  • 指标实体:“销售额” → 匹配语义层中的度量定义

  • 排序实体:“top5” → 识别为排序操作及限制数量

  • 维度实体:“销售” → 可能对应人员维度

衡石的NER模块采用BERT+CRF的混合模型,在通用领域预训练的基础上,通过企业私有数据微调,能够准确识别业务术语。针对“销售额”这类可能有多个定义的指标,系统还会结合用户角色和历史行为进行消歧。

第二层:意图分类

识别出实体后,需要判断用户想要执行什么操作。衡石定义了数十种意图类型,包括:

  • 查询类:如“销售额是多少?”、“展示客户列表”

  • 对比类:如“和上个月比怎么样?”、“哪个渠道转化率更高?”

  • 趋势类:如“近半年变化趋势”、“预测下个月销量”

  • 归因类:如“为什么下降?”、“主要受什么影响?”

分类模型基于TextCNN架构,结合领域特定的特征工程,在千万级标注语料上训练,准确率超过95%。对于模糊意图(如“客户情况”),系统会通过多轮对话引导用户澄清。

第三层:语义解析与歧义消除

这是最复杂的环节。自然语言的歧义性可能导致多种解读:

  • 指代歧义:“他们”指谁?需要结合对话历史

  • 边界歧义:“华东区销售额”可能指华东区客户的销售额,也可能指发生在华东区的销售额

  • 省略歧义:“销售额”可能隐含“总销售额”或“平均销售额”

衡石采用基于知识图谱的语义解析器,将问题映射到底层数据模型。数据模型包含了维度的层级关系、度量的计算口径、表间的关联路径等信息。解析器会生成多个可能的逻辑表达式,并通过评分函数选择最合理的一个。


二、从意图到查询:NL2Query的工程实践

意图理解完成后,下一步是将逻辑表达式转换为可执行的查询语句。这一步的技术挑战在于:如何确保生成的SQL既正确又高效?

2.1 语义层映射:从业务语言到技术语言

用户说的“销售额”在数据库中可能对应多个字段(如amounttotal_amount),且需要满足特定条件(如status='paid')。衡石建立了业务术语到物理字段的映射表,并支持复杂的派生指标定义。

例如,“复购率”可能定义为:

sql

COUNT(DISTINCT CASE WHEN purchase_count > 1 THEN user_id END) / COUNT(DISTINCT user_id)

NL2Query引擎会将用户问题中的指标名替换为对应的表达式,并自动注入必要的过滤条件。

2.2 查询规划与优化

简单的问题可能只需单表查询,但复杂问题往往涉及多表关联、嵌套查询、聚合计算。衡石的查询规划器会:

  1. 确定数据源:根据涉及的维度和度量,确定需要查询的表或视图

  2. 构建关联路径:基于数据模型中的外键关系,自动生成JOIN条件

  3. 下推优化:将过滤、聚合等操作尽可能下推到数据库执行,减少数据传输量

  4. 改写加速:对于特定场景,改写查询以命中预聚合表或物化视图

例如,用户问“各区域销售额占比”,规划器可能生成如下SQL:

sql

SELECT region, SUM(amount) AS salesFROM sales_factJOIN store_dim ON sales_fact.store_id = store_dim.idWHERE date >= '2025-02-01' AND date <= '2025-02-28'GROUP BY regionORDER BY sales DESC

2.3 自然语言到聚合语义的转换

口语化问题中常隐含聚合操作,如“平均客单价”、“总用户数”。NL2Query引擎需要识别这些聚合意图,并选择合适的聚合函数。衡石维护了一个聚合意图词典,将“平均”、“总共”、“每个”等词汇映射到相应的SQL函数(AVG、SUM、COUNT等)和分组操作。

对于更复杂的语义,如“top5销售”,引擎会生成带有窗口函数或LIMIT子句的查询。

2.4 多轮对话中的上下文继承

在多轮对话中,用户的问题往往是省略的,如“华东地区呢?”、“占比多少?”。衡石的对话管理器维护了上下文状态,包括:

  • 当前查询的维度、度量、过滤条件

  • 最近提到的实体

  • 用户的偏好设置

当新问题到来时,系统会先尝试用上下文补全缺失的信息,然后再送入NL2Query引擎。例如,第二轮问题“占比多少?”会被补全为“华东地区销售额占总销售额的百分比”。


三、多轮对话管理:让AI“记得住、理得清”

真正的对话式分析不是一问一答,而是像人与人交流一样,可以来回追问、修正、深入。衡石的多轮对话管理基于状态机+记忆网络的混合架构。

3.1 对话状态追踪

系统维护一个对话状态向量,记录当前的话题、已确认的实体、待澄清的歧义点等。每次用户输入后,状态更新器会根据新的输入更新状态。例如:

  • 用户:“上月销售额” → 状态:{指标: 销售额, 时间: 上月, 待定: 无}

  • 用户:“华东地区呢?” → 状态:{指标: 销售额, 时间: 上月, 维度: 华东地区, 待定: 无}

  • 用户:“和上季度比” → 状态:{指标: 销售额, 时间: 上月 vs 上季度, 维度: 华东地区, 待定: 需要比较}

3.2 指代消解

当用户说“他们”或“这些产品”时,系统需要知道指代的是什么。衡石采用基于注意力机制的指代消解模型,结合对话历史和当前界面的上下文,确定指代对象。例如,如果用户刚刚看过一个产品列表,那么“这些产品”就指列表中的产品。

3.3 主动澄清与引导

当系统对意图不确定时(如置信度低于阈值),不会盲目猜测,而是主动反问用户。例如:

  • 用户:“客户情况”

  • 系统:“您想了解客户的哪些方面?比如总数、新增、流失,还是具体名单?”

这种主动澄清机制大大提高了准确率,避免了因误解而产生的错误答案。


四、工程实践中的关键挑战与应对

将上述技术落地到生产环境,衡石团队克服了多项工程挑战:

4.1 模型准确性与业务适应性

通用NL2SQL模型在标准数据集上的准确率可能很高,但在企业特定环境下往往水土不服。衡石的解决方案是双轨制:

  • 基于通用大模型(如GPT系列)做零样本或少样本推理,处理冷启动问题

  • 针对高频问题,通过用户反馈持续微调专用小模型,实现“越用越准”

同时,支持业务人员通过管理后台配置同义词、排除词、强制映射,快速纠正模型错误。

4.2 性能与延迟

自然语言处理尤其是大模型推理,通常需要几百毫秒到几秒。对于交互式分析,这个延迟不可接受。衡石采用多级缓存+异步预加载策略:

  • 常见问题的查询结果缓存,命中后毫秒级返回

  • 模型推理采用批处理和模型蒸馏,将单次推理时间控制在200ms以内

  • 对于复杂查询,先返回初步结果,后台继续计算,用户可随时刷新

4.3 复杂查询的支持

现实业务中,用户的问题可能极其复杂,如“对比上个月和去年同期,每个大区销售额排名前三的产品,以及它们对总销售额的贡献率”。这类问题需要生成包含子查询、窗口函数、多级聚合的复杂SQL。衡石的NL2Query引擎采用模板+动态组装的方法,预定义了数百种常见分析模式的模板,再根据具体参数动态填充,确保既能覆盖复杂场景,又能保证生成的SQL质量。

4.4 可解释性与调试

当生成的查询结果不符合预期时,用户需要知道“为什么”。衡石提供了查询溯源功能,可以展示自然语言是如何一步步转换为SQL的,包括实体识别结果、意图分类、语义解析树、最终SQL语句。这让用户和开发者都能理解系统的“思考过程”,便于调试和优化。


五、未来演进:从NL2Query到NL2Action

当前的ChatBI主要实现“自然语言到查询”,但未来将向“自然语言到行动”演进。用户不仅可以用自然语言问数据,还可以用自然语言指挥系统执行操作,如:

  • “把这个报表发给王总”

  • “设置每周一自动推送销售周报到部门群”

  • “当库存低于100时提醒采购部门”

这需要将NL2Query与工作流引擎、权限系统、消息系统深度集成。衡石已经在探索这一方向,意图识别将新增“操作类”意图,查询结果将触发相应的业务动作。


六、结语:让对话成为数据的入口

从“问数据”到“数据问你”,不仅是交互方式的改变,更是人机协作模式的进化。衡石ChatBI通过意图识别、NL2Query、多轮对话管理等技术,让数据分析回归对话的本质——用户只需说出业务问题,剩下的交给系统。

这一转变的背后,是自然语言处理、知识图谱、查询优化等多领域技术的深度融合。当技术门槛被隐藏,业务人员终于可以像与同事聊天一样与数据对话,数据驱动的决策才能真正从口号变为现实。

未来,随着大模型能力的持续提升和多模态交互的成熟,对话式分析将变得更加智能、自然。而衡石科技,正致力于让这一愿景在每一个SaaS产品中成为现实。


相关资讯
热门标签
衡石科技 衡石BI BI ChatBI BI数据分析 Agentic BI BI PaaS平台 企业级BI AI+BI HENGSHI SENSE BI工具 嵌入式BI BI Agent AI 指标平台 BI平台 ISV/SAAS 厂商 BI PaaS HENGSHI SENSE 6.0 AI Copilot AI Agent ChatBI解决方案 Data Agent 指标管理 BI系统 指标中台 对话式BI 传统BI 一站式BI分析平台 Chat2Metrics HENGSHI SENSE 6.1 BI报表 deepseek 零代码BI 嵌入式分析 BI可视化 数据中台 可视化报表 应用模版市场 多租户 Deep Seek 交互式BI 语义层 大数据模型BI AI数据 BI软件 BI解决方案 NL2SQL 智能问数 生态伙伴 crm 生成式BI NL2DSL 衡石ChatBot Agentic Analytics OA HQL Gen AI 多源异构数据 ChatBot 衡石API 自助式BI SDK React SDK 爱分析 问答式BI

丰富的资源 完整的生态

邀您成为衡石伙伴