自然语言到SQL(NL2SQL)技术允许不熟悉数据库的非专家用户使用SQL进行数据分析。NL2BI是NL2SQL在实际生产系统中的一个流行实际场景,它引入了更多的挑战,如 多轮对话(MRD) 和大型语言模型(LLMs)在架构链接中的 Token限制 。
NL2SQL和NL2BI问题之间的区别。 问题包含多轮对话,查询1:“过去七天的短视频播放量”,查询2:“周环比情况如何?”,查询3:“播放时长如何?”。 NL2BI问题需要处理复杂语义、比较和计算关系的能力,以及多轮对话 。两个问题的数据源也不同。
北邮联合百度联合 提出了 ChatBI ,这是一种全面高效的技术,用于解决NL2BI任务。ChatBI通过分析交互模式,设计了 更小、更经济的模型 来匹配这种交互模式。它利用数据库社区中现有的 视图技术 ,将架构链接问题 分解 为单视图选择问题,并使用 较小的机器学习模型 来选择列数显著减少的单个视图。
ChatBI总体架构
- 多轮对话匹配(Multi-Round Dialogues Matching) :ChatBI处理MRD场景,使用两个较小的Bert类模型进行文本分类和文本预测。
- 单视图选择 :ChatBI将架构链接问题转化为单视图选择问题,使用视图技术来解决列的歧义和数量问题。
- 分阶段处理流程 :ChatBI提出了一种不同于现有流程的处理流程,它首先生成包含复杂语义和比较关系的JSON中间结果,然后使用基于规则的SQL生成方法来产生目标SQL。
- 分阶段处理流程:ChatBI采用了一个创新的分阶段处理流程,该流程首先使用大型语言模型(LLMs)生成JSON格式的中间输出,然后将这些输出传递给BI中间件(如Apache SuperSet),以展示结果。这种方法与传统的直接依赖LLMs生成SQL的方法不同,它仅依赖于生成JSON。
- 复杂性解耦:通过将问题分解,ChatBI避免了LLMs直接处理SQL中的复杂语义、计算和比较关系。相反,LLMs只需要理解如何将这些复杂关系映射到JSON所需的输出。这种解耦方法简化了任务,提高了LLMs生成JSON的准确性。
- 虚拟列(Virtual Columns):ChatBI引入了虚拟列的概念,以处理那些需要从其他列计算得出的列,如“DAU”。虚拟列通过其对应的键(列名)来访问计算规则,这些规则存储在JSON中,称为JnM(Json nested Map)。这种方法允许LLMs生成包含复杂计算步骤的查询,同时提高了查询生成的效率。
- 模板和规则:在新的处理流程中,Apache SuperSet使用通用模板来生成SQL。LLMs生成的JSON输出充当填写这些模板的占位符,最终输出SQL。这种方法利用了数据库社区对基于维度和列生成SQL的广泛研究。
ChatBI在 百度的数据平台 上进行了部署,并集成到多条产品线中进行了大规模生产任务评估。结果显示ChatBI在 实用性、通用性和效率方面的优势 ,并在实际BI场景 数据表和查询下取得了最佳结果 。
SRD数据集和MRD数据集介绍。 主版本和轻量版本对应不同的应用程序。DAU代表日活跃用户,新用户指首次注册的用户。
𝐶ℎ𝑎𝑡𝐵𝐼: Towards Natural Language to Complex Business Intelligence SQL
https://arxiv.org/pdf/2405.00527
推荐阅读
- • 对齐LLM偏好的直接偏好优化方法:DPO、IPO、KTO
- • 2024:ToB、Agent、多模态
- • TA们的RAG真正投产了吗?(上)
- • Agent到多模态Agent再到多模态Multi-Agents系统的发展与案例讲解(1.2万字,20+文献,27张图)
欢迎关注我的公众号“ PaperAgent ”, 每天一篇大模型(LLM)文章来锻炼我们的思维,简单的例子,不简单的方法,提升自己。