写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 动手实战课 >>
相关文章:
写SQL太麻烦?免费搭建 Text2SQL 应用,智能写 SQL | OceanBase AI 实践
自OceanBase 4.3.3版本推出以来,向量检索的能力受到了很多客户的关注,也纷纷表达希望OB能拓展更多 多模数据库大模型 的AI应用实践。 在上篇文章 👉 OceanBase LLM,免费构建你的专属 AI 助手 ,我们介绍了如何去搭建一…...
数据分析实战—鸢尾花数据分类
1.实战内容 (1) 加载鸢尾花数据集(iris.txt)并存到iris_df中,使用seaborn.lmplot寻找class(种类)项中的异常值,其他异常值也同时处理 。 import pandas as pd from sklearn.datasets import load_iris pd.set_option(display.max_columns, N…...
【专题】2024抖音电商母婴行业分析报告汇总PDF洞察(附原数据表)
原文链接:https://tecdat.cn/?p38651 在数字化浪潮的席卷下,抖音电商母婴行业正经历着深刻变革。当下,年轻一代父母崛起,特别是 24 至 30 岁以及 18 至 23 岁的群体成为抖音母婴行业兴趣人群的主力军。他们带来全新育儿理念&…...
堆栈粉碎的原理与预防攻击措施
1、堆栈粉碎的原理 “堆栈粉碎”(stack smashing)指的是在计算机程序中利用缓冲区溢出漏洞来修改或破坏函数调用栈的过程。以下是其基本原理: 缓冲区溢出:当程序接收输入数据时,如果没有适当的边界检查和验证&#x…...
Flutter组件————AppBar
AppBar 是 Flutter 中用于创建应用程序顶部栏的组件,它遵循 Material Design 规范。 参数: 参数名称类型描述titleWidget设置 AppBar 中的标题文本或自定义标题小部件。automaticallyImplyLeadingbool决定是否自动添加返回按钮(如果页面不是…...
请问深度学习直接缝了别的模型,在论文中这种创新点应该如何描述呢?
作者:星辰 链接:https://www.zhihu.com/question/599461738/answer/3289126344 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 作为散养硕士,我们希望能早早发小论文,…...
微流控专题 | 微流体应用说明——藻酸盐微球生产简介
基于水凝胶的递送系统正被越来越多地应用于各个领域,包括封装、保护以及在制药、保健品、食品工业中释放生物活性物质,还用于细胞/细菌/微生物的培养与植入,以及生物研究中基于细胞的基因操作。 尺寸在 50m 范围内的高度单分散的藻酸盐微球 —…...
【前后端】HTTP网络传输协议
近期更新完毕,建议关注、收藏! http请求 URL 严格意义上应该是URI http or https http不加密不安全;https加密协议(公网使用) http端口号80 https端口号443GET or POST GET和POST是HTTP请求的两种基本方法. 因为POST需…...
Fastdfs V6.12.1集群部署(arm/x86均可用)
文章目录 一、 Fastdfs 介绍二、部署 信息三、步骤tracker/storage 机器的 compose 内容storage 机器的 composetracker 与 storage 启动目录层级与配置文件测试测试集群扩容与缩减注意事项 一、 Fastdfs 介绍 FastDFS 是一款高性能的分布式文件系统,特别适合用于存…...
【LeetCode每日一题】——434.字符串中的单词数
文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【时空频度】八【代码实现】九【提交结果】 一【题目类别】 字符串 二【题目难度】 简单 三【题目编号】 434.字符串中的单词数 四【题目描述】 统计字符串中的单词个…...
windows C#-使用构造函数
实例化类或结构时,将会调用其构造函数。 构造函数与该类或结构具有相同名称,并且通常初始化新对象的数据成员。 在下面的示例中,通过使用简单构造函数定义了一个名为 Taxi 的类。 然后使用 new 运算符对该类进行实例化。 在为新对象分配内存…...
[react]redux异步处理和重写useDispatch
异步代码 import { createAsyncThunk, createSlice } from reduxjs/toolkit; import { getBanner } from ../http/request; import store from /store; export const fetchBanner createAsyncThunk(recommend/banners,async (args, thunkAPI) > {const response await ge…...
基础数据结构---栈
顺序表实现 一、栈类的声明 栈是一种特殊的线性表,可以由顺序表来实现,也可以由链表来实现,这节课,我们采用顺序表来实现栈。 #include <iostream>#include <stdexcept>using namespace std;template<typename …...
【HarmonyOS之旅】DevEco Studio的安装与环境配置
目录 1 -> 下载与安装DevEco Studio 1.1 -> 运行环境要求 1.2 -> 下载和安装DevEco Studio 2 -> 配置环境变量 3 -> 配置开发环境 4 -> 开发项目准备 5 -> 实用小技巧 5.1 -> 中文插件 2 -> 简化工程目录栏 1 -> 下载与安装DevEco Stud…...
Liveweb视频融合共享平台在果园农场等项目中的视频监控系统搭建方案
一、背景介绍 在我国的大江南北遍布着各种各样的果园,针对这些地处偏僻的果园及农场等环境,较为传统的安全防范方式是建立围墙,但是仅靠围墙仍然无法阻挡不法分子的有意入侵和破坏,因此为了及时发现和处理一些难以察觉的问题&…...
Android4.4 在系统中添加自己的System Service
添加系统service时,源码限制只能添加以android开头的包名,如果不是android开头的,编译时会提示找不到对应的文件。 比如说在系统中添加一个包名为:tel.gateway.connservice的系统服务。 1.在framework/base目录下面创建如下路径&a…...
【C++】C++实现字符串大小写转换功能
在C中,实现字符串大小写转换可以通过标准库中的函数来完成。以下是两种常见的方法: 使用标准库函数std::transform std::transform是一个泛型算法,可以用来对序列中的每个元素应用一个给定的函数,并把结果存储到另一个序列中。这…...
【蓝桥杯】43696.小数第n位
小数第n位 题目描述 我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。如果我们把有限小数的末尾加上无限多个0,那么有限小数和无限小数就都有了统一的形式。 本题的任务是:在上面的约定下,求整数除法…...
进程间通信方式---消息队列(System V IPC)
进程间通信方式—消息队列(System V IPC) 文章目录 进程间通信方式---消息队列(System V IPC)消息队列1.消息队列进程间通信原理2.msgget 系统调用3.msgsnd 系统调用4.msgrcv 系统调用5.msgctl 系统调用6.函数使用案例7.实现生产者…...
windows10 安装wsl、迁移到其他盘
介绍一下在windows10 安装和迁移wsl。由于公司发了通知不能在使用docker desktop,只能另找方法使用docker了,于是想安装一个wsl,然后在装一个docker。 安装wsl ## 查看wsl 版本 wsl.exe --list --online## 安装Ubuntu-22.04 wsl.exe --inst…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
