premsql
用自然语言查询数据库的完全本地化 Text-to-SQL 工具,支持 1B 参数专用模型 + RAG,数据不出服务器
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用自然语言查询数据库的完全本地化 Text-to-SQL 工具,支持 1B 参数专用模型 + RAG,数据不出服务器
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:PremSQL 核心架构,由 Generator(生成器)、Executor(执行器)和 Agent(智能体)三大模块组成,支持多后端 LLM 推理引擎
在传统工作流里,你需要先把这句话翻译成 SQL,找 DBA 要数据库权限,写查询语句,再把结果整理成表格。一套流程下来,半小时算快的。更要命的是——你根本不知道数据库里有哪些表、每个字段叫什么,数据分析师成了"半个程序员"。
PremSQL 想解决的就是这个问题:用自然语言直接查询数据库,哪怕你完全不懂 SQL。区别于 OpenAI Codex 或 Claude 的通用数据库助手,PremSQL 的定位是"完全本地部署"——你的数据永远不会离开服务器,不用担心隐私泄露,不用付 API 调用费用。这对于金融、医疗、政府等数据敏感行业来说,是刚需。
Text-to-SQL 并不是新鲜事,早在 GPT-3 时代就有尝试。但早期的方案有两个致命问题:一是通用大模型对数据库 schema 不够了解,经常"幻觉"出不存在的表名和字段;二是 API 调用模式天然要求数据离镜,在合规要求严格的行业根本无法落地。
PremSQL 的解决思路是双管齐下:小模型 + RAG。项目方专门训练了一个 1B 参数的 SQL 专用模型 Prem-1B-SQL,在 BirdBench 私有数据集上达到 51.54% 的准确率——这对于 1B 量级的模型来说相当亮眼。同时配合数据库 schema 注入(Schema RAG),让模型在生成 SQL 之前先"看懂"数据库结构,从源头减少幻觉。
2024 年 11 月,团队进一步推出 Prem-1B-SQL Ollama 版本,支持直接通过 Ollama 在本地运行推理,无需 HuggingFace 环境。同时 Prem-1B-SQL 在 HuggingFace 上的下载量已突破 26K+。
图2:Prem-1B-SQL 与其他开源模型的准确率对比,1B 参数规模下性能优势明显
PremSQL 的 pipeline 设计非常模块化,核心组件包括:
Generator(生成层):负责把自然语言翻译成 SQL。项目支持多种推理后端:
这种多后端设计让开发者可以根据自己的硬件条件灵活选择,不需要强依赖 GPU 集群。
Executor(执行层):拿到生成的 SQL 之后,Executor 负责实际执行查询。目前支持 SQLAlchemy 通用连接、LangChain SQLDatabase、以及原生 SQLite,覆盖了 MySQL、PostgreSQL、SQLite 等主流数据库。
Execution-Guided Decoding(执行引导解码):这是项目的一个技术亮点。传统方案生成 SQL 后直接返回结果,错了就错了。PremSQL 加入了执行层反馈:如果生成的 SQL 执行失败,模型会拿到错误信息重新生成,最多重试 5 次。这相当于给模型配了一个"实时纠错员",大幅提升了最终成功率。
2024 年 11 月,项目发布了重量级更新——PremSQL Agents。这不是一个简单的单轮问答系统,而是一个完整的多步骤分析 Pipeline:
配合 AgentServer(FastAPI 服务)和 Playground(Streamlit 可视化界面),用户可以在浏览器里通过自然语言完成"上传 CSV → 自动建库 → 提问 → 可视化分析"的全流程,零门槛。
PremSQL 提供了三种使用方式:
CLI 模式:最轻量,通过 premsql 命令行工具直接调用 generator 生成 SQL。适合有编程能力的用户集成到现有工作流。
Playground(Streamlit):项目自带 Web UI,通过 premsql launch all 一键启动 Django API 服务 + Streamlit 界面。界面支持:
API Server(Django + FastAPI):通过 Django REST Framework 提供后端 API,可以被任何语言调用,适合集成到现有业务系统。
需要注意的是,项目没有提供 Dockerfile,需要 Python 3.10+ 环境手动安装依赖。GPU 推理需要 CUDA 支持,显存建议 6GB 以上。没有 Docker 意味着在服务器环境部署时需要一定的运维能力,中等难度。
从 pyproject.toml 可以看出项目的主力技术栈:
代码结构采用清晰的模块化设计:
premsql/generators/:多后端 LLM 推理适配器(OpenAI、HuggingFace、Ollama、MLX)premsql/executors/:数据库执行层抽象premsql/agents/:Agent 框架和各类 Workerpremsql/datasets/:数据集加载和处理(BIRD、Spider 等)premsql/evaluator/:评估框架premsql/tuner/:LoRA 微调和全量微调支持premsql/playground/:Django + Streamlit Web 应用尽管 PremSQL 在本地 Text-to-SQL 场景表现出色,但仍有一些局限需要注意:
PremSQL 的出现折射出一个更大的趋势:在 AI 时代,数据主权比以往任何时候都重要。当企业被迫把数据传给 OpenAI 或 Anthropic 的服务器来"享受" AI 能力时,合规风险和数据泄露风险同时上升。本地 Text-to-SQL 工具的兴起,本质上是在回答一个问题:能不能让 AI 能力进来,但数据不出门?
PremSQL 以 457 GitHub stars 和 26K+ HuggingFace 下载量,证明了这一方向的可行性。随着 Ollama 等本地推理工具的成熟,"本地大模型 + 私有数据库"的组合正在从极客玩具变成企业级解决方案。PremSQL 站在了这个交叉点上。