SuperSQL
基于 RAG 技术的 Java Text-to-SQL 框架,让自然语言查询数据库成为可能
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于 RAG 技术的 Java Text-to-SQL 框架,让自然语言查询数据库成为可能
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:SuperSQL 项目 Logo
想象一下这个场景:凌晨两点,你正在赶一个紧急需求,产品经理突然发来一条消息:「帮我查一下过去三个月华东区销售额超过 100 万的大客户,按复购率排序」。
常规操作是:打开数据库客户端 → 回忆表结构 → 写 JOIN → 调试 2 小时 → 祈祷没写错。而有了 SuperSQL,你只需要把这句自然语言扔给框架,坐等 SQL 跑出来。这就是 SuperSQL 正在做的事——让 Java 开发者用中文「说话」来查询数据库。
SuperSQL 的作者郭成杰(guocjsh)是葛兰素史克(GSK)中国的工程师。在企业内部,数据分析是一项高频需求,但传统方式存在明显的效率瓶颈:业务人员无法直接写 SQL,必须依赖开发人员;开发人员不熟悉业务口径,双方沟通成本极高。这种「语言鸿沟」在大型企业项目中尤为突出。
正是这种真实痛点催生了 SuperSQL。这是一个完全由国内开发者主导的 Text-to-SQL 开源框架,采用 Apache 2.0 许可证开源,核心技术基于 RAG(检索增强生成)而非模型微调。目前在 GitHub 拥有 162 颗星、50 个 Fork,增长势头稳健。和其他 Text-to-SQL 方案相比,SuperSQL 的差异化在于它选择了一条更「工程化」的技术路线——不是训练一个通用大模型,而是基于 RAG 技术,让大模型先「学习」你的数据库表结构,再根据学习到的 schema 上下文生成 SQL。这种方式的优势是:不需要微调模型,也不需要 GPU,算力成本极低,效果稳定可控。
作者明确将项目定位为「中国人自己的生成式 SQL Java 框架」,强调「轻量、易用、易扩展」。从技术选型来看,这并非口号——SuperSQL 基于 Spring Boot 3,拥抱 Spring AI 生态,无缝融入企业现有的 Java 技术栈,这是它相对于 Python 类 Text-to-SQL 框架的核心优势。
SuperSQL 的技术核心是 RAG(Retrieval-Augmented Generation,检索增强生成)。整个流程可以概括为「训练」+「查询」两个阶段。
训练阶段:框架会自动连接目标数据库,读取所有表的元数据(表名、字段名、字段类型、注释、主键、外键等),将这些 schema 信息向量化后存入向量数据库。这个过程通过 SpringVectorStore 实现,本质上是将结构化的数据库 schema 转化为大模型可以理解的语义向量。当数据库表结构发生变化时,重新运行训练流程即可同步更新。
查询阶段:用户输入自然语言查询请求后,框架首先将用户问题向量化,然后在向量数据库中检索最相关的 schema 片段(如涉及哪些表、哪些字段),最后将检索到的 schema 上下文与用户问题一起组装成 Prompt,发送给配置的大语言模型(如 GPT-4o、Azure OpenAI、阿里通义等),由模型生成对应的 SQL 语句。
图2:SuperSQL 工作原理:RAG 训练 + 自然语言查询
这种设计有几个关键优势:
SuperSQL 采用 Maven 多模块架构,将功能拆分为六个独立子模块,每个模块各司其职:
| 模块 | 类型 | 说明 |
|---|---|---|
| super-sql-core | 核心引擎 | Text-to-SQL 核心逻辑、RAG 流程、SQL 生成引擎 |
| super-sql-spring-boot-starter | Spring Boot 集成 | 零配置接入 Spring Boot 项目 |
| super-sql-mybatis-plus | ORM 集成 | 与 MyBatis Plus 深度集成,兼容现有 DAO 层 |
| super-sql-console | 命令行工具 | 独立 CLI 程序,非 Web 环境也能使用 |
| super-sql-mcp | MCP 协议实现 | Model Context Protocol 集成,支持 AI Agent 调用 |
| super-sql-ui | Web 前端 | Vue 3 + Ant Design Vue,可视化查询界面 |
super-sql-core 是整个项目的基石,负责核心的 Text-to-SQL 逻辑。开发者可以根据需要单独引入 core 模块(对于已有 Spring Boot 项目的团队),也可以引入 spring-boot-starter 享受自动配置。对于需要可视化界面的场景,super-sql-ui 提供了开箱即用的 Vue 3 前端。
特别值得关注的是 super-sql-mcp 模块。MCP(Model Context Protocol)是 Anthropic 提出的模型上下文协议,旨在让 AI 模型更好地与外部工具和数据源交互。SuperSQL 实现了 MCP 协议,意味着它可以作为 AI Agent 的「数据库工具」,让大模型智能体直接调用 SuperSQL 来回答涉及数据库的问题。这是 SuperSQL 在 AI Agent 时代的布局,使它不仅仅是一个 Text-to-SQL 工具,更是一个可以融入 Agent 工作流的数据库中间件。
SuperSQL 的技术选型非常「企业级」:
后端核心:
前端界面:
从依赖清单可以看出,SuperSQL 是一款认真做的企业级产品,而非玩具项目。Java 21 + Spring Boot 3 的组合对运行环境有一定要求,但同时也意味着更好的性能和更长的技术支持周期。
SuperSQL 支持三种接入方式,满足不同场景需求:
方式一:Spring Boot 自动接入(推荐)
引入 starter 依赖后,只需几行 YAML 配置即可启用。配置 init-train: false 禁止自动训练后,手动控制训练时机,然后注入 SpringSqlEngine 和 SpringVectorStore,直接调用生成 SQL:
// 注入依赖
private final SpringSqlEngine sqlEngine;
private final SpringVectorStore store;
// 输入自然语言,输出 SQL
String sql = sqlEngine.generateSql("查询过去三个月华东区销售额超过100万的大客户");
方式二:命令行工具
通过 super-sql-console 模块,可以在服务器上直接运行命令行查询,不需要启动 Web 服务,适合运维和数据分析场景。
方式三:MCP 协议接入 AI Agent
super-sql-mcp 模块提供了 MCP STDIO 和 WebMVC 两种接入方式。AI Agent(如 Claude Desktop、Cline 等)可以直接调用 SuperSQL 作为数据库工具,执行跨表关联查询、数据统计等复杂操作。对于构建数据分析类 AI 助手,这个模块极具价值。
SuperSQL 目前主要针对 MySQL 8.0 进行了优化,支持存储过程和触发器解析。框架的 RAG 机制理论上支持任何关系型数据库(PostgreSQL、Oracle 等),但实际兼容性取决于向量存储(SpringVectorStore)的实现深度。
关于局限性,需要客观指出:SuperSQL 生成 SQL 的质量高度依赖大模型的理解能力。对于简单查询(单表、WHERE 条件),生成效果较好;但对于涉及多表 JOIN、子查询、窗口函数等复杂 SQL,模型生成结果的准确性会显著下降。此外,框架对中文语义理解的优化程度取决于所使用的大模型——英文场景下效果普遍更稳定。
SuperSQL 没有提供 Docker 一键部署,这是当前版本的一个遗憾。部署需要准备:
npm install && npm run build,打包后的静态文件可部署到任意 Web 服务器。估算完整部署时间约 30-60 分钟。对于 Java 开发团队来说,这个流程相当熟悉——配置参数、引入依赖、启动服务,没有特别陌生的步骤。
Text-to-SQL 是大模型应用落地最热门的方向之一。开源社区已有 Vanna.ai(Python)、SQLCoder(开源模型)、ChatSQL(国内)等多个成熟方案。SuperSQL 的差异化定位在于:它是目前为数不多的、面向 Java 生态的企业级 Text-to-SQL 框架。
国内有大量 Java 后端团队,他们的核心系统(ERP、CRM、数据平台)通常基于 Java + Spring Boot 构建。SuperSQL 让这些团队无需切换技术栈,就能在现有系统中快速集成 AI 驱动的自然语言查询能力。从作者背景(药企数据工程师)可以看出,这个工具最初是为了解决真实的业务数据分析痛点而开发的,非常务实。
super-sql-mcp 模块的加入,则让 SuperSQL 跳出了「查询工具」的单一角色,开始向 AI Agent 生态延伸。未来,随着更多 AI Agent 框架(AutoGPT、CrewAI、LangChain 等)支持 MCP 协议,SuperSQL 有望成为 AI Agent 访问企业数据库的标准接口之一。