自然语言变可信 SQL:WrenAI 用 5 步搭出带 LangChain 的 Text-to-SQL 查询系统 📅 发布时间:2026/9/9 22:26:25 👁 浏览次数: 自然语言变可信 SQLWrenAI 用 5 步搭出带 LangChain 的 Text-to-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你大概率遇到过这种场景把业务问题丢给大模型问上个月营收多少它确实能写出一段 SQL但挑错了表、JOIN 条件靠猜、营收到底算amount还是 payments 表里的字段全靠蒙。问题不在模型能力而在于它拿到的只有表结构却没有你的业务口径。WrenAI 就是为此而生的开源项目一个带语义层的 GenBI 引擎配合 LangChain 官方集成的 wren-langchain让自然语言查询直接落到你现有的数据库上而且 22 数据源PostgreSQL、Snowflake、BigQuery、ClickHouse、Databricks 等都能接。它凭什么让 SQL 变可信先给上下文再让模型动手普通 Text-to-SQL 的做法是把 schema 塞进 prompt让模型看着表名硬猜。WrenAI 换了个思路在模型和数据库之间垫了两层东西。MDL 语义层Modeling Definition Language用 Git 友好的 YAML 文件描述模型、字段、表间关系外加你批准的指标定义cube和业务规则knowledge/目录下的说明文件。营收、活跃客户这些词在哪个文件里是什么口径一查便知而不是埋在 prompt 里。AI 上下文层记忆系统本地 LanceDB 向量索引存下每次成功的自然语言 → SQL配对。下次有人问类似问题系统先召回历史答案给模型参考越用越准。模型写完 SQL 也不是直接执行引擎会做dry-plan 预演校验查错表、JOIN 不成立会返回带提示的结构化错误让模型自己改而不是一脸自信地返回错误数字。下面是整体架构从零跑通5 个动作每个动作做完都有可验证的结果整个流程是agent 驱动的你只负责下达指令和确认具体操作由你的 AI 编码助手Claude Code、Cursor、Codex 等调 Wren CLI 完成。第 1 步装好 CLI 和 skill验证wren version一条pip install wrenai装核心内置 DuckDB无需额外数据库再跑npx skills add Canner/WrenAI给你的 AI 客户端装一个约 50 行的wren发现桩——它教 agent 如何按需从 CLI 拉取工作流指南。做完这步你在终端敲wren version能看到版本号就说明环境就绪。第 2 步用浏览器表单建连接 profile运行wren profile add my-db --ui会在浏览器里弹出一个表单选数据源、填连接信息即可不用手写 YAML。支持的连接方式在 docs/core/guides/connect.md 有完整清单连接器实现见 core/wren/src/wren/connector/。做完这步wren --sql SELECT 1能返回一行结果连接就通了。第 3 步初始化项目并生成 MDL 模型新建目录跑wren context init会生成models/、cubes/、relationships.yml、knowledge/等目录骨架然后把 profile 绑定到项目wren context set-profile这个绑定写死在项目配置里之后全局切别的连接也不会误伤当前项目。接着对 agent 说一句用 wren skill 探索数据库为 customers 和 orders 生成 MDL它会自己探查表结构、推断外键关系、写模型 YAML 并跑校验。做完这步wren context show能看到完整的模型清单仓库里 examples/v5-jaffle/ 下有一份成品示例可以直接对照。第 4 步给项目喂业务上下文建立记忆索引这一步最容易被跳过也是回答质量的分水岭。让 agent 执行 enrich-context 流程把营收 orders.amount不是按支付方式拆分的那些列这类口径写进knowledge/rules/再跑wren memory index建立向量索引。做完这步wren memory status会显示索引里存了多少条可召回的示例。第 5 步开始提问并把答案变成可分享的看板直接在 agent 里问哪个客户季度销售额最高后台流程是召回相关表 → 检索相似历史查询 → 基于 MDL 写 SQL → 校验执行 → 把成功的问答存回记忆。想进一步把答案变成果然可分享的看板说一句部署到 Vercel即可agent 会构建浏览器端应用并给出分享链接细节见 docs/core/guides/genbi.md。如果你用的是 LangChain / LangGraph 技术栈sdk/wren-langchain/ 提供了现成集成WrenToolkit.from_project一行拿到工具集三行代码就能挂进你自己的 agent示例代码在 sdk/wren-langchain/examples/。进阶与避坑这几个细节没人提前告诉你DuckDB 的 url 填目录不是 .duckdb 文件。profile 里填的是包含数据库文件的目录绝对路径填成文件路径是新手最常见的连接失败原因wren profile debug可以看到解析后的配置快速定位。第一条wren memory命令会假卡住几十秒。它在首次加载 lancedb、torch 等约 800MB 的原生库macOS 首次执行还会触发 XProtect 安全扫描。这是预期行为跑完一次之后一切正常——演示前可以先手动跑一次热身。别让中间表进模型。用 dbt 这类工具时raw_*、stg_*中间层不要建模一个业务概念只保留一张表否则模型面对两张口径相近的表会自己挑错这种错不会报错只会算错数。改了 MDL 文件必须重建。编辑了models/或relationships.yml之后要依次跑wren context validate、wren context build、wren memory index否则查询还在用旧的编译产物。部署到 Vercel 的预览链接默认会返回 401。这不是部署失败而是新项目默认开启了登录访问在项目的 Deployment Protection 设置里关闭 Vercel Authentication 即可公开访问。它适合谁又不太适合谁适合已有生产数据库、想让业务方用自然语言自助取数、且团队里已经在用 AI 编码助手的场景——它复用你现成的 agent不要求再学一套新工具也适合需要把指标口径版本化、可评审、可进 Git 的团队。不太适合只是想对着单个 CSV 画一张图或者只想让模型裸猜SQL、对准确性没要求的一次性查询——那些场景直接问模型就够了。另外注意开源边界行级/列级权限控制、用户组访问控制、托管 GenBI UI 属于商业版能力选型时如果安全合规依赖 RLS/CLS要按 docs/core/concepts/oss_vs_commercial.md 里的边界评估。WrenAI 的价值在于把SQL 写对这件事从模型的能力问题变成了工程上可评审、可回归的上下文问题。把https://gitcode.com/GitHub_Trending/wr/WrenAI克隆下来先按上面的 5 步用样例库跑通第一条自然语言查询剩下的交给你的 agent。【免费下载链接】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),仅供参考