NL2SQL调研
一 背景
1.1 引言
随着数据时代的到来,数据库已成为企业和组织存储、管理和分析数据的核心基础设施。然而,传统的数据库查询需要使用结构化查询语言(SQL),这要求用户具备特定的技术知识,限制了数据库的广泛使用。自然语言到SQL(NL2SQL)技术的出现,旨在弥合这一鸿沟,使非技术用户也能通过自然语言与数据库进行交互,从而提高数据库的可用性和数据驱动决策的效率。
1.2 目的
随着大模型的涌现,赋能各种应用场景,我们想寻找一种方法,能否帮助产业的数据库更加智能,能够使得非专业人员也能够实现读取数据库,并分析数据,于是找到NL2SQL的解决方案。
本报告将探讨NL2SQL技术,包括其背景意义、当前发展状况与挑战、解决方案及未来发展方向,为相关领域的研究人员和实践者提供系统性的参考。
- 了解其发展历程,经历的解决方案的演变,遇到的关键挑战,以及目前的挑战;
- 了解学术论文、商业的应用案例并分析;
- 以空调数据为研究对象,规划具体实施架构;
二 NL2SQL
2.1 简介
将用户的自然语言查询(NL)转换为 SQL 查询可以显著降低访问关系数据库的障碍,并支持各种商业应用。随着大语言模型(LLMs)的出现,NL2SQL 的性能得到了极大提高。在这种情况下,评估当前文本转 SQL 的转换、确定从业者针对特定场景应采用的 NL2SQL 解决方案以及确定研究人员接下来应探索的研究主题至关重要。
2.2 流程
数据分析人员使用数据的流程如下
人类工作流程:
- 理解自然语言查询:首先理解用户的意图,识别NL中的关键部分,例如实体或属性、时间上下文和特定条件。
- 链接数据库架构和检索内容:基于对NL的理解,检查数据库架构和内容,识别生成SQL所需的相关表、列和单元格值。
- 将NL意图转换为SQL:最后,根据对NL和数据库概念的理解,编写相应的SQL查询。
在这个过程中,数据分析人员要理解业务需求逻辑(即自然语言),然后将其转换为SQL语言,这是关键所在,也是数据分析人员的价值所在,即1.理解自然语言;2.理解sql语言;3.能够实现转换。
那我们类比到NL2SQL的工作流程
NL2SQL工作流程:
- NL Query:用户输入的自然语言查询。
- 预处理(Optional):
- Schema Linking:将自然语言查询中的实体与数据库模式进行链接。
- Database Content Retrieval:从数据库中检索相关内容。
- Additional Information Acquisition:获取额外的相关信息。
- NL2SQL Translation Methods:
- Encoding Strategy:包括顺序编码(Sequential Encoding)和基于图的编码(Graph-based Encoding)等。
- Backbone Model:可以是编码器-解码器(Encoder-Decoder)、仅编码器(Encoder-Only)或仅解码器(Decoder-Only)模型。
- Decoding Strategy:包括束搜索(Beam Search)和约束感知增量解码(Constraint-aware Incremental Decoding)等。
- 后处理(Optional):
- Correction:对生成的SQL查询进行校正。
- Consistency:确保生成查询的一致性。
- Execution-Guided N-best Rerankers:通过执行结果指导的N最佳重排序。
- SQL Query:最终生成的SQL查询。
2.3 发展
NL2SQL方法在过去二十年中经历了以下几种解决方案的演变:
- 基于规则的方法:早期研究主要集中在使用预定义规则或语义解析器来理解自然语言查询并将其转换为SQL查询。
- 基于神经网络的方法:为了解决基于规则的方法的局限性,研究者开始利用神经网络来解决NL2SQL任务
- 基于预训练语言模型的方法:随着BERT和T5等预训练语言模型的出现,基于PLM的NL2SQL方法在多个基准数据集上取得了竞争性的性能。
- 基于大型语言模型的方法:随着LLMs的出现,NL2SQL技术取得了显著进展,LLMs具有卓越的语言理解和新出现的能力,例如使用提示来执行NL2SQL任务。
在2020年以后,基于大预言模型的NL2SQL方法成为主流。
在NL2SQL的发展过程中,主流产品有Spider、BIRD、WikiSQL、KaggleDBQA、Chase。
国内产品开源工具和平台
- SQLTrans:完全免费开源,基于MIT许可证,允许用户使用Python进行SQL查询和数据分析。
- Vanna:基于MIT许可证,采用RAG技术,专为SQL生成和相关功能设计。
- SQLCoder:开源工具,专注于自然语言到SQL的转换。
- Chat2DB:阿里巴巴开源的工具,支持自然语言与SQL的互相转换。
企业级应用和产品: - NebulaAI:提供NL2SQL功能,免费开放给社区版用户,支持多种数据库。
- 阿里云DataWorks Copilot:通过大模型技术简化NL2SQL的实现路径,并在多个场景中取得良好效果。
2.4 挑战
可以看到在LLM阶段 ,主要挑战来自三个方面:自然语言的不确定性、数据库的复杂性和数据的不完整性、从自然语言到SQL的转换,即:
- 自然语言的不确定性:自然语言可能因歧义和不明确性而含有不确定性,例如词义歧义、句法歧义、信息不足和用户错误。
- 数据库的复杂性和数据的不完整性:数据库架构的复杂性和数据的庞大体量对NL2SQL任务的有效执行构成挑战,包括表之间的关系复杂性、列名的相似性、特定领域的架构变化以及大数据量和数据的不完整性。
- 从自然语言到SQL的转换:NL2SQL任务与高级编程语言到低级机器语言的编译不同,因为输入的NL和输出的SQL查询之间通常存在一对多的映射。
上面的三大挑战更具体的细节如下:
- 不确定的NL Query
- 词法歧义:一个单词具有多种含义
- 句法歧义:一个句子可以用好几种方式解析
- 用户错误:拼写和语法错误
- 表述不足:语言表述缺乏有效的细节来清晰地传达意图和意思
- 复杂的数据库和脏内容
- 表之间复杂的关系:数据库通常包含很多表,而且表之间有复杂的关系
- 属性和值的歧义:数据库中的属性或者值是有歧义的,例如两个表有相同的属性名,但是它们的含义不相同,造成了很难确定正确的上下文
- 特定领域的schema设计:不同的领域通常有独特的数据设计和模式特征
- 大而且脏的数据库数据值:在大型数据库中,有效地处理大量的数据列是非常重要的,数据值可能有些时候是不正确的
- NL2SQL转换
- 自由形式的自然语言到有限制且结构化的SQL转化:自然语言是灵活的但是SQL请求必须遵行语法规则
- 多种可能的SQL请求:一个自然语言请求可以对应满足要求的不同的SQL请求,这可能导致在决定正确的SQL翻译时有歧义
- 数据库schema依赖:NL2SQL转换过程高度依赖与它进行交互的数据库模式
- 技术上的挑战
- SQL语句的效率:NL2SQL模型生成的SQL语句必须既正确又运行效率高
- 模型的效率:模型在运行时间和生成SQL质量上的平衡
- 无效且有噪音的训练数据:需要高质量的训练数据来训练模型,但是通常公开的数据集是有噪音且质量不高 原文链接:https://blog.csdn.net/weixin_61597480/article/details/145078111
三 产品分析
3.1 DB-GDP
DB-GPT是一个融合大型语言模型(LLM)与数据库技术的开源框架,
DB-GPT的核心特点
- 自然语言驱动的数据库交互
- 支持自然语言转SQL(Text2SQL),用户可通过对话方式生成查询语句,降低非技术用户的使用门槛。
- 结合RAG(检索增强生成)框架,提升查询的准确性和相关性,减少模型“幻觉”现象。
- 多数据源与智能分析能力
- 支持Excel、数据库、数仓等多种数据源的自然语言交互,并可生成分析报告与可视化图表。
- 提供GBI(Global Business Intelligence)功能,支持跨数据源的综合分析。
- 模块化与可扩展架构
- 采用分层设计,包括训练层(DB-GPT-Hub)、协议层(AWEL 2.0)、模块层(RAG、Agent)、服务层(LLMServer、APIServer)等,支持灵活扩展。
- 支持多智能体(Multi-Agents)协作,通过AWEL协议实现任务编排与自动化决策。
- 隐私与安全保护
- 采用私有化大模型、代理脱敏、联邦学习等技术,确保数据本地化处理,避免隐私泄露。
- 支持离线部署,适用于金融、医疗等对数据安全要求高的行业。
- 高效向量检索与优化
- 引入VSAG向量索引库,优化高维向量存储与计算,内存消耗仅为HNSW的1/10,提升RAG构建效率。
- 结合图数据库(如TuGraph),增强复杂数据关系的检索能力。
DB-GPT的应用场景
- 企业数据治理与智能分析 :自动执行数据清洗、转换、质量监控,提升数据可用性。
- 智能客服与问答系统 :通过自然语言理解用户意图,提供精准回答,降低人工客服成本。
- 数据库优化与查询加速 :自动优化SQL查询(如查询重写、索引调整),提升数据库执行效率,实验显示延迟降低9.8%。
- 多模态数据整合与知识库问答 :支持PDF、网页、图像等非结构化数据的统一向量存储与检索,构建企业知识库。
- 自动化决策与AI代理 :结合插件机制(如Auto-GPT插件),实现自动化数据分析与任务执行。
实践
DB-GDP项目地址: https://github.com/eosphoros-ai/DB-GPT/
教学文档:https://www.yuque.com/eosphoros/dbgpt-docs/bex30nsv60ru0fmx
- 连接数据库分析
可以连接数据库,用户输入问题、要求,然后大模型读取数据库中的元数据,经过分析后生成相应的sql语句,并且可通过修改配置读取数据库中的数据。 - 上传数据分析
可通过上传数据文件,输入问题,大模型根据语义读取文件,分析并生成图表
3.2 DataLab
DataLab:DataLab | 基于LLM的统一BI平台
论文:https://arxiv.org/abs/2412.02205
DataLab是一款以大语言模型驱动的大数据智能体为基础的数据分析工具,目前仅在腾讯内部使用。它连接了Python、SQL、Pyspark等多种常用的数据分析语言,提供了智能数据分析与数据科学工具,入门门槛较高,适用于数据科学家。
挑战
- 对自适应LLM上下文管理的需求
- 任务之间的信息共享不足
- 缺乏领域知识整合
解决方案
- DataLab将 BI 工作流与基于一站式LLM的agent框架和jupyter notebook界面的集成统一起来的平台,以弥合不同角色、任务和工具之间的差距
- 开发了一种系统的方法,用于领域知识整合,以提高LLM-based agents在实际环境中完成企业特定 BI 任务的性能。
- 引入结构化的通信机制来制定不同agent之间的信息共享流程,以促进跨任务执行
- 提出了一种自适应上下文管理策略,以提高代理在notebook中的上下文利用能力,以提高效率和成本效益。
基于上面的三个挑战,应对策略分为三个模块:领域知识整合、代理通信、基于单元格的上下文管理
- 领域知识整合(Domain Knowledge Incorporation)
简单来说,领域知识整合模块接受三个输入:数据表的架构、关联的脚本历史记录(如SQL查询和Python代码),以及数据沿袭信息。然后,这个模块自动生成知识组件,组织成知识图谱,用于将模糊的用户查询转换为结构化的DSL(domain-specific languages (DSLs),提升BI任务性能。
流程:输入→处理→生成知识组件→构建知识图谱→转换查询→输出DSL→提升性能 - 代理间通信(Inter-Agent Communication)
- 模块将agnet间的信息流建模为FSM,节点是agent,边是信息转换方向。
- 任务完成后,每个代理输出结构化信息单元,包含标识符和描述。
- 该模块存在一个共享的信息缓冲区,代理基于FSM主动交换信息,提高效率。
- 基于单元格的上下文管理(Cell-based Context Management)
- 输入:变量引用和单元格内容(Python/SQL)
- DAG构建模块处理输入,生成DAG
- 用户查询触发遍历DAG,进行修剪
- 从共享缓冲区检索信息
- 生成上下文(原始单元格和信息单元)
- 代理使用上下文完成任务
3.3 Chat2DB
产品分析:https://www.cnblogs.com/mq0036/p/1
优点
- 开箱即用:操作简单,非常适合非技术人员
- 企业安全:支持端到端加密和权限管理,满足金融、医疗等领域数据合规问题
- 多数据源集成:兼容传统数据库和文件格式,避免数据孤岛问题
- 轻量化部署:相比需要独立服务器的Oracle等传统数据库,Chat2DB可能支持云服务器或个人电脑部署,降低运维成本
缺点
- 复杂查询效果不好,再加上缺少丰富的元数据支持,很难达到用户想要的成果,这也是text2sql的难题
- 使用的是传统大模型,就会出现在特定场景下语义理解偏差,即大模型没有经过微调
- 面对高并发场景和大规模数据集时,性能受限
适用场景 - 企业内部数据分析:适合快速生成报表的团队
- 作为传统数据库的补充工具:比如sql语句优化,快速理解表结构等
- 适用于简单的数据库
四 论文解读
4.1 基于深度学习的自然语言文本到SQL查询转换:综述
文章主要回顾了近年来在自然语言文本到SQL查询转换(TEXT2SQL)领域的研究进展,重点关注深度学习技术在其中的应用。 文章首先阐述了TEXT2SQL技术的背景和意义,指出其在数据驱动决策时代的重要性,以及为非技术用户提供便捷数据访问的潜力。然而,由于不同研究使用的数据集存在差异,以及缺乏对模型局限性的深入理解,现有的TEXT2SQL模型在实际应用中仍然面临挑战。 文章随后对24种近年来研究的神经网络模型进行了综述,包括卷积神经网络、循环神经网络、指针网络、强化学习、生成模型等。同时,文章也概述了11个广泛用于TEXT2SQL技术模型训练的数据集。 最后,文章探讨了TEXT2SQL技术的未来应用可能性,例如无缝数据查询、辅助非技术用户等。 重要亮点
- TEXT2SQL技术旨在通过自然语言与数据库交互,为用户提供便捷的数据访问方式。
- 深度学习技术在TEXT2SQL领域取得了显著进展,但仍存在数据集差异和模型局限性等问题。
- 文章综述了24种近年来研究的神经网络模型,包括卷积神经网络、循环神经网络、指针网络、强化学习、生成模型等。
- 文章概述了11个广泛用于TEXT2SQL技术模型训练的数据集。
- TEXT2SQL技术具有广泛的应用前景,例如无缝数据查询、辅助非技术用户等。
链接:https://arxiv.org/pdf/2208.04415
4.2 自然语言到SQL的黎明:我们是否完全准备好?
简介
从上面的“基于深度学习的自然语言文本到SQL查询转换:综述”,我们大致了解了TEXT2SQL发展历程,而本综述讲大语言模型这种新范式引入到TEXT2SQL中,增强了性能,那该如何对其进行评估,应用到生产,是一个主要问题,于是提出了NL2SQL360评估框架。
亮点
- NL2SQL360评估框架:为了评估NL2SQL技术的性能,作者提出了NL2SQL360评估框架,该框架可以从多个角度评估NL2SQL方法,包括数据域、SQL特性等。
- NL2SQL方法比较:通过NL2SQL360评估框架,作者对多种NL2SQL方法进行了比较,并分析了它们在不同场景下的表现。
- NL2SQL设计空间探索:作者利用NL2SQL360评估框架,探索了NL2SQL设计空间,并自动识别了针对特定用户需求的最佳NL2SQL解决方案。
- SuperSQL方法:在Spider数据集上,SuperSQL方法在执行精度指标上表现出色,取得了87%的执行精度。
链接: https://arxiv.org/html/2406.01265
参考
DataLab: A Unified Platform for LLM-Powered Business Intelligence
A survey on deep learning approaches for text-to-SQL
业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL]
The Dawn of Natural Language to SQL: Are We Fully Ready?
A Survey of NL2SQL with Large Language Models: Where are we, and where are we going?
霖梓控股Doris×ChatBI落地实践