如何实现基于大模型的 ChatBI?一文读懂 Text-to-SQL 技术路线
ChatBI 通过将复杂的数据分析过程简化为用户与机器的对话,使得用户无需具备专业的数据分析技能,也能轻松获取所需的数据洞察,将极大地降低数据分析门槛,提高数据分析的效率和便捷性。
实现 ChatBI 最核心的技术是 Text-to-SQL,旨在将用户的自然语言转化成机器可以执行的 SQL,这也是 ChatBI 最大的技术难点。
随着技术的发展,Text-to-SQL 的技术路线经历了三个阶段的发展:2017 年以前,Text-to-SQL 主要是基于规则;2017-2022 年,基于机器学习/深度学习的 Text-to-SQL 技术路线成为主流;2023 年以后,大模型出现,业界开始探索基于大语言模型的 Text-to-SQL。
第一阶段(2017 以前):基于规则
1. NaLIR
NaLIR 是用于查询关系数据库的通用交互式自然语言界面。它可以输入逻辑复杂的英语句子进行查询。该查询首先会被转换成 SQL 查询,其中可能包括聚合、嵌套和各种类型的连接等,然后根据 RDBMS 进行评估。NaLIR 虽然远不能通过图灵测试,但在实践中完全可用,甚至能够处理各种应用领域中相当复杂的查询。此外,NaLIR 还可以通过精心设计的交互式通信来避免误解,同时将用户的负担降到最低。
2. ATHENA
ATHENA 是一种本体驱动的系统,用于对复杂的关系数据库进行自然语言查询。数据库的自然语言界面能让用户轻松访问数据,而无需学习复杂的查询语言(如 SQL)。ATHENA 使用特定领域的本体来描述领域中的语义实体及其关系。ATHENA 提出了一种独特的两阶段方法,即首先将输入的自然语言查询(NLQ)转换成本体的中间查询语言(OQL),然后再转换成 SQL。两阶段方法使用户能够将关系存储中数据的物理布局与查询语义解耦,从而提供物理独立性。此外,本体还提供了更丰富的语义信息,如继承关系和成员关系,这些信息在关系模式中都会丢失。通过本体推理,ATHENA 的 NLQ 引擎能够准确捕捉用户意图。工程师在地理(GEO)、学术(MAS)和金融(FIN)数据上使用三种不同的工作负载研究了此方法的有效性。ATHENA 在地理(GEO)和学术(MAS)工作负载上实现了 100% 的精确度,在金融(FIN)工作负载上实现了 99% 的精确度。此外,ATHENA 在 GEO、MAS 和 FIN 工作负载上的召回率分别为 87.2%、88.3% 和 88.9%。
3. Analyza
Analyza 是帮助非专业用户浏览数据的系统,已在两个大型现实系统中进行使用。第一个是电子表格产品中的问答功能。第二个系统为大型销售团队提供了便捷的收入/库存数据库访问途径。这两个用户群都包含了无编程背景的业务人员,这也充分证明了 Analyza 能够实现非 IT 人员的无门槛使用。
4. SQLizer
SQLizer 是一种从自然语言(NL)自动合成 SQL 查询的新技术。该技术的核心是一种基于 NL 的新程序合成方法,它将 NLP 界的语义解析技术与类型定向程序合成和自动程序修复相结合。从使用标准解析技术获得的程序草图开始,涉及一个迭代完善循环,在概率类型推断和自动草图修复之间交替进行。作者利用所提出的想法构建了一个名为 SQLIZER 的端到端系统,该系统可以从自然语言中合成 SQL 查询。这个方法是完全自动化的,适用于任何数据库,无需额外定制,也不要求用户了解底层数据库模式。作者对有关 MAS、IMDB 和 YELP 这三个不同数据库的 450 多个自然语言查询进行了评估。实验表明,在接近 90% 的情况下,所需的查询会被排在前 5 位候选者中,而且 SQLIZER 的性能优于 NALIR,后者是一款先进的工具,曾在 VLDB'14 上获得最佳论文奖。
第二阶段(2017-2022):基于机器学习/深度学习
5. Seq2SQL
世界上大量的知识都存储在关系数据库中。然而,由于缺乏对 SQL 等查询语言的理解,用户从数据库中检索事实的能力受到了限制。作者提出的 Seq2SQL 是一种将自然语言问题转换为相应 SQL 查询的深度神经网络。通过模型利用 SQL 查询的结构,大大缩小了生成查询的输出空间。此外,作者还利用在数据库中执行在环查询所获得的奖励来学习生成查询无序部分的策略,研究表明,无序部分不太适合通过交叉熵损失进行优化。此外,作者还将发布 WikiSQL 数据集,该数据集包含 80654 个手工标注的问题示例和分布在维基百科 24241 个表中的 SQL 查询。这个数据集是训练模型所必需的,它比同类数据集大一个数量级。通过将基于策略的强化学习和查询执行环境应用于 WikiSQL,该模型 Seq2SQL 超越了注意序列模型,执行准确率从 35.9% 提高到 59.4%,逻辑形式准确率从 23.4% 提高到 48.3%。
6. TypeSQL
通过自然语言与关系数据库交互,可以帮助任何背景的用户轻松查询和分析大量数据。这就需要一个能理解用户问题并将其自动转换为 SQL 查询的系统。作者提出了一种新颖的方法–TypeSQL,将这一问题视为一个槽填充任务。此外,TypeSQL 还利用类型信息来更好地理解自然语言问题中的罕见实体和数字。作者在 WikiSQL 数据集上对这一想法进行了测试,结果表明该方法在更短的时间内以 5.5% 的优势超越了先前的最先进方法。研究还表明,当用户的查询格式不完善时,访问数据库内容可以显著提高性能。TypeSQL 获得了 82.6% 的准确率,与之前的内容敏感模型相比绝对提高了 17.5%。


