返回市场
超级SQL

超级SQL

作者:guocjsh100 星标更新:2025-08-03

项目介绍

<p align="center"> <img alt="logo" src="https://gips0.baidu.com/it/u=950444591,3796456611&fm=3081&app=3081&f=PNG?w=766&h=204" width="200" height="60"> </p> <h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">SuperSQL 1.0.0-M1</h1> <h4 align="center">中国人自己的生成式SQL Java框架!轻量,易用,易扩展!</h4> <p align="center"> <a href="./README.en.md"><img src="https://img.shields.io/badge/English_README-blue" alt="English README"></a> <a href="./README.md"><img src="https://img.shields.io/badge/简体中文_README-blue" alt="English README"></a> <a href="https://www.apache.org/licenses/LICENSE-2.0.txt"><img src="https://img.shields.io/github/license/guocjsh/SuperSQL?color=%231890FF" alt="License: Apache-2.0"></a> <a href="https://github.com/guocjsh/SuperSQL"><img src="https://img.shields.io/github/stars/guocjsh/SuperSQL?style=flat-square" alt="Stars"></a> <a href="https://gitee.com/guocjsh/SuperSQL"><img src="https://gitee.com/guocjsh/supersql-open/badge/star.svg?theme=gvp" alt="Gitee Stars"></a> <a href="https://gitcode.com/GuoChengJie/SuperSQL"><img src="https://gitcode.com/GuoChengJie/SuperSQL/star/badge.svg" alt="GitCode Stars"></a> </p>

SuperSQL 介绍

SuperSQL 是一个基于国内外先进生成模型的 Java 框架,专注于通过检索增强生成(RAG)技术训练数据库表结构,以实现从自然语言文本到 SQL 查询的智能转换。该框架旨在简化复杂的数据库查询过程,使开发者和用户能够通过简单的自然语言描述获取所需的数据。

主要特性包括:

  • 生成式 SQL 使用强大的生成模型,自动将自然语言问题转化为精确的 SQL 查询语句。
  • RAG 训练 通过使用检索增强生成技术对数据库表结构进行深度学习训练,提高 SQL 生成的准确性和效率。
  • 类型安全且灵活易用 结合 Java 的泛型机制确保编译时类型检查,同时提供简洁直观的 API 设计,易于集成到现有项目中。
  • 支持多种数据库 兼容多种主流数据库系统,满足不同应用场景的需求。
  • 性能优化 通过精心设计和调优,确保高效执行的同时保持良好的可读性。

SuperSQL 适用于希望在 Java 应用程序中快速、安全地执行复杂数据库操作的人群,并希望通过自然语言处理技术快速赋能传统企业应用的 AI。

SuperSQL 工作原理

SuperSQL 的工作原理基于 RAG 技术,通过检索增强生成技术对数据库表结构进行深度学习训练,从而实现从自然语言文本到 SQL 查询的智能转换。

super-sql-ai

SuperSQL 快速入门

导入 SuperSQL 的 Maven 依赖

<dependency>
    <groupId>com.aispace.supersql</groupId>
    <artifactId>super-sql-spring-boot-starter</artifactId>
    <version>1.0.0-M1</version>
</dependency>

配置 SuperSQL 配置文件

配置 init-train 配置选项,默认为 false,表示不进行训练。如果设置为 true,则会根据数据库连接配置自动进行全表训练。

super-sql:
  init-train: false

大型语言模型配置

Azure OpenAI

 <!--spring ai azure openai 模型-->
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-model-azure-openai</artifactId>
</dependency>

Azure 的配置文件配置如下:

  ai:
    azure:
      openai:
        api-key: xxxxxxxxxxxxxx
        chat:
          options:
            deployment-name: gpt-4o-latest
        endpoint: https://your-resource-name.openai.azure.com/
        embedding:
          options:
            deployment-name: embedding-ada-002

请求调用 Text To SQL

// 使用 azure 的 Chat 模型
private final AzureOpenAiChatModel azureChatModel;

private final SpringSqlEngine sqlEngine;

private final SpringVectorStore store;

@GetMapping("getSuperSql")
public Object getSuperSql(@RequestParam String question) {
    String sql = sqlEngine.setChatModel(azureChatModel)
            .setOptions(RagOptions.builder() // 设置 Rag 参数
                    .topN(5) // 返回的 topN 条数据
                    .rerank(false) // 是否进行 rerank 重排序
                    .limitScore(0.4) // 返回的分数阈值
                    .build())
            .generateSql(question);
    Object object = sqlEngine.executeSql(sql);
    return object;
}

启用 ReRanker 重新排序配置

spring:
  ai:
    #  重排序配置,可以上 gitee Ai 有免费体验 或者使用 Xinference 本地部署
    reranker:
      enabled: true
      model: Qwen3-Reranker-8B
      baseUrl: https://ai.gitee.com/v1/rerank #http://localhost:9997/v1/rerank
      api-key: xxxxxxxxxx

Ollama

添加 Spring AI 对 Ollama 的依赖

<!--spring ai ollama-->
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-model-ollama</artifactId>
</dependency>

Ollama 的配置文件配置如下:

deepseek

spring:
  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        options:
          model: deepseek-r1:32b
          temperature: 0.7
      embedding:
        options:
          model: mxbai-embed-large
      init:
        pull-model-strategy: never
        embedding:
          additional-models:
            - mxbai-embed-large

嵌入模型配置

spring:
  ai:
    ollama:
      embedding:
        options:
          model: mxbai-embed-large
      init:
        pull-model-strategy: never
        embedding:
          additional-models:
            - mxbai-embed-large

参考修改嵌入模型 Ollama 嵌入模型

请求调用 Text To SQL

// 使用 azure 的 Chat 模型
private final OllamaChatModel chatModel;

private final SpringSqlEngine sqlEngine;

private final SpringVectorStore store;

@GetMapping("getSuperSql")
public Object getSuperSql(@RequestParam String question) {
    String sql = sqlEngine.setChatModel(chatModel).generateSql(question);
    Object object = sqlEngine.executeSql(sql);
    return object;
}

向量数据库配置

Chroma

<!--spring ai chroma 的向量数据库-->
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-vector-store-chroma</artifactId>
</dependency>

启动本地 Chroma

docker run -it --rm --name chroma -p 8000:8000 ghcr.io/chroma-core/chroma:1.0.0

其他支持的向量数据库

参考 Spring AI 向量数据库

请求结果返回示例

请求示例

训练指定内容

加强数据库 DDL 语句的训练

 @GetMapping("trainDdl")
    public String trainDDl() {
        String ddl = """
                 CREATE TABLE `dtp_hospital` (
                 	`id` BIGINT NOT NULL COMMENT '主键',
                 	`province` VARCHAR ( 20 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '省份',
                 	`city` VARCHAR ( 20 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '城市',
                 	`reporting_team` VARCHAR ( 50 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '提报团队',
                 	`district` VARCHAR ( 20 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '区',
                 	`hospital_name` VARCHAR ( 100 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '申请的DTP药房 主要对应的医院名称',
                 	`hospital_code` VARCHAR ( 50 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '申请DTP主要对应的医院code',
                 	`hospital_address` VARCHAR ( 255 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '医院具体地址',
                 	`location` VARCHAR ( 100 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '医院所在经纬度',
                 	`del_flag` INT NULL DEFAULT 0 COMMENT '删除状态 0正常 1已删除',
                 	`create_by` VARCHAR ( 32 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人',
                 	`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
                 	`update_by` VARCHAR ( 32 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人',
                 	`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
                 	`image` VARCHAR ( 255 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL COMMENT '图片',
                 	PRIMARY KEY ( `id` ) USING BTREE )
                 	ENGINE = INNODB CHARACTER SET = utf8 COLLATE = utf8_unicode_ci COMMENT = '医院表' ROW_FORMAT = Dynamic;
                """;
        sqlEngine.setChatModel(azureChatModel).train(TrainBuilder.builder().content(ddl).policy(TrainPolicyType.DDL).build());
        return "successful training";
    }

单独训练特定 SQL

  @GetMapping("trainSql")
    public String trainSql() {
        String sql="SELECT * FROM DTP_HOSPITAL WHERE DISTRICT LIKE '%黄浦区%';";
        String question="在黄浦区的医院有哪些?";
        sqlEngine.setChatModel(azureChatModel).train(TrainBuilder.builder().content(sql).question(question).policy(TrainPolicyType.SQL).build());
        return "successful training";
    }

启动 SuperSQL 控制台项目

启动 SuperSQL 控制台的 springboot 项目

将 SuperSQL UI 项目导入 VSCode

npm install
npm run dev

访问:http://localhost:5173/chat

请求示例

在数据库中的执行效果

请求示例

功能规划

  • 添加企业微信集成、钉钉集成和飞书集成
  • 支持 MCP(已完成)
  • 生产图表支持
  • Solon 版本支持

SuperSQL 官方文档

访问:http://www.ai-space.com.cn/

参考文档

Spring Ai 官方文档:https://docs.spring.io/spring-ai/docs/getting-started

友情链接

  • [ Spring-AI ]Spring AI 是一个面向 AI 工程的应用框架。其目标是将 Spring 生态系统的设计原则,如可移植性和模块化设计,应用于 AI 领域,并推动使用 POJO 作为 AI 应用程序的构建块。

代码托管