MindSQL
基于 RAG 架构的 Text-to-SQL Python 库,用自然语言查询 PostgreSQL/MySQL/SQLite 等数据库,支持 GPT-4/Gemini/Llama 多模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于 RAG 架构的 Text-to-SQL Python 库,用自然语言查询 PostgreSQL/MySQL/SQLite 等数据库,支持 GPT-4/Gemini/Llama 多模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
数据查询,长期是业务人员与技术团队之间的"鸿沟"。一个运营同事想知道"过去三个月华北区域销量 Top 10 的客户",需要找开发写 SQL、等排期、验证结果,流程往往以天计。MindSQL 的出现,就是要把这个环节压缩到"问一句话"的级别。
Mindinventory 是印度一家专注于 AI 应用开发的软件公司,2024 年 3 月开源了 MindSQL——一个基于 RAG 架构的 Text-to-SQL Python 库。它将自然语言问题转换为 SQL 查询,背后依赖 LLM 的理解能力和向量数据库的上下文增强。截至 2025 年,该项目已获得 444 Star,46 个 Fork,被超过 10 个 issue 跟踪(多与数据库兼容性和新功能相关),说明它在真实业务场景中正在被使用。
可以把 MindSQL 想象成一个"翻译官":用户说中文/英文,它去数据库里找对应的 SQL 语句。它的工作流程分三步走:
MindSQL 通过接口抽象层(IDatabase)支持多种数据库:
| 数据库 | 驱动 | 支持状态 |
|---|---|---|
| SQLite | 内置 | 稳定 |
| PostgreSQL | psycopg2-binary | 稳定 |
| MySQL | mysql-connector-python | 稳定 |
| SQL Server | 内置 | 测试中 |
| Snowflake | 扩展接口 | 需扩展 |
| BigQuery | 扩展接口 | 需扩展 |
每种数据库通过统一的 get_dialect() 方法返回 SQL 方言名称,确保 LLM 生成正确语法的 SQL。
MindSQL 的 LLM 层抽象了 ILlm 接口,支持多种大模型:
这种多 LLM 支持让企业可以根据数据敏感度选择:高度敏感数据用本地 Llama,通用场景用 GPT-4/Gemini。
MindSQL 支持多种向量存储:
向量库的作用是存储 DDL 语句和示例问答对,当用户提问时,通过语义相似度检索最相关的上下文,补全到提示词中。
MindSQL 集成 Plotly,可以根据查询结果自动生成可视化图表:
response = minds.ask_db(question="华北区域销量 Top10 客户", visualize=True)
chart = response["chart"]
chart.show()
这对于 BI 场景非常有价值——用户不仅得到数字,还能直接看到图表。
MindSQL 的代码组织清晰,采用经典的接口抽象 + 模块化实现:
mindsql/
├── core/mindsql_core.py # 核心编排逻辑,MindSQLCore 主类
├── llms/ # LLM 适配层(ILlm 接口)
│ ├── open_ai.py # OpenAI GPT 系列
│ ├── googlegenai.py # Google Gemini
│ ├── llama.py # 本地 Llama(llama-cpp-python)
│ ├── anthropic.py # Anthropic Claude
│ ├── huggingface.py # HuggingFace 模型
│ └── ollama.py # Ollama 本地服务
├── databases/ # 数据库适配层(IDatabase 接口)
│ ├── sqlite.py, postgres.py, mysql.py, sqlserver.py
├── vectorstores/ # 向量存储适配层(IVectorstore 接口)
│ ├── chromadb.py, faiss_db.py, qdrant.py
├── _utils/ # 工具层:提示词模板、日志、常量
└── _helper/ # 辅助工具:JSON 加载、SQL 提取
核心逻辑 MindSQLCore 的 build_sql_prompt 方法是整个 RAG 流程的关键:它依次检索相关问答对 → 追加 DDL 语句 → 追加文档 → 拼装最终提示词,发送给 LLM。
依赖项方面,MindSQL 依赖了 15 个核心包:pandas(数据处理)、plotly(可视化)、sentence-transformers(嵌入模型)、transformers(HuggingFace 支持)、faiss-cpu(向量检索)、qdrant-client(Qdrant 连接)等。
上手门槛:中等。MindSQL 是一个纯 Python 库,需要:
适合的场景: 1.企业内部数据查询工具(NL2SQL) 2.低代码 BI 平台(自然语言生成报表) 3.数据分析和探索(快速验证业务假设) 4.知识库问答(基于结构化数据的问答)
不适合的场景:
MindSQL 也面临 Text-to-SQL 领域的共同难题:
Text-to-SQL 是 RAG 领域的重要分支。随着 GPT-4 等强 LLM 的能力提升,"自然语言操作数据库"从概念走向落地。MindSQL 的价值在于:它不只是一个工具,更是一种范式验证——证明了 RAG + SQL 生成在真实业务场景的可行性。
从技术趋势看,未来 Text-to-SQL 将向两个方向演进:一是结合 Agent 架构,实现多轮对话式查询和自我纠错;二是与 BI 工具深度集成,让非技术人员也能完成数据分析。