使用自然语言生成SQL
作者:互联网 时间: 2026-08-29 20:35:54
这是关于在 SDP 软件中使用自然语言生成 SQL 的创新探索,值得一看!核心内容:1. SDP 支持自然语言生成 SQL 的基础信息2. 实现自然语言生成 SQL 的工作步骤3. 自然语言生成 SQL 的调优思路

概述在我们SDP软件里,有一个异构数据浏览器工具,主要是可以查包括mysql,clickhouse,doris等各类数据源,通过SQL语句查询数据,在AGI发展的今天,我们已经可以使用自然语言生成SQL了,而且能较好的支持多表关联,这主要取决于我们SDP可以提供如下基础信息:完备的数据字典:包括字段说明,表说明,字段关联信息配置(类似外键信息),索引信息等业务常见SQL的收藏库,可让AI更好的理解和生成SQL同义词库:如表名的同义词等做这件事的主要目的是:非技术人员可以使用自然语言获取数据开发人员可用自然语言生成SQL提高开发效率(避免记忆繁杂的字段名和表名),微调SQL即可使用效果如下图:实现思路这个属于结构化RAG领域,相比一般RAG从文档中抽取结构化数据大同小异,我们主要做如下工作:准备数据集,写程序对数据做预处理- DDL:根据数据字典信息生成,用于告知AI所有字段的类型,长度等
- DB描述信息:描述字段和表的详细信息,如字段的外键,索引信息等
- 问答集:常见知识库,如曾经根据业务查询过的问题和生成SQL的键值对,便于让AI做更好理解
- 同义词库:建立如表名的同义词,便于更准确命中表名,或者特定领域术语
部署本地大模型:我们使用的是QWen 2.5,4090GPU显卡,支持上下文月9K,所以针对个别表特别多的字段超限的情况下,无法生成SQL,正常情况下足够了微调大模型提示语,让SQL生成更精准配置RAG流程,并整合到SDP可使用ragflow建立如下流程:调优思路:促进用户反馈:可在界面实现针对用户自然语言输入后,用户调优后的SQL存入QA问答库,从而减少手动维护的需求,在界面可加入比如点赞功能;管理特定领域同义词;尽可能给DDL语句表述完整:如字段,表的注释,主键,唯一键等;即可体验自然语言生成SQL。