使用 WrenAI 构建一个数据查询系统,程序员再也不用为出报表加班了

前些时候,OpenAI 发布了其最新的 LLM 模型 GPT-4o。人们正在分享基于这个开创性模型构建的疯狂应用程序。通过使用看到了数据检索的改进,这可以使用户受益,响应速度更快,成本效益更高(成本低于 GPT-4 Turbo)。

img

本篇文章我们使用WrenAI 团队发布的最新版本,以支持 GPT-4o LLM 模型来查询自己的数据库。

WrenAI 是一种开源的文本转 SQL 解决方案,数据团队无需编写 SQL 即可通过提出业务问题来更快地获得结果。

WrenAI 有哪些特性

  • 使用语义进行索引 - 减少LLM幻觉

WrenAI 已经实现了语义引擎架构,为我们的业务提供 LLM 上下文;可以轻松地在数据模式上建立逻辑表示层,帮助 LLM 更多地了解业务上下文。

  • 增强LLM提示 - 提高准确性

使用 WrenAI,我们可以使用“建模定义语言”(MDL)处理元数据、模式、术语、数据关系以及计算和聚合背后的逻辑,从而减少重复编码并简化数据连接。

  • 生成答案 提出问题获得答案

WrenAI 中开始新对话时,我们的问题将用于查找最相关的表格。从这些表格中,LLM 会生成三个相关问题供用户选择。还可以提出后续问题以获得更深入的答案。

  • 自学习防窥链路 - 自动化工作流程

AI 自学习反馈循环旨在通过收集来自各种来源的数据来改进 SQL 增强和生成。这些来源包括用户查询历史记录、修订意图、反馈、架构模式、语义增强和查询频率等。

设置 PostgreSQL 数据库

启动 PostgreSQL 服务器,然后使用客户端进入 PostgreSQL 数据库。psql

img

在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 开发者平台

img

进入OpenAI API密钥页面

为WrenAI 生成一个具有完全权限的新API密钥

img

生成具有完整权限的 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 已经在我们的机器上面正常启动。然后 WrenAI 启动器会自动打开我们的系统的默认浏览器。

docker 启动

链接数据源

当启动器安装成功后会默认打开我们系统的设置的默认浏览器。如下图所示:

img

在下面的界面中我们选择数据源并配置相关参数:

img

将所有的必填项都填好。

如果使用 Mac 本地 PostgreSQL 数据库,请输入以访问该数据库。docker.for.mac.localhost

img

选择数据库中的数据模型。

下一步,定义与语义模型的关系;这可以帮助 LLM 更多地了解我们的语义数据结构。这里很重要,模型能不能理解我们的数据库字段,关键点就是这里。

img

添加语义关系

安装完成

我们可以在 WrenAI UI 中查看所有数据模型。

完成设置

玩转 WrenAI

WrenAI UI语义建模

使用 WrenAI UI,我们可以在语义上下文中对数据模型进行建模,例如添加描述、关系、计算等。上下文可以帮助 LLM 学习我们的业务术语和 KPI 定义,并减少加入多个表时的幻觉;LLM 通过学习关系(例如表之间的关系是 、 还是关系)来了解数据结构层次结构。many-to-one one-to-many many-to-many

通过 WrenAI UI 进行语义建模

通过 WrenAI 中的计算定义的业务 KPI 和公式。

在数据模型中添加计算

在表之间添加语义关系。

在数据模型中添加关系。

使用 WrenAI 提出业务问题和后续处理

现在我们可以在 WrenAI UI 中切换到页面,通过单击可以开始询问我们的任何业务问题,WrenAI 通过向量存储搜索相关语义并提供建议。

img

现在我们可以在输入框中问 WrenAI 一些相关的问题。

WrenAI 为我们的业务问题显示最多 3 个选项;可以选择最相关的问题生成最终结果。

img

WrenAI搜索最相关的结果。

选择一个选项后,WrenAI 将显示摘要的逐步分解,包括 SQL 和数据,让我们验证结果是否符合期望。

SQL 摘要的分步细分

我们可以提出后续问题,以更深入地了解结果。

img

有了这样一个系统是不是以后程序员的所有数据查询工作都可以交给运营去管了呢?

从此 我们程序员的头发多了、也不在秃了、心情好了、不用加班出报表了 😄。

类似的帖子