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

server/2024/12/22 15:14:08/

自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 动手实战课  >>


http://www.ppmy.cn/server/152250.html

相关文章

React+Vite项目框架

基于React Vite 搭建的项目框架&#xff0c;使用ESLint 用于代码检查 、Prettier 用于代码格式化、Husky 用于 Git 钩子、lint-staged 用于暂存文件的检查、commitlint 用于提交信息规范等&#xff0c;实现了路由配置、状态管理、样式响应式设计、亮/暗主题切换等功能。 做这…

python学opencv|读取图像(十五)BGR图像和HSV图像通道合并

【1】引言 前序学习进程中&#xff0c;已经掌握了BGR图像和HSV图像通道拆分的基本技巧&#xff0c;即使用split()函数抓取各个通道的具体数值。具体文章链接为&#xff1a; python学opencv|读取图像&#xff08;十四&#xff09;BGR图像和HSV图像通道拆分-CSDN博客 在此基础…

ECharts柱状图-柱图38,附视频讲解与代码下载

引言&#xff1a; 在数据可视化的世界里&#xff0c;ECharts凭借其丰富的图表类型和强大的配置能力&#xff0c;成为了众多开发者的首选。今天&#xff0c;我将带大家一起实现一个柱状图图表&#xff0c;通过该图表我们可以直观地展示和分析数据。此外&#xff0c;我还将提供…

YOLOv9-0.1部分代码阅读笔记-downloads.py

downloads.py utils\downloads.py 目录 downloads.py 1.所需的库和模块 2.def is_url(url, checkTrue): 3.def gsutil_getsize(url): 4.def url_getsize(urlhttps://ultralytics.com/images/bus.jpg): 5.def safe_download(file, url, url2None, min_bytes1E0, erro…

36.5 自定义指标接入prometheus-operator

prometheus-operator优势总结 自定义的采集配置接入更方便&#xff0c;只要定义serviceMonitor即可采集的参数修改也很方便&#xff0c;对比之前只能由prometheus管理员修改job段配置告警配置也是 prometheus-operator劣势总结 数据的长期存储没有解决高可用性和扩展性没解决…

Linux文件属性 --- 查看修改日期、时间、时区,查看日历

1.查看日期 使用date 命令可以显示或设置系统的时间或日期 &#xff0c;下面为比较常用的参数列举。 date [参数] [日期格式] 写法功能描述date显示当前时间date %Y显示当前年份date %m显示当前月份date %d显示当前天数%H小时&#xff08;00~23&#xff09;%I小时&#xff08;…

Unity Runtime控制编辑器的一些操作

运行时修改Game窗口尺寸 //设置竖屏 public void ChangePortrait() {Assembly assembly typeof(UnityEditor.EditorWindow).Assembly;Type type assembly.GetType("UnityEditor.GameView");var gameView UnityEditor.EditorWindow.GetWindow(type);//可以反射出其他…

蓝桥杯 2024 国 B【选数概率】(AC)

题目描述 一个数组中有 a a a 个 1 1 1&#xff0c; b b b 个 2 2 2&#xff0c; c c c 个 3 3 3。设 P i , j P_{i,j} Pi,j​ 表示在数组中随机选取两个数&#xff0c;其中一个数为 i i i&#xff0c;另一个数为 j j j 的概率。比如 P 1 , 2 a b C ( a b c , 2 ) …