用 DuckDB 搭建 AI 数据问答机器人——让非技术人员也能"对话查数据"

难度:⭐⭐⭐ | 预计耗时:1-2 小时搭建,之后可无限扩展
变现路径:为企业搭建内部数据问答系统,单次交付 5000-20000 元


一、为什么"对话查数据"是一门好生意?

想象这个场景:你去找一家电商公司的运营总监聊合作,他说:“我们每天要看 5 个维度的销售数据,但每次都要找数据分析师排期。”

你回答:“我帮你搭一个系统,以后你们直接在聊天框里问’上周华东区哪三款商品退货率最高’,系统自动给你答案。”

这就是 AI 数据问答机器人的核心价值——让不会 SQL 的业务人员,能用自然语言获取数据洞察。

传统方案怎么做?前端写 React → 后端写 FastAPI → 对接 LLM API → 把自然语言转 SQL → 执行查询 → 返回结果。这套流程至少需要 2000 行代码。

用 DuckDB,整个核心逻辑不到 150 行。原因很简单:DuckDB 是进程内数据库,不需要单独部署,Python 里 import duckdb 就能用,天然适合嵌入 AI Agent 的推理链路中。


二、系统架构:四步完成自然语言到数据结果

用户提问(自然语言)→ LLM 转 SQL → DuckDB 执行 → 格式化返回
       ↑                                      ↓
       └─────────── 结果反馈给 LLM 生成回答 ←┘

整个流程分为四个核心步骤:

  1. 语义理解:LLM 将自然语言转化为 SQL 查询
  2. 安全沙箱:限制 DuckDB 只能读取指定表,防止恶意查询
  3. 结果执行:DuckDB 高效执行查询,返回结构化数据
  4. 自然语言回复:LLM 将数据结果转化为易懂的业务语言

三、完整可运行代码

第一步:准备数据和 DuckDB 表

import duckdb
import json

# 创建 DuckDB 内存数据库
con = duckdb.ATTACH (':memory:')

# 模拟电商订单数据
con.execute("""
---

## 本文信息

| 项目 | 内容 |
|------|------|
| DuckDB 版本 | v1.5.x(部分功能基于 v2.0 Preview) |
| 最后验证 | 2026-09-12 |
| 测试环境 | Linux / x86_64 / 16GB RAM |
| 官方文档 | [DuckDB Documentation](https://duckdb.org/docs/) |
| GitHub | [pengzz9527/duckdb-blog](https://github.com/pengzz9527/duckdb-blog) |

如发现错误,欢迎通过 [GitHub Issue](https://github.com/pengzz9527/duckdb-blog/issues) 或邮件 [email protected] 反馈。

📺 Watch video tutorials → Olap Studio YouTube

Subscribe for more DuckDB & AI automation tutorials

使用 Hugo 构建
主题 StackJimmy 设计