写SQL太麻烦?免费搭建 Text2SQL 应用,智能写 SQL | OceanBase AI 实践

自OceanBase 4.3.3版本推出以来,向量检索的能力受到了很多客户的关注,也纷纷表达希望OB能拓展更多 多模数据库+大模型 的AI应用实践。

在上篇文章 👉 OceanBase + LLM,免费构建你的专属 AI 助手 我们介绍了如何去搭建一个RAG智能问答机器人,也收到许多用户在论坛及博客上自发分享的利用AI助手Demo进行创新趣味改造,非常感谢大家的热情支持!

今天,我们积极响应大家的建议,为大家呈现一项全新的应用——

构建一个 Text2SQL 应用!

Text2SQL,指通过大模型用自然语言生成对应的查询 SQL,不仅可以直接在 OceanBase 数据库中执行该 SQL 获取结果,还能够将得到的查询结果进行可视化展示(下文中会将这个应用称为 chat data)。这个应用能够在一定程度上提升 OceanBase 数据库的易用性,且步骤十分简单,欢迎大家都来尝试一下。

1、Text2SQL应用简介

这个  Text2SQL 的 chat data 应用是基于蚂蚁集团的 AI 原生数据智能应用开发框架——DB-GPT 进行。

DB-GPT 通过多模型管理(SMMF)、Text2SQL 效果优化、RAG 框架以及优化、Multi-Agents 框架协作、AWEL (智能体工作流编排)等多种技术能力,使围绕数据库构建大模型数智应用变得更加简单和便捷。目前已有超过 106 万用户学习和使用 DB-GPT ,并有 100+ 家企业已将其集成到生产系统中。

OceanBase 支持向量数据类型的存储和检索,并已适配作为 DB-GPT 的可选向量数据库,支持 DB-GPT 对结构化数据和向量数据的存取需求,从而支撑其上 LLM 应用的开发和落地。

我们可以快速看看应用的效果:让 chat data 写一条简单的 SQL,对 TPC-H 测试集的数据进行查询,并生成可视化的图表,效果如下:

图片

chat data 会自动拿着生成的 SQL 去数据库里执行,并返回查询结果。

图片

再看看另一个示例——输入提示词后,让 chat data 应用帮我们生产一个可视化的散点图。(需要注意的是 Text2SQL 对大模型的能力要求较高,如果执行结果出现错误提示,可以尝试重试和修改提示词。)

图片

2、OceanBase 如何支持Text2SQL应用

我们可以通过下图去理解 OceanBase 数据库在 Text2SQL 应用中的作用。

图片

图中展示的这个 OceanBase 租户里有三类 database,分别为:

✅ 用于存储用户数据的库(图中的 User Data 库);

✅ 用于存向量数据的库(图中的 Vector 库);

✅ 以及其他库(图中的 Others 库)。

Text2SQL 应用的服务对象是数据库,这个被服务数据库在本实验中就是 OceanBase,对应图中的 User Data 库;同时,应用需要对用户输入的自然语言,将数据库对象的元数据拿出来,进行相似性检查,所以也需要一个服务于应用的向量数据库,这个数据库也由 OceanBase 支持,对应图中的 Vector 库。

也就是说,这次实验,不需要专门去另外搭建一个向量数据库,通过 DB-GPT,利用 OceanBase 的向量能力,对在 OceanBase 中存储的用户数据进行服务,完全实现了“自给自足”。

我们从上图的左侧部分,来看 DB-GPT 在搭建 Text2SQL 应用的过程中生产向量的过程。

图片

🚩 首先需要创建一个 User Data 库的连接,在创建这个连接的时候,就会把连接中对应库(例如这个库的真名叫 dbgpt_test_db)中用户数据的元信息(表名、列名等)拿出来;

🚩 然后把这些元信息转成向量的形式;

🚩 最后存入 Vector 库中的一张叫做 dbgpt_test_db_profile 的表内。

DB-GPT 每创建一个新的 User Data 库的连接,就会在 OceanBase 的 Vector 库内创建一张叫做<database_name>_profile 的表,(<database_name>替换为用户使用的数据库名),表中有一个 document 列,用于存储元数据的文本信息;还有一个 embedding 列,用于存储将 document 列转换成的 1024 维向量。

上图的右侧部分,则体现了 OceanBase 和用户交互,然后通过大模型消费向量数据,产生答案的过程。

图片

步骤 1 到 3 :首先会把用户的自然语言请求,通过模型转换为向量,并在 dbgpt_test_db_profile 表内查询相似度最高的向量。

步骤 4 到 5:大语言模型会基于 Vector 库返回的元数据信息,把自然语言转换为对应的 SQL,并在 User Data 库中执行 SQL 和收集结果数据。还可以根据用户需求将结果数据生成适合的图表。

3、四步搭建chat data应用

进行实验之前,我们需要先开通 OceanBase 数据库,方式有两种:使用 OB Cloud 实例或者使用 Docker 本地部署单机版 OceanBase 数据库。我们在此推荐 OB Cloud 实例,因为它部署和管理都更加简单,且不需要本地环境支持。

OB Cloud 目前已经支持 365 天免费试用,大家可以开通事务型共享实例(MySQL模式)。

开通完成后,只需要下面的 4 步 就可以完成 chat data 应用的搭建了。这里不做详细描述,完整的实验步骤流程可通过下面的链接查看:

docker/compose_examples/ob_dbgpt_tutorial.md · oceanbase-devhub/DB-GPT - Gitee.com

第一步,获取 OceanBase 数据库实例连接串

第二步,申请大模型 API KEY (可以选择阿里云百炼)

第三步,启动 Docker 容器,复制项目镜像  

第四步,访问 DB-GPT 平台,创建应用

在 DB-GPT中,还支持知识库的 RAG 应用搭建,大家也可以参考文档中的步骤去搭建。

4、还有更多

为了让更多的用户更容易地基于 OceanBase 搭建 AI 应用,我们会陆续将不同场景的 AI 实验步骤录制为视频课程,方便大家随时学习。目前已经上线的有 RAG AI 助手 Demo,和如何结合低代码平台 Dify 去搭建 AI 应用,本文的应用和更多实验也将陆续上线。下方链接可以直达课程。

OceanBase AI 动手实战课  >>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/940113.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Halcon 机器视觉案例 之 药剂液面高度测量

第二篇 机器视觉案例 之 药剂液面高度测量 文章目录 第二篇 机器视觉案例 之 药剂液面高度测量1.案例要求2.实现思路2.1获得液面的位置&#xff1a;2.1.1 获得每支药剂的位置坐标2.1.2 根据药剂的横坐标设置卡尺工具助手找到每一个液面的位置 2.2 获得基准线的位置&#xff1a;…

使用k6进行MongoDB负载测试

1.安装环境 安装xk6-mongo扩展 ./xk6 build --with github.com/itsparser/xk6-mongo 2.安装MongoDB 参考Docker安装MongoDB服务-CSDN博客 连接成功后新建test数据库和sample集合 3.编写脚本 test_mongo.js import xk6_mongo from k6/x/mongo;const client xk6_mongo.new…

LabVIEW随机扫描成像系统

利用LabVIEW开发了一套随机扫描成像系统&#xff0c;利用硬件时钟实现声光偏转器&#xff08;AOD&#xff09;的频率控制与信号采集之间的高速时间同步。系统利用了高精度的时钟同步技术&#xff0c;确保了成像精度和重复性&#xff0c;从而有效提高了成像速度和质量。 项目背景…

29. 多线程编程

一、什么是线程 线程&#xff08;thread&#xff09;它们是同一个进程下执行的&#xff0c;并共享相同的下上文。线程包括开始、执行顺序和结束三部分。它有一个指令指针&#xff0c;用于记录当前运行的上下文。当其它线程运行时&#xff0c;它可以被抢占&#xff08;中断&…

精准采集整车信号:风丘混合动力汽车工况测试

一 背景 混合动力汽车是介于纯电动汽车与燃油汽车两者之间的一种新能源汽车。它既包含纯电动汽车无污染、启动快的优势&#xff0c;又拥有燃油车续航便捷、不受电池容量限制的特点。在当前环境下&#xff0c;混合动力汽车比纯电动汽车更符合目前的市场需求。 然而&#xff0c…

《军工记忆》第二季播出,科技创新铸国之重器

2019年8月1日晚20点&#xff0c;《军工记忆》第二季在央视纪录频道&#xff08;CCTV-9&#xff09;播出&#xff0c;第一集《第一颗氢弹》首当其冲&#xff0c;为我们生动描绘了氢弹研制过程的艰难岁月&#xff0c;重现中国军工事业的漫漫长路&#xff0c;科技创新铸国之重器。…

QT5.9.9+ARM交叉编译开发环境搭建【详细步骤】

文章目录 1.前言2.Linaro编译器下载2.qt-everywhere编译安装3.Linux下QT Creator安装4.交叉编译环境配置5.QTARM程序打包参考文献 1.前言 本文将以32位的ARM开发板为例&#xff0c;搭建基于Ubuntu 16.04虚拟机的QTARM开发环境&#xff0c;使用的软件如下&#xff1a; 序号软件…

深入解析 StarRocks 物化视图:全方位的查询改写机制

小编导读&#xff1a; 本文将重点介绍如何利用物化视图进行查询改写。文章将全面介绍物化视图的基本原理、关键特性、应用案例、使用场景、代码细节以及主流大数据产品的物化视图改写能力对比。 物化视图在 StarRocks 中扮演着至关重要的角色&#xff0c;它是进行数据建模和加速…

挑战一个月基本掌握C++(第五天)了解运算符,循环,判断

一 运算符 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 内置了丰富的运算符&#xff0c;并提供了以下类型的运算符&#xff1a; 算术运算符关系运算符逻辑运算符位运算符赋值运算符杂项运算符 1.1 算术运算符 假设变量 A 的值为 10&#xff0c;变量 B 的值为…

通过阿里云 Milvus 与 PAI 搭建高效的检索增强对话系统

背景介绍 阿里云向量检索服务Milvus版&#xff08;简称阿里云Milvus&#xff09;是一款云上全托管服务&#xff0c;确保了了与开源Milvus的100%兼容性&#xff0c;并支持无缝迁移。在开源版本的基础上增强了可扩展性&#xff0c;能提供大规模 AI 向量数据的相似性检索服务。相…

jQuery总结(思维导图+二维表+问题)

关于什么是jQuery&#xff1a;&#xff08;下面是菜鸟里的介绍&#xff09; jQuery 是一个 JavaScript 库。 jQuery 极大地简化了 JavaScript 编程。 jQuery 很容易学习。 而jQuery对我的感受就是&#xff0c;链式运用的很形象&#xff0c;隐式迭代还有一些兼容性强的优点&…

(14)CT137A- 动态数码管设计

&#xff08;1&#xff09;了解板卡原理图中数码管的特性&#xff1a;共阳极数码管&#xff0c;公共端连接了电源&#xff0c;FPGA IO口低电平有效&#xff0c;另外&#xff0c;可以看到位选端FPGA位选低电平时选通。 &#xff08;2&#xff09;刷新时间的设定&#xff1a;众所…

UG NX二次开发(C#)-如何设置UGOpen的UF_CAM_geom_type_e枚举类型

文章目录 1、前言2、UF_CAM_geom_type_e类型说明3、在C#的类型1、前言 UG NX二次开发提供的帮助文档,无论是c/c++、C#、Python、VB语言,其采用UFun函数时都是参考的UGOpen的帮助文档,即是:UGOPEN函数参考手册(nx6).CHM,后续的都没有怎么增加,这个在哪个版本中都适用。但…

内容与资讯API优质清单

作为开发者&#xff0c;拥有一套API合集是必不可少的。这个开发者必备的API合集汇集了各种实用的API资源&#xff0c;为你的开发工作提供了强大的支持&#xff01;无论你是在构建网站、开发应用还是进行数据分析&#xff0c;这个合集都能满足你的需求。你可以通过这些免费API获…

vue使用v-if和:class完成条件渲染

1.使用v-if 和v-else 完成主body和暂无数据两个<tbody>标签的条件渲染(注意与v-show效果的区别) 2.v-for完成列表渲染 3.:class完成分数标红的条件控制 删哪个就传哪个的id&#xff0c;基于这个id去过滤掉相同id的项&#xff0c;把剩下的项返回 <td><a click.p…

C++ OpenGL学习笔记(2、绘制橙色三角形绘制、绿色随时间变化的三角形绘制)

相关文章链接 C OpenGL学习笔记&#xff08;1、Hello World空窗口程序&#xff09; 目录 绘制橙色三角形绘制1、主要修改内容有&#xff1a;1.1、在主程序的基础上增加如下3个函数1.2、另外在主程序外面新增3个全局变量1.3、编写两个shader程序文件 2、initModel()函数3、initS…

vue基础作业实验十

vue基础作业实验十 实验要求案例要点&#xff1a;代码以及思考style部分Vue.js 部分Vue 实例部分 这段代码是一个基于 Vue.js 的静态页面&#xff0c;功能包括商品品牌的添加、删除和搜索。 实验要求 一、实验的基本内容 &#xff08;1&#xff09;Vue模板语法。 &#xff08…

PHP+MySQL 学生信息管理系统

目录 MySQL建表指令 主页面展示 主页面源代码如下 增&#xff1a;添加学生信息 添加html如下 html&#xff1a;主要用于显示网页内容 成功添加后回显 ​编辑 增加php如下 删&#xff1a;删除学生信息 删除html如下 成功删除后回显 删除php如下 改&#xff1a;修改学…

QT网络(四):HTTP通信

Qt 网络模块提供一些类来实现 OSI 七层网络模型中高层的网络协议&#xff0c;如 HTTP、FTP、SNMP 等&#xff0c;这些类主要是 QNetworkRequest、QNetworkAccessManager 和 QNetworkReply。QNetworkRequest 类 通过 URL 发起网络协议请求&#xff0c;其也保存网络请求的信息&a…

Pytorch | 从零构建Vgg对CIFAR10进行分类

Pytorch | 从零构建Vgg对CIFAR10进行分类 CIFAR10数据集Vgg网络结构特点性能应用影响 Vgg结构代码详解结构代码代码详解特征提取层 _make_layers前向传播 forward 训练过程和测试结果代码汇总vgg.pytrain.pytest.py 前面文章我们构建了AlexNet对CIFAR10进行分类&#xff1a; Py…