

使用 WrenAI 构建一个数据查询系统,程序员再也不用为出报表加班了
前些时候,OpenAI 发布了其最新的 LLM 模型 GPT-4o。人们正在分享基于这个开创性模型构建的疯狂应用程序。通过使用看到了数据检索的改进,这可以使用户受益,响应速度更快,成本效益更高(成本低于 GPT-4 Turbo)。
本篇文章我们使用WrenAI 团队发布的最新版本,以支持 GPT-4o LLM 模型来查询自己的数据库。
WrenAI 是一种开源的文本转 SQL 解决方案,数据团队无需编写 SQL 即可通过提出业务问题来更快地获得结果。
WrenAI 有哪些特性
- 使用语义进行索引 -
减少LLM幻觉
WrenAI 已经实现了语义引擎架构,为我们的业务提供 LLM
上下文;可以轻松地在数据模式上建立逻辑表示层,帮助 LLM 更多地了解业务上下文。
- 增强LLM提示 -
提高准确性
使用 WrenAI
,我们可以使用“建模定义语言”(MDL)处理元数据、模式、术语、数据关系以及计算和聚合背后的逻辑,从而减少重复编码并简化数据连接。
- 生成答案
提出问题获得答案
在 WrenAI
中开始新对话时,我们的问题将用于查找最相关的表格。从这些表格中,LLM
会生成三个相关问题供用户选择。还可以提出后续问题以获得更深入的答案。
- 自学习防窥链路 -
自动化工作流程
AI
自学习反馈循环旨在通过收集来自各种来源的数据来改进 SQL
增强和生成。这些来源包括用户查询历史记录、修订意图、反馈、架构模式、语义增强和查询频率等。
设置 PostgreSQL 数据库
启动 PostgreSQL 服务器,然后使用客户端进入 PostgreSQL 数据库。psql
在PostgreSQL中创建一个ecom-wrenai
的数据库
CREATE DATABASE ecom_wrenai;
连接到创建的数据库ecom_wrenai \c <database_name>
lijungchi=# \c ecom_wrenai
psql (13.1, server 13.0)
You are now connected to database "ecom_wrenai" as user "lijungchi".
ecom_wrenai=#
现在,我们要创建此数据集的表并导入数据。可以从这里下载需要的 sql SQL 脚本。
我们可以将脚本复制到我们的脚本中,也可以通过以下方式导入 SQL psql
ecom_wrenai=# \i <path to your file>/import.sql
如果成功导入数据,我们将看到以下信息。
安装 WrenAI
接下来,让我们开始安装 WrenAI;在开始之前,我们需要安装 Docker。
1. 在本地计算机上安装
请确保 Docker Desktop 版本至少为 >= 4.17。
2. 准备 OpenAI API 密钥
请确保我们的开放 API 密钥具有完全权限(全部)。
访问 OpenAI 开发者平台。
进入OpenAI API密钥页面
为WrenAI 生成一个具有完全权限的新API密钥
生成具有完整权限的 OpenAI API 密钥.
3. 安装 WrenAI 启动器
如果你使用的是 MAC OS,(其他系统可以参考官网)在命令行输入下面的命令来获取最新的 WrenAI 启动器.
curl -L https://github.com/Canner/WrenAI/releases/latest/download/wren-launcher-darwin.tar.gz | tar -xz && ./wren-launcher-darwin
当启动器成功启动,会要求输入OpenAI API key
的密钥。我们将上面的的 Key 复制粘贴就好。接下来我们需要选择 WrenAI 要使用的模型 gpt-4o
gpt-4-turbo
gpt-3.5-turbo
。 如下图所示:
现在我们可以看到 WrenAI 已经在我们的机器上面正常启动。然后 WrenAI 启动器会自动打开我们的系统的默认浏览器。
链接数据源
当启动器安装成功后会默认打开我们系统的设置的默认浏览器。如下图所示:
在下面的界面中我们选择数据源并配置相关参数:
将所有的必填项都填好。
如果使用 Mac 本地 PostgreSQL 数据库,请输入以访问该数据库。docker.for.mac.localhost
选择数据库中的数据模型。
下一步,定义与语义模型的关系;这可以帮助 LLM 更多地了解我们的语义数据结构。这里很重要,模型能不能理解我们的数据库字段,关键点就是这里。
添加语义关系
安装完成
我们可以在 WrenAI UI 中查看所有数据模型。
玩转 WrenAI
WrenAI UI语义建模
使用 WrenAI UI,我们可以在语义上下文中对数据模型进行建模,例如添加描述、关系、计算等。上下文可以帮助 LLM 学习我们的业务术语和 KPI 定义,并减少加入多个表时的幻觉;LLM 通过学习关系(例如表之间的关系是 、 还是关系)来了解数据结构层次结构。many-to-one
one-to-many
many-to-many
通过 WrenAI 中的计算定义的业务 KPI 和公式。
在表之间添加语义关系。
使用 WrenAI 提出业务问题和后续处理
现在我们可以在 WrenAI UI 中切换到页面,通过单击可以开始询问我们的任何业务问题,WrenAI 通过向量存储搜索相关语义并提供建议。
现在我们可以在输入框中问 WrenAI 一些相关的问题。
WrenAI 为我们的业务问题显示最多 3 个选项;可以选择最相关的问题生成最终结果。
WrenAI搜索最相关的结果。
选择一个选项后,WrenAI 将显示摘要的逐步分解,包括 SQL 和数据,让我们验证结果是否符合期望。
我们可以提出后续问题,以更深入地了解结果。
有了这样一个系统是不是以后程序员的所有数据查询工作都可以交给运营去管了呢?
从此 我们程序员的头发多了、也不在秃了、心情好了、不用加班出报表了 😄。
类似的帖子

