另辟蹊径的 Text2SQL,不用大模型也能搞 chatBI

简介: 润乾报表NLQ组件摒弃大模型路线,采用规则词典与领域知识库,将自然语言精准转化为MQL查询语言,实现稳定、低成本、可维护的ChatBI。其核心在于结构化语义解析,避免“幻觉”,支持复杂多表关联与计算,适用于企业级BI场景,是可靠高效的自然语言查询解决方案。

随着 AI 大模型的技术突破,用自然语言与数据进行对话的 ChatBI 概念也变得火热起来,人们普遍认为这件事终于具备了可行性。于是,业界很自然地沿着大模型(LLM)这条技术路线进行探索,期待它能理解业务人员的随意提问并直接返回数据结果。

然而,理想很丰满,现实却有点骨感:LLM 方案始终存在“幻觉”问题,而且成本高昂、部署与调优过程也相当复杂。

我们注意到,在 BI 这个特定场景下,业务人员用于查询数据的自然语言,其实并没有日常对话那么随意和复杂。诸如“上月销售额”、“销量最高的产品”、“北京地区的客户销售额”这类问题,其语义模式实际上是可抽象、可结构化的。润乾报表 NLQ 组件正是基于这一洞察,绕开了大模型的技术路线,通过一套精密的“规则词典”,同样实现了高效、可靠的自然语言查询。

核心机制:它不是“大脑”,而是“交通指挥塔”
你可以把大模型想象成一个博览群书、反应迅捷的“天才”,但它有时会“自由发挥”。而润乾 NLQ,则像一个一丝不苟、精通所有交规和地图的“交通指挥塔”。它的工作,不靠灵感,靠的是一套预先录入的、极其详尽的“城市交通手册”——也就是它的词典,也就是领域知识库。

承载领域知识的词典
这套词典是 NLQ 的灵魂,远不止是几个同义词那么简单,而是一个结构化的知识库:

数据元数据词典:明确定义了有哪些表(如订单表)、哪些字段(如客户名称、订单金额),以及它们的数据类型(文本、数字、日期)。这是最基础的“地图”。

业务语义词典:这是让 NLQ“懂业务”的关键。

维词:定义了像年、月、省份、产品类别这样的分析维度。NLQ 知道“月”是从日期字段里提取出来的一个层次。

指标:定义了像销售额、月活数这样的业务指标。关键是,指标可以绑定计算公式!比如“销售额”可能就是“单价 × 数量”,而“毛利率”则有更复杂的计算逻辑。这杜绝了 LLM 胡编乱造公式的可能。

常数词:枚举出的维度值,比如看见“北京”就知道要对应“城市”维下的具体 ID。

……

查询逻辑词典:这是理解用户意图的“语法手册”。

比较词:如大于、不超过、在... 之间。每个词都对应一个表达式,比如“大于”对应?1 > ?2,其中?1 是字段,?2 是值。

聚合词:如总和、平均数、最多,对应 SQL 中的 SUM,AVG,MAX 等函数。

无效词:如请帮我查一下、那个,这些在分析时会被过滤掉,提高语句解析的准确率。
……

从自然语言到 MQL 的标准化转换
在 BI 场景中,绝大多数查询都可以归纳为对维度、指标、条件的不同组合,这正是模式化查询的基础。润乾 NLQ 定义了专用的MQL(Metrics Query Language)作为中间查询语言,专门用于描述这种模式化的 BI 查询需求。

用户输入的相对规范的自然语言,会首先被转换成结构化的 MQL 语句,再转换成 SQL 到数据库查询并返回结果。
6f7cb2798bed4f5ed5d6e4c82b98a965_1762750883043100.png
事实上,大多数 Text2SQL 技术都会采用某种中间查询语言来解决自然语言到 SQL 转换的精确性问题。这样可以将不确定性限制在自然语言到中间语言的转换环节,而确保从中间语言到 SQL 的生成是精确的。润乾 NLQ 也是同样机制,不同之处在于,其专用的 MQL 采用了类 SQL 的语法而不是常见的 json 结构,而且在查询覆盖范围要远比大多数 Text2SQL 更为广泛。

例如,"40 岁以上雇员姓名、年龄、城市和省"这样的单表明细查询,NLQ 能够精准识别年龄过滤条件并返回所需字段;而"每月订单数 "这样的单表聚合分析,MQL 会自动按月份分组并完成计数计算。

在处理复杂业务逻辑时,MQL 同样表现出色。面对"订单编码,商品名称,供应商名称和城市 "这样的多表关联查询,NLQ 能够自动解析表间关系,准确关联三张表中的信息;而对于"每年的付款数和总销售金额 "这类多表对齐分析,MQL 也可以实现不同事实表在同一时间维度下的指标对齐计算。

更复杂的是,MQL 还能应对"订单金额总和大于 20 万元的女员工 "这样的子表聚合条件查询,NLQ 会先在订单表中按员工聚合金额,再将结果作为条件过滤员工信息。即使是"月连涨天数大于 5 天 "这样的复杂指标计算,MQL 也能通过内置函数准确实现业务逻辑。

一个具体的查询过程
当用户输入“去年北京发往青岛的订单”时,NLQ 会启动一套精密的解析流程:

词汇切分与过滤:NLQ 首先将句子拆解为“去年”、“北京”、“发往”、“青岛”、“订单”等关键令牌,并过滤掉“的”等无实际查询意义的虚词。

词典匹配与语义关联:

去年→ 匹配到“年”维词,其表达式自动计算为 year(ADDYEARS(now(),-1))。

北京 / 青岛→ 匹配到“城市”维的常数词,看到“北京”“青岛”,NLQ 知道它对应“城市”维下的一个具体 ID,自动完成语义映射。

发往→ 识别为关键动词,该动词关联到“发货”字段簇。字段簇是 NLQ 的核心特色:这里的动词 "发往" 关联的 "发货" 字段簇,实际上是一个预定义的语义包,其中包含了发货城市、收货城市、发货时间等多个相关字段。NLQ 据此智能理解 "北京" 应对应发货城市,"青岛" 应对应收货城市。通过“发往”这个动词,就知道了涉及“发货地”和“收货地”两个地址的匹配,从而精准构建查询条件。

订单→ 匹配到“订单”实体,确定了查询的主表及需要返回的默认字段集。

MQL 生成:将所有匹配结果组装成一条结构化的 MQL 语句。该语句清晰地描述了查询逻辑:从订单表,筛选出“发货城市为北京、收货城市为青岛、订单年份为去年”的所有记录,并返回预设的订单核心信息。

执行与返回:MQL 引擎将逻辑转换为底层数据库可高效执行的 SQL,最终将精准的查询结果返回给用户。

硬核优势:在 BI 战场上“稳、省、简”
这套基于规则的设计,在企业 BI 场景下带来了实实在在的好处:

稳定可靠,告别“幻觉”:NLQ 的词典是“知之为知之,不知为不知”。如果用户的查询中有一个词(比如“用户活跃度”)没有在词典中定义,NLQ 会明确告诉你“无法识别”,请求换种说法。它不会像 LLM 那样,为了给出一个答案而编造一个看似合理实则错误的结果。这样不仅解决了中间语言到 SQL 的精确性问题,同时也依靠词典实现了从自然语言到中间语言的精确,从而保证整个流程都是精确的。这种精确性对于依赖数据决策的 BI 场景至关重要。

成本极低,部署简单:规则引擎计算开销很小,普通 CPU 服务器即可流畅运行多个并发任务,实现私有化部署的成本可比大模型方案降低一两个数量级。相比之下,大模型方案通常需要昂贵的 GPU 集群和复杂的 RAG 等配套技术栈,显得笨重而复杂。

知识透明,可调试、可维护:当业务逻辑变化时,比如“销售额”的计算规则需要扣除运费,管理员只需要在指标词典里修改一下公式。整个过程像修改配置文档一样清晰、可控。而 LLM 方案则需要重新收集数据、微调模型,过程是个黑盒,且成本高昂。

其实不止于 SQL:它自带了一个“计算引擎”
事实上,MQL 生成的执行逻辑并不完全是 SQL,它背后站着 DQL 和 SPL 两大“护法”。

DQL(Dimensional Query Language):负责把复杂的多表关联查询,在语义层简化成逻辑上的单表查询。用户问“上海的客户买了哪些北京生产的产品”,这种涉及客户表、订单表、产品表的多层关联,DQL 在背后默默搞定,让 NLQ 可以像查询单表一样轻松。

SPL(Structured Process Language):当遇到 SQL 写起来都头疼的复杂计算时,SPL 就登场了。比如计算“移动平均”、“客户留存率”、以及“月活数量”等。NLQ 可以调用封装好的 SPL 脚本进行后计算,对于 BI 场景,它能实现的查询功能,要比传统 Text2SQL 的范围更为丰富。

前面流程图中所示的“MQL->SQL”过程实际上是简化的表述。在实际执行过程中,MQL 会根据查询的复杂程度,智能地选择执行路径:简单的查询由 DQL 直接生成 SQL 到数据库执行;涉及复杂计算时,则会分解为SPL+DQL的组合,其中 DQL 负责将多表关联逻辑转换为 SQL 查询,而 SPL 则处理那些 SQL 难以表达的复杂计算逻辑。

da96863a50f5bd5a0857b8dcc16a2f25_1762750883323100.png
客观吐槽:“边界”也很清晰
当然,NLQ 并非完美,它的局限性同样源于其设计:

灵活性是硬伤:它无法理解“卖得最火的几个货”这种随意的口语。它需要相对规范的语言,比如“销量前十名的产品”。它的强大建立在“词典”的完备性上,对于词典之外的“新词”和“新说法”,它是真的“无能为力”。

知识更新需要人工:NLQ 不具备举一反三的学习能力。一个新的业务指标上线,必须由管理员手动添加到词典中,它才能被查询。

“双打”或许是最佳组合
既然 LLM 长于“灵活理解”,NLQ 善于“精准执行”,那么为何不让它们组队呢?

一个非常理想的架构是:LLM 作为“智能前台”,负责与用户进行多轮、随意的口语对话,理解其核心意图,并将其“翻译”成 NLQ 所能识别的、相对规范的自然语言指令。

这里的妙处在于:让 LLM 完成从“随意文字”到“规范文字”的转换,这远比让它直接生成某种结构化的 MQL 要简单。而且,转换后的文字业务用户能看懂,而直接生成 MQL 或 SQL 则难以由不懂技术的 BI 用户确认正确性。经过确认后,再由 NLQ 这个“可靠后台”精准执行,最终得到一个既符合用户意图、又准确的结果。

这样,既享受了 LLM 的交互友好性,又保证了 NLQ 的查询准确性和低成本,可谓鱼与熊掌兼得。

当 ChatBI 的探索大多集中于大模型这一虽然广阔但充满不确性的“主航道”时,润乾 NLQ 以其独特的“规则引擎”别辟蹊径,为我们提供了另一种经过实践验证的可靠选择。它或许没有大模型那般“万能的想象力”,但在 BI 这个需要确定性、可靠性与成本控制的领域,这种专注于“解决特定问题”的另辟蹊径,无疑是一条值得重视的务实之路。

相关文章
|
3月前
|
SQL 自然语言处理 BI
万字长文解析 NLQ 破局 Text2SQL,兼得灵活复杂准确
润乾NLQ创新采用“规范文本”作中间层,兼顾问题灵活性与查询准确性。通过人类可读的规范文本确认意图,结合规则引擎生成精确SQL,并支持复杂查询,以低成本实现企业级Text2SQL的可靠落地,突破传统三难困境。
|
3月前
|
人工智能 自然语言处理 数据可视化
2025 ChatBI 产品选型推荐:智能问数+归因分析+报告生成
当企业站在 ChatBI 选型的十字路口,技术架构的先进性、场景适配的完整性、落地实践的可验证性应成为核心考量标准。
|
3月前
|
SQL XML 自然语言处理
Text2SQL 破局技术解析之一:规范文本与灵活性
润乾NLQ创新采用“规范文本”作为中间层,将自然语言转SQL分为三阶段:LLM生成可读的规范文本,用户确认意图后,通过规则引擎转为MQL再生成准确SQL。该方案兼顾灵活性、准确性与复杂查询支持,大幅降低企业实施成本,为人机协同的Text2SQL提供了可行的工程化路径。
|
2月前
|
SQL 人工智能 自然语言处理
人人都能实施的智能问数,中小用户也能玩得转的 Text2SQL
润乾NLQ以“规则翻译”替代大模型“黑盒猜测”,将自然语言精准转为数据库指令,实现零幻觉、低成本、高可靠的智能问数。无需AI专家和GPU集群,普通团队也能快速部署,让数据查询像查字典一样准确可控,真正赋能中小企业实现安全、透明、可管理的BI分析。
|
6月前
|
SQL 机器学习/深度学习 人工智能
从“写SQL”到“聊数据”:NL2SQL如何用自然语言解锁数据库?
本文系统性地阐述了自然语言转SQL(NL2SQL) 技术如何让非技术背景的业务分析师实现数据自助查询,从而提升数据驱动决策的效率与准确性。
从“写SQL”到“聊数据”:NL2SQL如何用自然语言解锁数据库?
|
3月前
|
SQL 自然语言处理 算法
Text2SQL 破局技术解析之二:MQL 实现与复杂性
本文深入解析润乾NLQ架构中MQL的设计逻辑与实现机制。作为规范文本的确定性编译目标,MQL通过四类查询范式,构建精确语义基准,消除自然语言歧义。结合DQL的维度关联与SPL的复杂计算,形成层次清晰、协同高效的Text2SQL解决方案,平衡表达力与规范性,支撑企业级BI分析。(238字)
|
2月前
|
SQL 存储 人工智能
Text2SQL 破局技术解析之三:NLQ 词典与准确性
本文深入解析润乾NLQ的“大脑”——NLQ词典,揭示其如何通过表与实体、宏字段、字段簇、维词、量词等结构化规则,将自然语言精准转化为MQL。词典作为语义映射核心,结合可视化设计与业务封装,实现高准确、可解释、易维护的Text2SQL方案,破解灵活性、准确性与复杂性三难困境。
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
大型行动模型(LAM)全解析:从概念到落地的完整指南
大型行动模型(LAM)正推动AI从“能说”迈向“会做”的革命。据中国信通院报告,全球智能体市场将从2024年51亿美元增至2030年471亿美元,年复合增长率达44.8%。LAM融合多模态感知、任务规划与环境交互,实现“思考即行动”,在办公自动化、智能客服、数据分析等场景展现强大潜力。微软研究表明,LAM在Word操作中任务成功率高达71%,效率较GPT-4o提升近3倍。作为企业“数字员工”,LAM正重塑AI应用格局,开启智能行动新纪元。
592 0
|
10月前
|
SQL 人工智能 自然语言处理
Text2SQL圣经:从0到1精通Text2Sql(Chat2Sql)的原理,以及Text2Sql开源项目的使用
Text2SQL圣经:从0到1精通Text2Sql(Chat2Sql)的原理,以及Text2Sql开源项目的使用
Text2SQL圣经:从0到1精通Text2Sql(Chat2Sql)的原理,以及Text2Sql开源项目的使用