dataherald
企业级自然语言转SQL引擎,用日常英语直接查询数据库,无需SQL基础
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
企业级自然语言转SQL引擎,用日常英语直接查询数据库,无需SQL基础
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
在企业的日常运营中,业务人员想要查一组数据,往往需要走一个漫长的流程:提出需求 → 数据分析师翻译成 SQL → 等待排期 → 获取结果。每一次跨部门沟通都是一次效率损耗,而数据分析需求的频率却在持续攀升。
Dataherald 试图解决的就是这个问题——让完全不懂 SQL 的人,直接用自然语言向数据库提问,并获得准确的 SQL 查询结果。它不是简单地把英文翻译成 SQL 语句,而是构建了一整套企业级的 NL2SQL 引擎,支持上下文学习、多数据库连接、私有知识增强。

图1:Dataherald 项目官方标识
Dataherald 诞生于企业数据分析的真实痛点,核心团队来自数据基础设施领域。项目采用 Apache-2.0 开源许可证,已在 GitHub 上积累超过 3600 颗星,获得了广泛关注。
该项目采用 monorepo 结构,将完整的 NL2SQL 系统拆分为四个独立服务,存放在 /services 目录下:
| 服务 | 技术栈 | 定位 |
|---|---|---|
| engine | Python/FastAPI | 核心 NL2SQL 引擎 |
| enterprise | Python/Flask | 企业级 API 层(认证、用户管理) |
| admin-console | Next.js/TypeScript | Web 管理界面 |
| slackbot | Node.js/TypeScript | Slack 集成 |
这种拆分设计让企业可以按需选择:如果你只需要纯 API 能力,只需部署 engine;如果需要完整的用户管理界面,则需要同时运行 engine + enterprise + admin-console。
engine 是整个系统的核心,使用 FastAPI 构建异步 REST API,技术选型非常扎实:
支持的数据库包括:PostgreSQL、MySQL、MongoDB、Snowflake、BigQuery、Databricks、Redshift、ClickHouse、DuckDB、Athena、SQL Server 等,几乎覆盖主流数仓生态。
admin-console 基于 Next.js 13 构建,采用 TypeScript 全栈开发,引入了多项企业级组件:
Slackbot 模块允许在 Slack 频道中直接提问,响应结果以消息卡片形式呈现。这对于将数据分析能力嵌入日常协作流程非常有用。
Dataherald 提供了 一键部署脚本 docker-run.sh,通过 Docker Compose 依次启动四个服务:
sh docker-run.sh
优点:
.env.example 模板,降低配置难度需要注意的地方:
.env 文件需要单独配置(数据库连接串、认证密钥等)难度评级:中等。对于有 Docker 经验的开发者,30 分钟左右可以完成基础部署;但完整的企业级配置(多数据源连接、安全加固、监控告警)需要更多时间。
从代码结构来看,engine 模块遵循良好的 Python 工程规范:
ruff 进行多维度 linting(代码风格、安全、可维护性)log_config.yml,支持分级日志输出admin-console 的测试覆盖也通过 Jest 框架保证。
代码质量综合评分:4.2/5。工程化程度较高,模块边界清晰,但部分依赖版本较旧(如 Next.js 13.4.10),存在维护成本。
适用场景:
局限性:
Dataherald 代表了 NL2SQL 领域的一个重要分支——RAG + LLM 增强的企业级方案。相比纯规则或纯微调的方案,它通过向量数据库做 Schema 感知,通过 LangChain 构建可插拔的 Chain,在准确性和灵活性之间取得了较好平衡。
从 GitHub Star 增长曲线来看,NL2SQL 类项目在 2023-2024 年呈现爆发式增长,背后是 LLM 成本下降和 GPT-4 等强大基础模型的普及。随着 Claude、GPT-4o 等多模态模型的成熟,"自然语言操作数据库"正在从概念验证走向生产可用。
总结: Dataherald 是目前开源生态中最完整的企业级 NL2SQL 解决方案之一,架构清晰、部署友好、扩展性强,适合需要快速在现有数据基础设施上叠加自然语言查询能力的企业团队。