SQLBot
LLM+RAG 驱动的 Text-to-SQL 工具,让业务人员直接用自然语言查询数据库
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
LLM+RAG 驱动的 Text-to-SQL 工具,让业务人员直接用自然语言查询数据库
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:SQLBot 品牌标识
想象这样一个场景:周一早会,业务部门的同事问了一个看似简单的问题——"上个月华南区直销渠道的复购用户数是多少?"
你需要在 SQL 数据库里翻找关联的 orders、customers、regions、channels、products 等七八张表,理解它们之间的关联关系,再花几分钟写出一条复杂的 JOIN 查询,才能得到答案。而这,仅仅是当天第 3 个临时取数需求。
这类场景每天在无数企业里重复上演:业务人员不懂 SQL,技术人员又忙碌于更重要的开发任务,一个简单的取数请求可能需要排队等待数小时。传统的 BI 系统虽然能制作固定报表,但面对临时起意的数据提问,依然无能为力。
SQLBot 就是来解决这个问题的:你只需要用自然语言描述你的问题——比如"帮我看看上个月各渠道的销售额对比"——系统就能自动理解你的意图,转换成 SQL 语句执行查询,并返回数据结果甚至可视化图表。
这就是近年来在数据领域备受关注的 Text-to-SQL 技术,而 SQLBot 是其中最活跃的开源实现之一。
SQLBot 是由 DataEase 开源社区 推出的智能问数系统,隶属于知名的开源 BI 平台 DataEase 生态。DataEase 本身就是一个功能完整的 BI 可视化平台(类似 Superset、Metabase),SQLBot 则扮演了对话式取数这个关键能力。
从技术定位上说,SQLBot 处于 ChatBI(对话式 BI) 的核心位置——它是连接自然语言提问与底层数据仓库的翻译引擎。作为独立模块,SQLBot 也可以被其他应用集成,让任何系统快速拥有自然语言查询数据库的能力。
目前 SQLBot 在 GitHub 上拥有超过 6100+ Stars,由 fit2cloud(飞致云)团队维护,社区活跃度高,更新稳定,在国内企业级开源数据工具中有较强的影响力。
SQLBot 的技术方案并不复杂,但每一个环节都打磨得相当精细。整体架构可以概括为:自然语言 → 大语言模型(LLM)→ RAG 增强 → SQL 生成 → 执行 → 可视化。
SQLBot 支持对接多种主流大模型服务商的 API,包括:阿里云百炼(通义千问)、DeepSeek、腾讯混元、Kimi、讯飞星火、Gemini、OpenAI 等。这种多模型兼容策略让企业可以灵活选择已有的 LLM 资源,而不必额外采购。
用户提问时,LLM 负责完成最核心的工作:将自然语言转换为符合目标数据库 schema 的 SQL 语句。通用 LLM 在简单查询上已经表现不错,但在涉及多表关联、复杂聚合、子查询等场景时,单纯的 LLM 能力往往不够用——这时 RAG 登场了。
RAG(检索增强生成)是 SQLBot 区别于纯 LLM 方案的核心技术。系统会预先将以下信息向量化并存入向量数据库(默认使用内置的向量模型):
当用户发起提问时,系统会先从向量数据库中检索最相关的上下文信息(包括 schema、术语、示例),将这些提示注入 LLM 的 prompt 中,引导模型生成更准确、更符合业务语义的 SQL。这种方式有效缓解了 LLM 幻觉问题——模型不再是盲猜字段名,而是有参考、有约束地生成 SQL。SQLBot 还支持用户持续上传高质量样例,让系统在实际使用中不断优化,越用越准。
用户通过 Web 界面(Vue 3 + Element Plus)输入自然语言问题,系统解析后生成 SQL、执行业务、返回结果。查询结果支持以图表形式(折线图、柱状图、饼图等)可视化展示,由 AntV G2 / S2 / X6 提供图表渲染能力。
在企业多团队使用场景下,数据安全至关重要。SQLBot 实现了工作空间(Workspace)级别的隔离机制,不同团队只能访问自己的数据源和知识库,从根本上避免越权访问。权限控制细化到字段级别,管理员可以为不同角色配置精确的数据权限。
SQLBot 不只是一个独立的 Web 应用,它还提供了多种集成能力:
这意味着 SQLBot 可以深度集成到 n8n、Dify、MaxKB、DataEase 等应用生态中,扩展这些平台的数据查询能力。
SQLBot 的技术栈清晰明了,是一套标准的现代 Web 应用架构:
| 层级 | 技术选型 | 说明 |
|---|---|---|
| 前端 | Vue 3 + TypeScript + Vite | 响应式 SPA |
| UI 组件 | Element Plus | 企业级 Vue 组件库 |
| 图表 | AntV G2 / S2 / X6 | 阿里可视化团队出品 |
| 富文本编辑 | TinyMCE | 文档和提示词编辑 |
| 后端 | Python FastAPI | 高性能异步 Web 框架 |
| 数据库 | PostgreSQL + SQLAlchemy | 关系型数据持久化 |
| 向量模型 | maxkb-vector-model v1.0.1 | 内置 Embedding 服务 |
| ORM | Alembic | 数据库迁移管理 |
| 容器 | Docker + Docker Compose | 一键部署支持 |
后端采用 FastAPI 构建 RESTful API,使用 Alembic 管理数据库迁移(类似 Flask-SQLAlchemy 生态),依赖管理通过 pyproject.toml 使用 Poetry 风格的 Python 包管理。前端使用 Vue 3 + TypeScript + Vite 构建,通过 Pinia 做状态管理,Vue I18n 支持国际化。
SQLBot 的部署非常简单,官方提供了完整的 Docker 支持:
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
默认访问地址:http://服务器IP:8000/ 默认账号:admin / SQLBot@123456
硬件需求方面,SQLBot 不需要 GPU,纯 CPU 即可运行。推荐 4GB+ RAM 和 10GB+ 磁盘空间,对硬件要求非常友好,适合在普通云服务器上部署。内网离线环境用户可以通过官方提供的离线安装包进行部署,DataEase 社区也提供 1Panel 应用商店一键安装选项。
客观来说,Text-to-SQL 领域目前仍存在一些尚未完全解决的技术难题,SQLBot 也面临同样的局限:
SQL 正确率边界:对于简单的单表查询,SQLBot 表现可靠;但对于跨多表(5 张以上)、涉及复杂聚合和嵌套子查询的场景,即使有 RAG 增强,生成正确的 SQL 仍有挑战。这是 Text-to-SQL 领域公认的技术难点。
Schema 理解的深度依赖:RAG 方案的效果很大程度上取决于前期 schema 标注和术语表的质量。如果数据库字段命名不规范、缺少业务注释,系统的准确率会明显下降——系统本身无法凭空理解晦涩的字段名。
大模型 API 成本:在高频使用场景下,LLM API 调用会产生持续的成本,企业仍需评估使用量与成本的关系。
Text-to-SQL 是近两年 LLM 应用落地最活跃的方向之一,GitHub 上有大量相关项目(如 SQLChat、ChatSQL、Defog 等),竞争激烈。SQLBot 之所以能保持在 6000+ Stars 量级,关键在于它的差异化定位:
随着 ChatBI 概念的持续火热,SQLBot 作为国内最成熟的 Text-to-SQL 开源实现之一,未来增长潜力值得关注。