SQLBot 是一款基于大语言模型和 RAG 的智能问数系统,由 DataEase 开源项目组匠心出品。它面向企业数据分析和二次开发学习场景,让用户通过自然语言完成数据查询、SQL 生成、结果解释、图表生成、分析预测和仪表盘沉淀。
本仓库采用 Vue 3 前端、NestJS/Fastify 网关、Python FastAPI 数据服务、PostgreSQL 和 g2-ssr 图表渲染服务组成的双栈架构。当前 Node 网关作为对外入口,保持 /api/v1 契约兼容,并将尚未迁移的数据面能力透传到 Python 服务。
- 自然语言问数:把业务问题转成 SQL,执行后返回数据、解释和可视化图表。
- RAG 增强生成:结合数据源元数据、表关系、术语库、SQL 示例和历史问答提升 Text-to-SQL 准确率。
- 多数据源接入:支持 MySQL、PostgreSQL、Oracle、SQL Server、ClickHouse、达梦、Doris、StarRocks、Kingbase、AWS Redshift、Elasticsearch、Excel/CSV 等数据源能力。
- 模型服务适配:支持 OpenAI 原生和多类 OpenAI 兼容服务商,包括阿里云百炼、千帆大模型、DeepSeek、腾讯混元、讯飞星火、Gemini、Kimi、火山引擎、MiniMax 等。
- 工作区隔离:围绕工作区组织用户、数据源、模型、助手、权限和数据训练内容。
- 问答运营闭环:支持术语库、SQL 示例、推荐问题、问答日志、图表保存和仪表盘沉淀。
- 多种集成方式:支持 Web 嵌入、弹窗嵌入、API Key 和 MCP 调用,让外部应用获得智能问数能力。
flowchart LR
Browser["浏览器 / 嵌入页"] --> Gateway["api-node<br/>NestJS + Fastify<br/>:8000"]
Gateway --> Python["data-python<br/>FastAPI 数据服务<br/>:8001"]
Gateway --> Mcp["MCP / images<br/>:8002"]
Python --> Postgres["PostgreSQL<br/>元数据与业务配置"]
Python --> LLM["大模型 / Embedding 模型"]
Python --> DataSource["外部数据库 / Excel"]
Python --> G2["g2-ssr<br/>图表图片渲染<br/>:3000"]
G2 --> Images["共享图片目录"]
Mcp --> Images
| 模块 | 技术 | 主要职责 |
|---|---|---|
frontend |
Vue 3、Vite、TypeScript、Element Plus、AntV G2/S2 | 管理端、问答页、数据源、仪表盘和嵌入页面 |
api-node |
Node.js 20、NestJS、Fastify | 对外网关、CORS、请求追踪、健康检查、OpenAPI 入口和兼容透传 |
backend |
Python 3.11、FastAPI、SQLModel、LangChain、pgvector | 登录与系统接口、数据源适配、Embedding、Text-to-SQL、流式问答、MCP |
g2-ssr |
Node.js、@antv/g2-ssr、node-canvas | 服务端生成图表图片 |
postgres |
PostgreSQL 17.6 | 保存用户、工作区、数据源元数据、问答、仪表盘和向量数据 |
准备一台 Linux 服务器,安装好 Docker,执行以下命令启动 SQLBot:
docker run -d \
--name sqlbot \
--restart unless-stopped \
-p 8000:8000 \
-p 8001:8001 \
-v ./data/sqlbot/excel:/opt/sqlbot/data/excel \
-v ./data/sqlbot/file:/opt/sqlbot/data/file \
-v ./data/sqlbot/images:/opt/sqlbot/images \
-v ./data/sqlbot/logs:/opt/sqlbot/app/logs \
-v ./data/postgresql:/var/lib/postgresql/data \
--privileged=true \
dataease/sqlbot你也可以通过 1Panel 应用商店 快速部署 SQLBot。内网环境可使用 离线安装包 部署。
仓库根目录提供了面向当前双栈代码结构的 docker-compose.yaml:
docker compose up --build本地 Compose 中的主要入口如下:
| 服务 | 地址 | 说明 |
|---|---|---|
api-node |
http://localhost:8000 |
对外访问入口,前端和公开 API 走这里 |
data-python |
data-python:8001 |
Compose 网络内的 FastAPI 数据服务 |
mcp/images |
data-python:8002 |
Compose 网络内的 MCP 与图片服务 |
g2-ssr |
http://localhost:3000 |
图表图片渲染服务 |
postgres |
容器内 5432,宿主机 5433 |
元数据数据库 |
- 浏览器打开:
http://<你的服务器 IP>:8000/ - 默认用户名:
admin - 默认密码:
SQLBot@123456
首次使用建议先配置大模型,再添加数据源并同步表字段,随后进入问答页面开始提问。
SQLBot-main/
├── frontend/ # Vue 3 前端应用
├── api-node/ # NestJS/Fastify 对外网关
├── backend/ # Python FastAPI 数据服务
├── g2-ssr/ # AntV G2 服务端图表渲染服务
├── installer/ # 安装脚本与发行版 Compose 模板
├── tests/ # 现有 Python 测试
├── docs/ # 项目技术文档
├── docker-compose.yaml # 本地双栈 Compose 编排
├── Dockerfile # 单镜像构建入口
└── README.md # 项目主页
- 管理员创建工作区,配置用户、模型、助手和数据源。
- 数据源接入后同步库表、字段、表关系和字段说明。
- 系统为数据源、表、术语和 SQL 示例生成 Embedding,用于召回上下文。
- 用户在问答页输入自然语言问题,系统选择数据源并组织提示词。
- 大模型生成 SQL,Python 数据服务校验只读风险并执行查询。
- 查询结果被转换为表格、图表、分析说明、预测结果或推荐问题。
- 有价值的问答结果可以保存到仪表盘,嵌入页和 MCP 可复用问数能力。
本项目基于开源项目 dataease/SQLBot 二次开发。

