搭一个“问就能答“的自然语言数据问答系统:WrenAI 文本转SQL上手指南
2026/9/10 21:43:49 网站建设 项目流程

搭一个"问就能答"的自然语言数据问答系统:WrenAI 文本转SQL上手指南

【免费下载链接】WrenAIGenBI (Generative BI) for AI agents, an open-source, governed text-to-SQL through an open context layer that turns natural-language questions into trusted dashboards, charts, and SQL across 20+ data sources, such as BigQuery, Snowflake, PostgreSQL, ClickHouse, Amazon Redshift, Databricks and more.项目地址: https://gitcode.com/GitHub_Trending/wr/WrenAI

你大概遇到过这种场面:让 AI 助手写条 SQL 查"上个月的营收",它答得飞快、格式漂亮,但表关联错了、退款订单也没剔,数字看着很可信,拿出去用就出事。根源在于模型只看得见表结构,看不见你们团队对数据的约定。WrenAI 是一个开源的文本转SQL与语义层平台,把自然语言问题变成经过校验的 SQL、查询结果和可分享的仪表盘,支持 BigQuery、Snowflake、PostgreSQL、ClickHouse 等 22 种以上数据源。

WrenAI 解决的问题:三句话说清它的价值

它针对的是"Agent 生成的 SQL 像对但其实错"这个问题,适合有真实业务库的数据团队,以及想让自己的 AI 编码助手可靠地查数的人:

  • 受治理的文本转SQL:问题先经过 MDL 语义层规划、再做 dry-plan 校验,减少" confidently 错"的输出
  • 业务定义进 Git:模型、指标、口径规则都是可评审、可 diff 的普通文件,不锁在任何工具里
  • 答案能变成仪表盘:Agent 可以把一条回答构建成浏览器端 GenBI 应用并一键部署

装好之后怎么跑起来?下面是最短路径。

最小启动步骤:四条命令从安装到首次提问

  1. pip install "wrenai[memory,main]":安装 CLI,自带 DuckDB 所以你不需要先准备数据库;memory额外装语义召回所需的本地索引。
  2. npx skills add Canner/WrenAI:给你的 AI 编码客户端(Claude Code、Cursor、Cline 等)装一个约 50 行的"发现桩",教会它按需拉取 Wren 的工作流指引。
  3. 对 Agent 说"用 Wren 帮我接上我的 Postgres 数据库":它会自动执行wren skills get onboarding,检查环境、创建连接 profile、搭好项目骨架并跑第一条查询。
  4. 手头没有数据库时,让 Agent 接内置的 jaffle_shop 电商样例库,同样几分钟内走完全流程。

想看源码的话可以git clone https://gitcode.com/GitHub_Trending/wr/WrenAI,官方快速上手文档有分步细节。

首次上手走查:一个自然语言问题如何变成一张结果表

以 jaffle_shop 样例为例,完整走一圈:

  1. 生成模型定义:对 Agent 说"探索 customers 和 orders 两张表,生成 MDL"。它会内省表结构,把每张表的定义写成models/下的 YAML,推断表间关联,再执行wren context build编译。
  2. 提一个自然语言问题,比如"有多少客户下过不止一单"。Agent 会先检索问题相关的表和字段,再召回历史上相似的已确认查询,然后用模型名(而非裸表名)写 SQL。
  3. 执行并看结果:SQL 通过wren query在语义层上执行,表格结果直接返回。
  4. 抽查 SQL 底细wren dry-plan --sql '...'能预览引擎实际展开出的查询,关联走没走对一目了然。
  5. 沉淀:确认答案正确后,"问题—SQL"对被存进knowledge/sql/,下次问类似问题直接命中范例。

架构图:WrenAI 的开放上下文层(MDL 语义建模、Memory 记忆、受治理访问)上承各类 AI Agent,下接 PostgreSQL、BigQuery、DuckDB 等 22+ 数据源,提供 CLI、Python SDK、WASM 三种接入方式。

回答质量背后的三个核心能力

MDL 语义层:Agent 写 SQL 前查的"业务词典"

原始 schema 只描述存储,不描述含义——它没法告诉你status = 4是退款。MDL 把模型、列、关联、视图、cube(带度量与维度的可复用聚合对象)写成项目里的 YAML,Agent 的每个查询都对着这份契约做规划,"营收"在项目里任何位置含义一致。语义细节可参考 MDL 概念文档。

记忆系统:问得越多越懂你的业务

每次确认过的"问题—SQL"对以 markdown 文件落盘,LanceDB 在其上建索引;新问题进来时,既检索到相关 schema 片段,也检索到历史范例。没装memory扩展时退化为关键词匹配,依然可用,只是同义改写召回会弱一些。

GenBI 仪表盘:从一条回答到可分享的链接

对 Agent 说"把这条回答做成可按状态筛选的仪表盘,部署到 Vercel",它执行wren genbi build生成纯浏览器端应用、本地起预览,你确认后用wren genbi deploy拿到分享 URL,应用跑在你自己的 Vercel 或 Cloudflare 账号下。

调优与定制:三个最实用的调整点

  • 业务规则写进knowledge/rules/:一个主题一个 markdown 文件,比如"营收一律用 net_revenue 而不是 gross_revenue""时间筛选用 order_date"。每个##小节都会成为可检索的上下文块。
  • 补全描述:模型和列的description写得越准,检索命中越好,这是投入产出比最高的一步。
  • 改完必重建:编辑 MDL 或knowledge/后执行wren context build再跑wren memory index重新索引。缺的口径多时,直接对 Agent 说"enrich my context",它会逐条追问缺口并只往文件里补写。

避坑手册:三个高频问题与一句解法

  • 现象:第一次跑wren memory命令像卡死了。原因:首次加载 lancedb 和 torch 原生库(约 800MB),macOS 还会做一次 XProtect 扫描。解法:装完先手动跑一次 memory 命令等它结束,之后都正常。
  • 现象:Agent 选错表、或连接调试不过。原因relationships.yml的关联缺失或错误,以及连接参数问题。解法:先wren profile debug验证连接,再修关联定义并重索引。
  • 现象:部署好的 Vercel 链接,别人打开返回 401。原因:新 Vercel 项目默认开启 Deployment Protection。解法:在 Project → Settings 里关掉 Vercel Authentication 即可。

收尾:拿回去转一圈

WrenAI 把"数据意味着什么"放进可评审的 Git 文件里,让 Agent 的 SQL 从"说得通"变成"可核查"。建议你今天就接一张小表(或直接用 jaffle_shop 样例),提一个真实的业务问题,确认答案后把knowledge/目录提交进仓库——这就是你的第一份可信上下文。

【免费下载链接】WrenAIGenBI (Generative BI) for AI agents, an open-source, governed text-to-SQL through an open context layer that turns natural-language questions into trusted dashboards, charts, and SQL across 20+ data sources, such as BigQuery, Snowflake, PostgreSQL, ClickHouse, Amazon Redshift, Databricks and more.项目地址: https://gitcode.com/GitHub_Trending/wr/WrenAI

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询