用自然语言和 AI 直接问出你想要的数据

2 阅读9分钟

DataMind:用自然语言和 AI 直接问出你想要的数据

不写 SQL,不找数据分析师,不等报表——只需一句话,10 秒得到图表、数据与洞察结论。


你有没有遇到过这些困境?

业务同学想看一下「上个月各地区销售额对比」,于是在工单系统里提了个需求。数据分析师排期三天后才能排上,还要沟通口径、确认维度,最终一张图出来,需求方觉得「不是这个意思」……

或者你自己会写一点 SQL,好不容易拼出了查询语句,却发现连接哪个数据库、用哪张表、字段名叫什么,每次都要翻文档或者问别人。

DataMind 就是为解决这个问题而生的。

它的核心逻辑只有一句话:你用中文说需求,它自动帮你查数据、出图表、给结论。


DataMind 是什么?

DataMind 是一个开源的 AI 数据分析平台,基于微服务架构构建,前端零依赖(纯浏览器运行),后端用 Python/FastAPI,支持接入主流数据库和多种 AI 大模型。

它把「数据分析」这件事拆成了四个自动化步骤:

你输入中文问题
      ↓
① 语义解析:AI 理解你要分析的是「趋势」「对比」「排名」还是「构成」
      ↓
② SQL 生成:根据你的数据库表结构,自动写出安全的查询语句
      ↓
③ 数据查询:执行 SQL,从真实数据库取数(带缓存加速)
      ↓
④ 可视化与洞察:生成柱图/折线/饼图,并输出「核心结论 + 数据发现 + 行动建议」

整个过程你什么都不需要做,只需要等 10 秒左右。


快速上手:5 分钟跑起来

环境准备

只需要一台装了 Docker 的机器,Windows/Mac/Linux 均可。

# 检查 Docker 版本(需要 24+)
docker --version
docker compose version

一键启动

# 克隆项目
git clone <repo-url>
cd datamind

# 初始化配置文件
make setup

# 编辑 .env,填入你的 AI Key(详见下方「接入 AI 模型」)
vim .env

# 启动所有服务
make up

# 打开浏览器
open http://localhost:8080

启动后你会看到一个深色系的控制台界面,两个主要入口:

  • 智能数据查询 → 日常使用的主界面
  • 可视化配置中心 → 初始化配置数据库和 AI 模型

第一步:配置你的数据库

打开配置中心(/config.html),在「数据库」标签下填写连接信息:

字段说明
配置名称随便起个名字,比如「生产库」「测试库」
数据库类型支持 PostgreSQL、MySQL、ClickHouse、Oracle、SQL Server、Doris
主机 / 端口填你的数据库地址
数据库名要分析的库名
用户名 / 密码建议使用只读账号

填好后点「测试连接」,绿灯亮起就说明配通了。

提示: 可以保存多个数据库配置,在查询页面可以随时切换或同时选择多个库。

让 AI 知道你的表结构

连接成功后,点击「自动读取 Schema」,系统会自动抓取当前库里所有表的字段信息。

如果你的表字段名比较晦涩(比如 ord_rgn_cd 表示「订单地区编码」),可以在 Schema 管理页面手动给字段加上中文备注。AI 在生成 SQL 时会参考这些备注,理解能力会大幅提升。


第二步:接入 AI 模型

DataMind 支持多种 AI 大模型,在配置中心的「AI 引擎」标签下添加:

选项一:Claude(推荐,效果最好)

注册 Anthropic 后获取 API Key:

接口格式:Anthropic 原生
端点:https://api.anthropic.com/v1/messages
API Key:sk-ant-api03-xxxx
模型:Claude Sonnet 4.6(推荐均衡)/ Claude Opus 4.6(质量最高)

选项二:Kimi(国内访问稳定)

注册 Moonshot 获取 Key:

接口格式:OpenAI 兼容
端点:https://api.moonshot.cn/v1/chat/completions
模型:moonshot-v1-32k

选项三:DeepSeek(高性价比)

接口格式:OpenAI 兼容
端点:https://api.deepseek.com/v1/chat/completions
模型:deepseek-chat

选项四:本地模型(完全离线,数据不出本机)

安装 Ollama 后:

接口格式:OpenAI 兼容
端点:http://localhost:11434/v1/chat/completions
模型:qwen2.5 / llama3(本地安装的模型名)
API Key:(留空)

可以保存多个 AI 配置,查询时自由切换——比如平时用 Kimi 省成本,重要分析时换 Claude 出更好的结论。


开始查询:几个真实示例

配置完成后,打开查询页面(/query.html),在输入框里用中文描述你的需求:


示例 1:趋势分析

过去 6 个月,每月的订单量变化趋势是什么?

AI 会识别这是「趋势分析」,生成带日期分组的 SQL,自动渲染为折线图,并告诉你:「5 月环比增长 23%,为近半年最高点」。


示例 2:对比分析

各大区近 30 天销售额对比,哪个区最高?

生成 GROUP BY region 的 SQL,渲染为柱状图,洞察结论直接指出:「华东区占比 41%,华南区同比下滑 8%」。


示例 3:排名分析

毛利率最高的产品类目 Top 5

自动加 ORDER BY + LIMIT,饼图或水平柱图展示,附上排名数据表。


示例 4:构成分析

当前活跃用户中,VIP / 普通 / 新用户各占多少比例?

饼图 + 百分比表格,直接告诉你用户结构现状。


每次查询结果都包含三部分:

  1. 生成的 SQL:可以一键复制,放到任意 SQL 工具里验证
  2. 可视化图表:支持柱图、折线、饼图、面积图,随时切换
  3. 智能洞察:核心结论 / 数据发现 / 行动建议,三段式结构,可直接复制到报告里

进阶技巧

多数据库联合分析

查询页面顶部的数据库选择器支持多选。当你勾选多个库时,系统会分别查询每个库的相同结构,帮你做跨库对比。这对于「主库 vs 备库数据一致性核查」或「多业务线数据横向比较」非常有用。

自定义 Prompt 前缀

在 AI 配置里有一个「自定义 Prompt 前缀」字段,你可以在这里写入业务背景:

本系统为电商业务数据库。
金额单位为人民币元。
订单状态:1=待支付,2=已支付,3=已发货,4=已完成,5=已取消。
分析时请忽略测试账号(user_id < 1000)的订单。

加了这段前缀后,AI 在生成 SQL 时会自动过滤测试数据,金额单位也会在洞察文字里正确描述。

查询缓存

相同的问题第二次查询会从缓存直接返回(默认 5 分钟),响应速度从 10 秒变成不到 1 秒。缓存时长可以在配置中心的「规则」标签里调整。

SQL 安全规则

系统默认禁止 DROPDELETEUPDATEINSERT 等危险操作,所有查询自动追加 LIMIT 10000。这意味着即使配置了有写权限的数据库账号,DataMind 也不会误操作数据。

建议还是使用只读账号,多一层保障。


技术架构一览(给技术同学看的)

DataMind 采用微服务架构,各服务职责清晰、独立部署:

Browser(Vue 3,无构建工具)
        │
    Nginx :8080(静态文件 + 反代)
        │
  API Gateway :8000(路由 / 限流 / 链路追踪)
        │
  ┌─────┼──────┐
  ↓     ↓      ↓
NLP   SQL    Viz
:8001  :8002  :8003
              │
           Redis :6379(查询结果缓存)
模块技术选型职责
前端Vue 3 CDN + ECharts 5零构建,单 HTML 文件
网关FastAPI + httpx路由、限流、配置管理
NLPFastAPI + Anthropic SDK语义解析、意图识别
SQLFastAPI + SQLAlchemySQL 生成、安全校验、执行
VizFastAPI图表配置、AI 洞察生成
缓存Redis 7 AlpineLRU 缓存,256MB 限制

整个项目只需要 Docker Compose 即可运行,没有 K8s、没有复杂的依赖链。对中小团队来说,维护成本极低。


常见问题

Q:不会写 SQL 能用吗?

完全可以,这正是 DataMind 的核心价值。你只需要大概知道「我想分析什么」,AI 会替你处理所有技术细节。

Q:数据安全吗?会把数据发给 AI 吗?

DataMind 只会把表结构(字段名和备注)发给 AI,让它生成 SQL 语句。你的实际业务数据始终留在你自己的数据库里,不会离开你的服务器。如果使用本地 Ollama 模型,连表结构也不会出境。

Q:支持哪些数据库?

PostgreSQL、MySQL 8.0+、ClickHouse、Oracle 19c+、SQL Server、Apache Doris,以及 SQLite(用于测试)。

Q:AI 生成的 SQL 不准怎么办?

几个改善方向:

  1. 给 Schema 里的字段加中文备注,让 AI 更好理解字段含义
  2. 在 AI 配置的「Prompt 前缀」里描述业务背景和特殊规则
  3. 换用更强的模型(Claude Opus 4.6 比 Sonnet 更准确)
  4. 问题描述尽量具体,「近 30 天各地区销售额」比「看看销售情况」效果好很多

Q:查询很慢怎么办?

第一次查询需要调用 AI,一般 5-15 秒。之后相同问题会走缓存,基本秒回。如果觉得慢,可以试试 Kimi 或 DeepSeek 等国内模型,网络延迟更低。

Q:可以私有化部署吗?

可以。整个系统通过 Docker Compose 部署,在内网服务器上运行完全没问题。配合 Ollama 本地大模型,可以实现数据和 AI 全程不出局域网


适合谁用?

  • 业务分析师:摆脱等 SQL 的痛苦,自助取数、自助出图
  • 产品经理:快速验证数据假设,会议前 5 分钟就能出数据
  • 技术团队:给非技术同学部署一套自助分析工具,减少数据需求工单
  • 创业公司:没有专职数据分析师,老板和运营可以直接看数据
  • 数据团队:作为内部数据民主化工具,降低数据门槛

项目地址与反馈

项目开源 地址1:download.csdn.net/download/ap… 地址2:github.com/xiaohunqiu1… 欢迎 Star、Fork 和提 Issue。

如果你在使用中遇到问题,或者有功能建议,欢迎在 GitHub Issues 反馈。


DataMind — 让每个人都能轻松读懂数据。