Appearance
自然语言转SQL演示系统
💡 系统简介
Text2SQL 是一个将自然语言查询转换为 SQL 语句的智能系统,支持将自然语言描述自动转换为SQL查询语句,简化了用户数据分析工作。该系统由于跃开发,已在测试环境中运行。
主要功能包括:
- 自然语言到 SQL 的转换
- SQL 语句执行与结果返回
- 查询历史记录管理
- SQL 语句润色优化
- 数据源管理
- 元数据管理
- 黄金SQL管理
- 指令集管理
- 向量检索
🚀 系统特性
- 智能理解:准确理解用户的自然语言查询意图
- 自动转换:将自然语言自动转换为标准SQL语句
- 高效查询:大幅提升数据查询效率,减少技术门槛
- 即时反馈:实时显示转换结果和查询执行情况
📊 技术指标
90%
转换准确率
85%
查询效率提升
<5s
平均响应时间
🎯 在线演示
🔥 兴村治社-实时演示系统
您可以在下方直接体验自然语言转SQL的功能
💡 使用提示:您可以尝试输入如"统计枫桥镇各村社村干部数量","查询暨阳街道所有村书记信息"、"查询用户登录日志"等自然语言,系统会自动转换为对应的SQL语句
🔗 在新窗口中打开完整演示🛠️ 技术架构
整体架构设计
项目采用分层架构设计:
- 表现层:基于 Spring Boot 的 RESTful API 接口
- 业务层:包含核心的 Text2SQL 转换逻辑和数据库操作
- 数据访问层:通过 MyBatis Plus 实现数据库操作
- AI 层:集成 Spring AI 框架,使用大语言模型进行自然语言处理
核心组件
- AIQueryController:API 接口控制器,处理前端请求
- Text2SqlServer:核心业务类,实现自然语言到 SQL 的转换逻辑
- DBQueryServer:数据库操作服务,执行 SQL 查询
- GoldenSqlService:黄金 SQL 管理,存储和检索相似查询
- PromptTemplateUtil:提示词模板工具类,构建大模型输入格式
架构流程图
mermaid
graph TD
A[用户输入自然语言] --> B[语言理解模块]
B --> C[意图识别]
C --> D[SQL生成引擎]
D --> E[语法检验]
E --> F[执行结果]
F --> G[结果展示]graph TD
A[用户输入自然语言] --> B[语言理解模块]
B --> C[意图识别]
C --> D[SQL生成引擎]
D --> E[语法检验]
E --> F[执行结果]
F --> G[结果展示]1
2
3
4
5
6
7
2
3
4
5
6
7
🔄 核心流程解析
1. 自然语言查询处理流程
mermaid
graph TD
A[用户发送自然语言查询] --> B(IntentRecognition意图识别)
B --> C{是否通过意图识别?}
C -->|是| D[RewriteQuery根据历史记录重写查询]
C -->|否| E[直接返回AI输出内容]
D --> F[SearchTableInfo搜索表结构信息]
F --> G[GenerateSql使用大模型生成SQL]
G --> H[ExecuteSql执行SQL查询]
H --> I[通过StreamingResponseBody流式返回结果]
H --> J[如果SQL执行失败]
J --> K[尝试修复SQL并重新执行]graph TD
A[用户发送自然语言查询] --> B(IntentRecognition意图识别)
B --> C{是否通过意图识别?}
C -->|是| D[RewriteQuery根据历史记录重写查询]
C -->|否| E[直接返回AI输出内容]
D --> F[SearchTableInfo搜索表结构信息]
F --> G[GenerateSql使用大模型生成SQL]
G --> H[ExecuteSql执行SQL查询]
H --> I[通过StreamingResponseBody流式返回结果]
H --> J[如果SQL执行失败]
J --> K[尝试修复SQL并重新执行]1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
2. SQL 生成核心机制
mermaid
graph TD
A[提取用户查询中的实体信息] --> B[从向量库中搜索相关表结构信息]
B --> C[构建完整的提示词模板]
C --> D[调用大语言模型生成SQL语句]
D --> E[执行SQL并处理结果]graph TD
A[提取用户查询中的实体信息] --> B[从向量库中搜索相关表结构信息]
B --> C[构建完整的提示词模板]
C --> D[调用大语言模型生成SQL语句]
D --> E[执行SQL并处理结果]1
2
3
4
5
2
3
4
5
3. 错误处理机制
mermaid
graph TD
A[SQL执行失败] --> B[尝试修复SQL语句]
B --> C[重新生成SQL]
C --> D[再次执行SQL]
D --> E{是否成功?}
E -->|是| F[返回结果]
E -->|否| G[返回错误信息]graph TD
A[SQL执行失败] --> B[尝试修复SQL语句]
B --> C[重新生成SQL]
C --> D[再次执行SQL]
D --> E{是否成功?}
E -->|是| F[返回结果]
E -->|否| G[返回错误信息]1
2
3
4
5
6
7
2
3
4
5
6
7
⚡ 关键技术点
- 流式响应:使用 ResponseEntity<StreamingResponseBody> 实现流式响应,提升用户体验
- SSE 技术:通过 writeChunk 方法实现服务器推送事件,实时传输处理进度和结果
- 向量检索:利用向量数据库搜索相似的黄金 SQL,提高生成准确率
- 提示工程:精心设计的提示词模板,指导大模型生成高质量 SQL
- 聊天记忆:使用 ChatMemoryRepository 管理对话历史,保持上下文连贯性
🗄️ 数据库支持
项目支持多种数据库类型,包括:
- MySQL - 主流关系型数据库
- PostgreSQL - 开源对象关系型数据库
- Oracle - 企业级商业数据库
- SQL Server - 微软数据库解决方案
- 达梦数据库 - 国产商业数据库
- 人大金仓 - 国产数据库系统
- OpenGauss - 开源关系型数据库
通过 DBQueryServer 和 DBServer 类实现数据库抽象,提供统一的数据库操作接口。
🚀 扩展性设计
- 多模型支持:支持多种大语言模型(通过配置 model 参数)
- 模板体系:可扩展的提示词模板体系
- 插件架构:插件式的数据库适配器设计
- 参数配置:可配置的聊天选项(温度、模型等参数)
📦 部署步骤
1. 数据库初始化
创建text2sql数据库表:
bash
# 执行SQL脚本
sql/mysql/text2sql-20250701.sql# 执行SQL脚本
sql/mysql/text2sql-20250701.sql1
2
2
2. 向量库部署
项目使用ChromaDB作为向量数据库:
bash
# Docker部署方式
docker run -it --rm --name chroma -p 8000:8000 ghcr.io/chroma-core/chroma:1.0.0# Docker部署方式
docker run -it --rm --name chroma -p 8000:8000 ghcr.io/chroma-core/chroma:1.0.01
2
2
3. 缓存配置
系统使用Redis作为缓存解决方案,确保Redis服务正常运行。
📈 应用场景
人员信息分析
- 人员信息查询:快速检索基础信息
- 统计报表生成:自动生成各类统计报表
登录日志查询
- 人员登录统计:实时统计各人员的登录情况
更多查询
- 敬请期待:陆续开放体验
🔧 系统优势
- 降低技术门槛:非技术人员也能轻松进行数据查询
- 提升工作效率:将原本需要编写SQL的时间缩短85%
- 减少错误率:自动生成的SQL语句语法正确,避免人为错误
- 标准化查询:统一的查询格式和规范
📞 技术支持
- 开发者:于跃
- 技术栈:Spring Boot • Spring AI • MyBatis Plus • ChromaDB • Redis
- 核心技术:自然语言处理 • 向量检索 • 流式响应 • 提示工程
- 数据库支持:MySQL • PostgreSQL • Oracle • 达梦 • 人大金仓 • OpenGauss
- 部署状态:测试环境稳定运行
- 项目架构:分层架构设计,支持多数据库、多模型扩展
- 更新时间:2025年7月10日
🔒 安全提醒
本演示系统仅用于功能展示,敏感数据已进行脱敏处理。