基于大模型的 ChatBI 实现与 Text-to-SQL 技术路线演进
ChatBI 核心在于 Text-to-SQL 技术。该技术路线历经三个阶段:2017 年前基于规则(如 NaLIR、ATHENA);2017-2022 年基于机器学习/深度学习(如 Seq2SQL、TypeSQL、IRNet);2023 年后基于大语言模型(如 Din-SQL、DAIL-SQL)。文章梳理了各阶段代表性工作,分析了从规则匹配到语义解析再到生成式模型的演变过程及关键挑战。

ChatBI 核心在于 Text-to-SQL 技术。该技术路线历经三个阶段:2017 年前基于规则(如 NaLIR、ATHENA);2017-2022 年基于机器学习/深度学习(如 Seq2SQL、TypeSQL、IRNet);2023 年后基于大语言模型(如 Din-SQL、DAIL-SQL)。文章梳理了各阶段代表性工作,分析了从规则匹配到语义解析再到生成式模型的演变过程及关键挑战。

ChatBI 通过将复杂的数据分析过程简化为用户与机器的对话,使得用户无需具备专业的数据分析技能,也能轻松获取所需的数据洞察,将极大地降低数据分析门槛,提高数据分析的效率和便捷性。
实现 ChatBI 最核心的技术是 Text-to-SQL,旨在将用户的自然语言转化成机器可以执行的 SQL,这也是 ChatBI 最大的技术难点。
随着技术的发展,Text-to-SQL 的技术路线经历了三个阶段的发展:2017 年以前,Text-to-SQL 主要是基于规则;2017-2022 年,基于机器学习/深度学习的 Text-to-SQL 技术路线成为主流;2023 年以后,大模型出现,业界开始探索基于大语言模型的 Text-to-SQL。
NaLIR 是用于查询关系数据库的通用交互式自然语言界面。它可以输入逻辑复杂的英语句子进行查询。该查询首先会被转换成 SQL 查询,其中可能包括聚合、嵌套和各种类型的连接等,然后根据 RDBMS 进行评估。NaLIR 虽然远不能通过图灵测试,但在实践中完全可用,甚至能够处理各种应用领域中相当复杂的查询。此外,NaLIR 还可以通过精心设计的交互式通信来避免误解,同时将用户的负担降到最低。
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%。
Analyza 是帮助非专业用户浏览数据的系统,已在两个大型现实系统中进行使用。第一个是电子表格产品中的问答功能。第二个系统为大型销售团队提供了便捷的收入/库存数据库访问途径。这两个用户群都包含了无编程背景的业务人员,这也充分证明了 Analyza 能够实现非 IT 人员的无门槛使用。
SQLizer 是一种从自然语言(NL)自动合成 SQL 查询的新技术。该技术的核心是一种基于 NL 的新程序合成方法,它将 NLP 界的语义解析技术与类型定向程序合成和自动程序修复相结合。从使用标准解析技术获得的程序草图开始,涉及一个迭代完善循环,在概率类型推断和自动草图修复之间交替进行。作者利用所提出的想法构建了一个名为 SQLIZER 的端到端系统,该系统可以从自然语言中合成 SQL 查询。这个方法是完全自动化的,适用于任何数据库,无需额外定制,也不要求用户了解底层数据库模式。作者对有关 MAS、IMDB 和 YELP 这三个不同数据库的 450 多个自然语言查询进行了评估。实验表明,在接近 90% 的情况下,所需的查询会被排在前 5 位候选者中,而且 SQLIZER 的性能优于 NALIR,后者是一款先进的工具,曾在 VLDB'14 上获得最佳论文奖。
世界上大量的知识都存储在关系数据库中。然而,由于缺乏对 SQL 等查询语言的理解,用户从数据库中检索事实的能力受到了限制。作者提出的 Seq2SQL 是一种将自然语言问题转换为相应 SQL 查询的深度神经网络。通过模型利用 SQL 查询的结构,大大缩小了生成查询的输出空间。此外,作者还利用在数据库中执行在环查询所获得的奖励来学习生成查询无序部分的策略,研究表明,无序部分不太适合通过交叉熵损失进行优化。此外,作者还将发布 WikiSQL 数据集,该数据集包含 80654 个手工标注的问题示例和分布在维基百科 24241 个表中的 SQL 查询。这个数据集是训练模型所必需的,它比同类数据集大一个数量级。通过将基于策略的强化学习和查询执行环境应用于 WikiSQL,该模型 Seq2SQL 超越了注意序列模型,执行准确率从 35.9% 提高到 59.4%,逻辑形式准确率从 23.4% 提高到 48.3%。
通过自然语言与关系数据库交互,可以帮助任何背景的用户轻松查询和分析大量数据。这就需要一个能理解用户问题并将其自动转换为 SQL 查询的系统。作者提出了一种新颖的方法–TypeSQL,将这一问题视为一个槽填充任务。此外,TypeSQL 还利用类型信息来更好地理解自然语言问题中的罕见实体和数字。作者在 WikiSQL 数据集上对这一想法进行了测试,结果表明该方法在更短的时间内以 5.5% 的优势超越了先前的最先进方法。研究还表明,当用户的查询格式不完善时,访问数据库内容可以显著提高性能。TypeSQL 获得了 82.6% 的准确率,与之前的内容敏感模型相比绝对提高了 17.5%。
IRNet 神经方法用于复杂的跨领域文本到 SQL。IRNet 旨在解决两个难题:1)自然语言(NL)中表达的意图与 SQL 中的实现细节不匹配;2)大量域外词导致的列预测难题。IRNet 将合成过程分解为三个阶段,而不是端到端地合成 SQL 查询。在第一阶段,IRNet 对问题和数据库模式进行模式链接。然后,IRNet 采用基于语法的神经模型来合成 SemQL 查询,作为连接 NL 和 SQL 而设计的中间表示法。最后,IRNet 利用领域知识从合成的 SemQL 查询中确定性地推导出 SQL 查询。在极具挑战性的文本到 SQL 基准 Spider 上,IRNet 实现了 46.7% 的准确率,与之前最先进的方法相比绝对提高了 19.5%。在撰写本文时,IRNet 在 Spider 排行榜上排名第一。
在现有复杂的文本到 SQL 模型中,schema linking 通常被视为一个简单的次要组成部分,与其重要性不符。通过提供基于 Spider 文本到 SQL 数据集的 schema linking 语料库,作者系统地研究了模式链接的作用,还建立了一个简单的 BERT-based 基础'Schema-Linking SQL (SLSQL)',以进行数据驱动的研究。研究发现,尽管结构简单,但如果 schema linking 做得好,SLSQL 在 Spider 上就会表现出良好的性能。剩下的许多错误可归因于语料库噪声。这表明 schema linking 是当前文本到 SQL 任务的关键。作者的分析研究为今后开发文本到 SQL 任务提供了 schema linking 特性方面的见解。
解决自然语言描述与相应的 SQL 查询之间的不匹配问题是文本到 SQL 转换的关键挑战。为了解决这个问题,作者提出了一种名为 Natural SQL(NatSQL)的 SQL 中间表示法(IR)。具体来说,NatSQL 保留了 SQL 的核心功能,同时对查询进行了如下简化:(1) 省去了运算符和关键字,如 GROUP BY、HAVING、FROM、JOIN ON,这些运算符和关键字通常很难在文本描述中对应找到;(2) 不再需要嵌套子查询和集合运算符;(3) 通过减少所需的模式项数量,使模式链接变得更容易。在包含复杂嵌套 SQL 查询的具有挑战性的文本到 SQL 基准测试 Spider 上,本文证明了 NatSQL 的性能优于其他 IR,并显著提高了之前几种 SOTA 模型的性能。此外,对于不支持可执行 SQL 生成的现有模型,NatSQL 可轻松使其生成可执行 SQL 查询,并达到新级别的执行精度。
目前,在具有挑战性的文本到 SQL 任务上,使用大语言模型(LLM)的微调模型和提示方法的性能存在明显差距,这是在 Spider 等数据集上进行评估后得出的结果。为了提高 LLM 在推理过程中的性能,作者研究了如何将任务分解为更小的子任务才能有效。特别是将生成问题分解为子问题,并将这些子问题的解决方案输入 LLM 是显著提高其性能的有效方法。作者用三个 LLM 进行的实验表明,这种方法能将其简单的小样本性能持续提高约 10%,使 LLM 的准确度接近或超过 SOTA。在 Spider 的 holdout 测试集上,以执行准确率计算的 SOTA 为 79.9,而在论文撰写时,使用此方法得出的新 SOTA 为 85.3。作者采用上下文学习的方法比许多经过大量微调的模型至少高出 5%。此外,在 BIRD 基准上进行评估时,此方法达到了 55.9% 的执行准确率,在其保留测试集上创造了新的 SOTA。
大型语言模型(LLM)已成为文本到 SQL 任务的新范式。然而,由于缺乏系统的基准,阻碍了设计有效、高效和经济的基于 LLM 的文本到 SQL 解决方案的发展。为了应对这一挑战,在论文中首先对现有的提示工程方法(包括问题表示、示例选择和示例组织)进行了系统而广泛的比较,并根据这些实验结果阐述了它们的优缺点。在此基础上,作者提出了一种名为 DAIL-SQL 的全新集成解决方案,它以 86.6% 的执行准确率刷新了 Spider 排行榜,并树立了新的标杆。为了探索开源 LLM 的潜力,作者在各种场景中对它们进行了研究,并通过监督微调进一步提高了它们的性能。这个探索凸显了开源 LLM 在文本到 SQL 中的潜力,以及监督微调的优缺点。此外,为了实现高效、经济的基于 LLM 的文本到 SQL 解决方案,作者强调了提示工程中的标记效率,并在此指标下对之前的研究进行了比较。
作者研究了文本到 SQL 任务中的提示设计问题,并试图提高 LLM 在生成 SQL 查询时的推理能力。除了少量的 few-shot 上下文学习设置外,作者还采用了与模式链接类似的方法来设计思维链(CoT)提示。作者提供了一种名为 ACT-SQL 的方法来自动生成 Auto-CoT 示例,因此整个过程无需人工标注。这个方法节省了成本,因为在生成一个 SQL 查询时,用户只需使用一次 LLM 的 API 调用。此外,作者还将上下文学习方法扩展到了多轮文本到 SQL 任务。实验结果表明,LLMs 的性能可以从 ACT-SQL 方法中获益。在现有的上下文学习方法中,此方法在 Spider dev 数据集上实现了 SOTA 性能。
本文提出了一种基于 ChatGPT 的 Zero-shot 零样本 Text-to-SQL 方法(称为 C3),核心在于 Prompt 工程的设计,给出了如何设 Prompt 来优化生成效果。该方法在 Spider holdout 测试集上的执行准确率达到了 82.3%,成为 Spider 挑战赛上最先进的零样本零样本 Text-to-SQL 方法。C3 由三个关键部分组成:清晰提示(CP)、提示校准(CH)和一致输出(CO),分别对应模型输入、模型偏差和模型输出。它为零样本 Text-to-SQL 提供了一个系统化的方法。为了验证该方法的有效性和效率,作者进行了广泛的实验。
现有的文本到 SQL 需要将整个模式与用户文本一起编码。这对于拥有数万列的大型数据库来说,成本极高也不现实。标准的密集检索技术不适合大型结构化数据库的模式子集,在这种情况下,正确的检索语义要求我们对模式元素集而不是单个元素进行排序。为此,作者提出了一个在检索过程中实现有效覆盖的两阶段流程。首先,指示 LLM 幻化出一个被认为足以回答查询的最小数据库模式。再使用幻觉模式检索实际模式的子集,将多个密集检索的结果组合在一起。值得注意的是,幻觉(通常被认为是一种麻烦)作为一种桥接机制实际上非常有用。由于没有针对大型数据库模式子集的现有基准,本文引入了三个基准。两个半合成数据集来自 SPIDER 和 BIRD 这两个著名数据集的模式联合,分别产生了 4502 个和 798 个模式元素。一个名为 SocialDB 的现实基准数据集来自一个实际的大型数据仓库,包含 17844 个模式元素。研究表明,此方法的召回率明显高于基于 SOTA 检索的增强方法。
基于 LLM 的 Text-to-SQL 方法在处理大型数据库和复杂用户问题时通常会出现明显的性能下降。需要多步推理的复杂用户问题时,性能会明显下降。此外,大多数现有方法都忽视了利用外部工具和模型协作的重要意义。为了解决这些挑战,本文引入了 MAC-SQL,一种新颖的基于 LLM 的 multi-agent 协作框架。MAC-SQL 框架由一个核心分解器 agent 组成,用于生成文本到 SQL,并带有两个辅助 agent 利用外部工具或模型获取较小的子数据库并改进错误的 SQL 查询。分解器 agent 与辅助 agent 协作,后者可根据需要激活,并可扩展以适应新功能或工具,以实现有效的 Text-to-SQL 解析。在 MAC-SQL 框架中,作者最初利用 GPT-4 作为所有 agent 任务的主要 LLM,以确定框架的上限。然后,作者对开源 SQL-Llama 进行微调,利用 Code Llama 7B 完成 GPT4 所做的所有任务。实验表明,SQL-Llama 的执行精度达到了 43.94,而普通 GPT4 的基准精度为 46.35。在撰写本报告时,MAC-SQL+GPT-4 的执行精度为 59.59。在 BIRD 基准进行评估时,MAC-SQL+GPT-4 的执行精度达到了 59.59,并在 holdout 测试集上达到了新的 SOTA。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online
解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online
CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online