微信扫码
添加专属顾问
我要投稿
OceanBase技术专家张笑深度解析,如何通过AI技术实现自然语言到SQL的智能转换,助力企业数据决策效率大幅提升。核心内容: 1. OB Cloud Text2SQL技术原理及应用场景 2. RAG技术在Text2SQL中的实现机制 3. 从元数据索引构建到SQL生成的完整流程解析
作者简介:
张笑,OceanBase 平台技术部研发工程师,专注于在 OB Cloud 平台推动 AI 技术与数据库场景的深度融合,主导 NL2SQL、查询优化等创新方案的工程化落地,助力企业实现数据价值的高效转化。
在数据驱动决策的时代,企业常常需要从大量的业务数据中挖掘信息,获取数据洞察。但是在浩如烟海的数据中,业务人员缺乏专业的 SQL 知识,只能在海量数据中盲目摸索。假如频繁依赖 IT 部门协助检索数据,无形中增加了企业的沟通成本和时间成本,还可能导致业务响应速度变慢,无法及时抓住市场机遇。企业坐拥海量数据,却无法充分发挥其价值,数字化转型长路漫漫。
OB Cloud Text2SQL 的诞生,破解了企业数字化转型的困境——通过 AI 大语言模型的语义理解能力构建智能翻译层,实现自然语言与数据库语言的跨模态转换。
这项技术正在重构企业的数据消费模式,它将原本需要专业 SQL 技能才能调用的千亿级数据资产,转化为零门槛的人机对话,让业务人员绕过复杂技术栈直接获取所需数据。数据决策链条从过去的「被动取数响应」进化为「实时按需洞察」,让沉睡的数据成为支撑战略决策、推动业务增长的核心动力。
本文将深入剖析「自然语言到 SQL 语言」的技术原理,并带领大家通过 OB Cloud Freetrial,体验"对话即查询"的产品魔法。
业务团队在提交查询需求时,往往只会给出自己想要查询的字段与条件,比如“查询所有年龄在 24 岁以上的 NBA 球员”。如果运维人员仅仅把业务团队原始的 Query 输入给大模型,是无法生成准确的查询 SQL 的,因为大模型并不知道“有哪些表可以给我查询呢”。
RAG(检索增强生成)是一种优化大型语言模型(LLM)输出的方法,Text2SQL 的实现就是基于 RAG 技术,根据业务团队的 Query 内容,从企业的业务库中查询与 Query 有关的表 DDL 信息,然后将检索到的表 DDL 一起嵌入到预设的 Prompt 模板中,将 Prompt 和业务团队的 Query 输入到 LLM 中,以生成最终的 SQL。
这种动态的元数据增强机制,有效解决了模型无法自主感知物理表结构的根本性障碍。
整体流程为 AI 元数据准备(构建向量和 KV 索引)、Query 信息抽取、表和样例召回、SQL 生成。整体的流程图如下:
第一步,元数据索引构建。
基于企业的业务库准备 AI 元数据,通过将数据库中的表结构、字段说明、约束关系等元数据经过 Vector Embedding 模型进行向量化处理,构建高效的语义检索体系,包括向量索引和 KV 索引。它们将被用来辅助后续的表召回过程。
第二步,信息提取。
通过语言大模型对业务团队输入 Query 进行信息提取,提取的内容主要包括 Query 句式(骨架)抽取、目标字段抽取、条件字段抽取、表名抽取。
第三步,表和样例召回。
将目标字段、条件字段、表名的抽取内容通过文本模型向量化后,基于第一步中准备的 AI 向量数据库进行向量相似性检索,结合表召回策略以及排序规则,得到召回的表名信息,以获得 Query 中涉及的所有表 DDL 信息。同时,将 Query 句式(骨架)抽取的内容通过文本模型向量化,与样例向量库数据集进行逐一相似度比对,结合样例召回策略,获取最终填充 Prompt 模版的样例。
第四步,Prompt 动态组装。
将步骤三中得到的表 DDL 信息、样例信息按照模版进行 Prompt 生成组装。
第五步,SQL 生成与输出。
将第四步中得到的 Prompt 和业务部门原始的 Query 一起输入大模型,并进行 SQL 语句生成,将生成的 SQL 语句返回给业务部门,完成一次问答的流程闭环。
元数据库索引构建
对于传统数据库,搜索功能都是基于不同的索引方式加上精确匹配和排序算法等实现的。本质还是基于文本的精确匹配,这种索引和搜索算法对于关键字的搜索功能非常合适,但对于语义搜索功能就非常弱。
以动物检索场景为例:当用户输入关键词"小猫"时,系统仅能返回含该字面表述的结果,而无法智能关联"银渐层"、"布偶"等细分猫种信息。因为传统数据架构无法解析词汇间的语义关联,必须依赖人工建立特征标签体系实现概念连接。在处理非结构化数据(如图像、音频、视频)时,这种人工标注模式的局限性更为显著——多媒体数据的特征维度呈指数级增长,人工构建标签体系将面临巨大挑战。
针对这一瓶颈,基于 AI 模型的向量嵌入(Vector Embedding)技术提供了创新解决方案。以 OpenAI 的 text-embedding-ada-002 模型为例,该模型可将文本(如"Your text string goes here")编码为 1536 维特征向量,每个维度表征数据的不同语义特征。通过将这些高维向量存储到向量数据库,即可在底层实现语义相近度的自动识别,突破传统字符匹配的局限。因此我们可以将它存入 OceanBase 向量数据库中,以便我们后续进行语义搜索。
在 Text2SQL 应用场景中,我们可基于企业的业务数据库的元数据,构建智能化检索系统:通过提取表名、字段名、注释等关键信息的向量化特征表示,建立支持高效语义检索的特征索引系统,为后续的表/样例召回提供智能化的检索支撑。这些数据包括:
信息抽取
信息抽取的核心目标是通过大语言模型对提问的内容进行结构化提取。抽取的信息需要包括目标检索字段信息、目标条件字段信息、目标检索表名信息、句式语义信息这四部分内容:
我们设计了如下的信息抽取 Prompt,以 Few-shot 的方式让模大型进行抽取:
你是一个信息抽取专家,请根据用户提供的信息,参考以下3个样例,一步步思考并抽取出可用于编写SQL查询语句的字段与表名和用户问题的骨干信息,并将结果以json格式给出,必须包含columnNames、tableNames、questionSkeleton字段。
<user>: 查询满足7位商品编码以657为开头的所有7位商品编码、日分区,按7位商品编码、日分区分组。
<assistant>: {"columnNames": ["商品编码", "日分区"], "tableNames": [], "questionSkeleton": "查询满足_以_为开头的所有_、_,按_、_分组"}
<user>: 查询满足纳税人数据id为021的所有销项纳税人户数、收取外省专用发票金额占比,收取外省专用发票金额,限制返回10条。
<assistant>: {"columnNames": ["纳税人数据id", "销项纳税人户数", "收取外省专用发票金额占比", "收取外省专用发票金额"], "tableNames": [], "questionSkeleton": "查询满足_以_为结尾的所有_、_、_,限制返回_条"}
<user>: 查询所有学生中年龄大于10岁的学生名字。
<assistant>: {"columnNames": ["年龄", "学生名字"], "tableNames": ["学生"], "questionSkeleton": "查询所有_中_大于_的_"}
1. 请注意,若未明确给出表名,输出的 tableNames 应为 []。
2. 结果以json格式给出,必须包含columnNames、tableNames、questionSkeleton字段
3. 请严格按照格式输出,不要给出SQL语句。
表/样例召回
该阶段,我们可以并行地执行表召回与样例召回两个流程,它们均依赖于信息抽取阶段的抽取结果。
(一)表召回
表召回,即为通过上一阶段信息抽取所获得的字段和表名信息召回满足业务部门查询条件的表名——该部分为整个链路的关键,表名若是召回错误,那么 SQL 的正确率也会大幅度下降。
将「信息抽取」阶段获取的表名、字段等信息在「AI 元数据库」中进行 KV 检索和向量相似性检索,最终得到 Query 关联的表 DDL,整体流程如下:
(二)样例召回
样例召回,即为通过上一阶段信息抽取所获得的骨架信息召回与业务部门查询的最相似的样例,以帮助大模型更好地生成针对当前查询的 SQL 查询语句。
在 Text2SQL 的过程中,样例召回的目的就是在大模型的 Prompt 中,尽可能给大模型提供与业务部门 Query 相类似的参考样例,样例中包含所提问题以及应该输出 SQL 的标准答案,样例问题与实际 Query 问题越接近,那么大模型生成的 SQL 准确率就会越高。
整体样例召回流程图如下所示:
SQL生成
我们将以上步骤中得到的与 Query 相关的表 DDL 信息、样例信息按照模版进行 Prompt 生成组装,最后将 Prompt 和业务部门原始的 Query 一起输入给大模型进行 SQL 语句生成,并将生成的 SQL 语句返回给业务部门,完成一次问答的流程闭环。
预设的 Prompt 模版如下:
# 角色
你是一位SQL专家,擅长编写SQL查询语句。请根据用户输入与表结构信息以及样例编写SQL查询语句,请仅返回一条可执行的SQL语句,不需要任何解释或额外的文字内容。
## 已知表结构信息
```
{0}
```
## 样例
{1}
## 约束条件
1. 请输出一段可执行的SQL,这段SQL语句需要遵守{2}语法。
2. 不要解释你输出的SQL语句。
3. 如果你有说明请通过单行注释--给出
下面,我们将通过详细的步骤演示,带大家体验 OB Cloud Text2SQL 功能的使用过程。
1️⃣ 登录 OB Cloud 官网,注册账号后您可以免费获得一个「共享实例」,然后在「实例列表」页面点击「数据开发」:
2️⃣ 基于该实例创建一个新的「工作空间」,创建完毕后点击「开始开发」:
3️⃣ 进入「工作空间」后,在 SQL 窗口仅需根据注释内容或者 AI 输入框( Ctrl/Cmd + K 快速唤起),就可以唤起 Text2SQL 功能,将自然语言文本转化为结构化查询语言。这里我们采用 Spider 数据集作为测试数据集:
根据我们的中文输入已经成功生成了正确的 SQL 查询语言。
此外, OB Cloud Text2SQL 的功能还支持 SQL 智能修改/优化/纠错功能,选中 SQL 语句并单击鼠标右键即可:
通过本节实操可以看出:OB Cloud 的 Text2SQL 并非简单的关键词替换工具,而是基于企业业务数据库设计的 AI 智能化 SQL 生成器。
本文全景式展现了 OB Cloud Text2SQL 如何架起自然语言与数据库的智能桥梁——通过大模型语义解析架构与 OceanBase 分布式向量数据库的深度融合,让非技术人员无需跨越 SQL 语法鸿沟即可实现精准数据检索。当 Text2SQL 的星火点燃整个数据领域,我们正见证一个新时代的序幕。
这场变革的价值不仅在于提升检索效率,更在于随着 AI 与数据库的深度耦合,企业将进入数据智能时代,数据库从被动响应的工具,转变为能解读业务场景的智能伙伴。未来的数据库将不再满足于"执行指令",而是向着"理解业务意图-预判需求-动态优化"的智能生命体进化。通过数据库,决策者不仅能知道「发生了什么」,更能预判「可能需要什么」。数据世界的交互语言,终将以人类最本能的方式存在。这种「人机共智」的新型生产关系,正在重构企业的核心竞争力基因。
往期推荐
▼ 点击「阅读原文」,查看更多产品技术文章
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-03-16
AI 驱动的数据分析:Data Agent
2025-03-16
Text2SQL零代码实战!RAGFlow 实现自然语言转 SQL 的终极指南
2025-03-15
ChatBI≠NL2SQL:关于问数,聊聊我踩过的坑和一点感悟
2025-03-13
SQL 开发者们,终于有了自己的“Cursor”
2025-03-12
DeepSeek + Power BI,PQ 智能拆分地址
2025-03-12
澜舟智库:表格智能问答,体验化繁为简的神奇力量
2025-03-11
DeepSeek+Dify查询数据库
2025-03-11
Chat2DB 3.0 发布:SQL 界的 “Cursor”到底有多炸?
2024-06-20
2024-10-14
2025-02-04
2024-10-09
2024-06-14
2024-06-16
2024-06-14
2024-05-31
2024-07-24
2024-07-03
2025-03-11
2025-03-10
2025-03-10
2025-02-28
2025-02-25
2025-02-22
2025-02-22
2025-01-30