小白也会SQL:大模型改变交互方式(上)

在人工智能与自然语言处理交汇点,有一种技术正悄然改变与数据交互的方式——将日常语言转化为精准SQL查询。这一“text-to-sql”转换任务,使非专业人士也能轻松驾驭复杂的数据库操作,极大地拓宽了数据应用的边界。

然而,现有前沿方法往往依赖于封闭源代码的大型语言模型,它们虽然功能强大,却伴随着模型透明度缺失、数据隐私风险增大以及高昂推理成本等难题。有没有既开放、高效又安全的替代方案呢?鲁班模锤今天带来的论文《CodeS: Towards Building Open-source Language Models for Text-to-SQL》正在尝试破局。

课题背景

Text-to-sql的任务是指将用户的自然语言的提问(文本)转化成能在数据库上执行的结构化查询查询语言(SQL)。下图为对某一 “银行金融”数据库提出自然语言的问题,再转化为数据库查询语言(SQL)的过程。这个过程使得不熟悉SQL或数据库结构的用户也能够使用自然语言与数据库交互。

依赖部分现有的大模型也能实施,例如闭源的大语言模型 DIN-SQL(基于GPT-4)、SQL-PaLM(基于PaLM-2)或是C3(基于GPT-3.5)。尽管这些模型在Text-to-sql性能上表现出色,但也可能存在以下问题:

  1. 闭源模型隐藏了落地的具体架构以及训练/推理细节,阻碍了针对特定应用的持续开发。(这里突然想起来最近有位大佬说某大厂坚持闭源,回头另文点评

  2. 通过API调用这些云端模型可能会带来数据隐私风险,因为必须将数据发送给模型提供商。

  3. 大多数闭源模型具有大量参数(例如基于GPT-3.5则有175B个参数),导致显著的推理开销,通常反映在调用API的花销上

综上所述,研究者推出了专为SQL生成而设计的开源语言模型CodeS。其特点是体量小,与ChatGPT和GPT-4比小10-100倍,而性能上却可以比肩SOTA。

知识补充:SOTA是“State of the Art”的缩写,这个术语通常用于描述某个领域或技术中当前最先进的成果或最高水平的性能。

基座模型StarCoder

StarCoder 和 StarCoderBase 是针对代码的大语言模型 (代码 LLM),模型基于 GitHub 上的许可数据训练而得,训练数据中包括 80 多种编程语言、Git 提交、GitHub 问题和 Jupyter notebook。与 LLaMA 类似,基于 1 万亿个词元训练了一个约15B参数的模型。此外还针对一个35B词元的Python 数据集对 StarCoderBase 模型进行了微调,从而获得了一个称之为 StarCoder 的新模型。当然这个系列有1B/3B/7B/15B四种规模的基座模型。

CodeS结构拆解

首先A阶段为了提高现有语言模型的SQL生成和自然语言理解能力,研究人员采集了新语料库,该语料库由来自不同来源的11GB SQL相关数据、6GB NL-to-code(自然语言转代码)数据和4.5 GB NL相关数据集组成。基于StarCoder,采用该语料库进行增量预训练,并获得预训练的语言模型CodeS(StarCoder按照上文而言拥有1B、3B、7B和15B 4种规模)。

紧接着来到了B阶段,研究人员提出一种全面的数据库提示构建方法来生成高质量的数据库提示。该策略主要包含模式过滤器和值检索器。模式过滤器是根据给定的问题消除不相关的表和列。值检索器经过定制可以提取与问题相符的潜在有用的数据库值。 除了表名和列名之外,还合并了各种元数据,包括数据类型、注释、代表性列值以及主键和外键的信息。 如此为文本到SQL的转化提供更加真实而且丰富的上下文。

这个时候来到了C阶段,毕竟不同的客户拥有不同的业务数据库,但是又无法提供足够多的适配样本。因此研究人员提出了一种双向数据增强方法,为新应用场景自动化的生成大量新语料(提问和对应的SQL语句)。 那么如何操作呢?在文本-SQL方向的语料方面,从现实的业务场景入手需要人工标记一些数据项,再交由GPT-3.5模拟生成进行语料库扩展。而在SQL-文本方向的语料方面则需要研究人员从现有的文本-SQL的基准中提炼模板,然后用新的业务数据库填充模板,然后使用 GPT-3.5 来自动的精炼语料。 这种双向策略创建了最小人力标注投入,但是能够构建一个强大和好用的训练集。

若有着丰富的训练数据,CodeS出现的D阶段就可以执行,利用SFT进行模型训练(后续会解释,这里可以理解为对于大模型的部分参数进行微调)。

相反,若训练数据有限,那么只能使用不改变模型参数的In-Context学习(阶段E),只能提供一些文本到sql的演示,在不微调模型的情况下利用大模型的学习和模仿能力快速给出答案。

在这两种模式种,Incremental pre-traning(阶段A)和Database prompt construction(阶段B)都是其基石,而在SFT策略模式中还需要Bi-directional augmentation for new domain adaptation(阶段C)的辅助。下篇文章将开启具体组件的详细解读。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux系统查看服务器硬件信息

1、查看服务器型号、序列号 # dmidecode|grep "System Information" -A9 | egrep "Manufacturer|Product|Serial" 2、查看主板型号 # dmidecode |grep -A16 "System Information$" 或 dmidecode -t1 3、查看BIOS信息 # dmidecode -t bios 4、…

vue嵌套路由

一、嵌套 children配置 1.父类路由 mymusic 2.子类路由 musicson 1.创建MusicSon组件 <template><div><p>从前和后来</p><p>唯一</p><p>运气来的似有若无</p></div> </template><script>export defaul…

通俗易懂的策略模式讲解

什么是策略模式&#xff1f; 策略模式是一种设计模式&#xff0c;它允许你定义一系列的算法&#xff08;策略&#xff09;&#xff0c;并将每个算法封装成一个对象。这样&#xff0c;你可以轻松地切换不同的算法&#xff0c;而不需要改变原始代码。 一个简单的例子 假设你是…

这10款安卓APP,简直好用到爆!

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频http://AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频 1.追书——追书神器 追书神器是小说追新大神&#xff0c;全网实…

摸鱼大数据——大数据导论

大数据导论 1、概念 大数据时代: 万物皆数据 ​ 数据概念: 人类的行为及产生的事件的一种记录称之为数据 ​ 数据价值: 对数据的内容进行深入分析&#xff0c;可以更好的帮助了解事和物在现实世界的运行规律 2、大数据诞生 大数据的诞生: 跟随着互联网的发展的,当全球互联…

K8S认证 | CKA题库 + 答案 | 查看Pod CPU资源使用量

2、查看集群中运行Pod CPU资源使用量 您必须在以下Cluster/Node上完成此考题&#xff1a; Cluster Master node Worker node k8s …

拧紧设备或工具的选型原则、常见类型和选型关键因素有哪些?

智能扭矩系统-智能拧紧系统-扭矩自动控制系统-SunTorque 在工业生产领域&#xff0c;拧紧控制是一项至关重要的工艺环节。它涉及螺栓、螺母等紧固件的装配过程&#xff0c;直接关系到产品的质量和性能。因此&#xff0c;选择合适的拧紧设备或工具对于确保拧紧过程的准确性和稳…

[牛客网]——C语言刷题day4

答案&#xff1a;B 解析&#xff1a; a是数组首元素的地址,a1的步长是int&#xff0c;所以是2 &a是数组的首地址&#xff0c;&a1步长是int[5] ptr是int类型的指针&#xff0c;指向a数组的尾后位置&#xff0c;ptr-1的步长是int,所以是a数组的最后一个元素5 答案&am…

如何使用ffmpeg 实现10种特效

相关特效的名字 特效id 特效名 1 向上移动 2 向左移动 3 向下移动 4 颤抖 5 摇摆 6 雨刷 7 弹入 8 弹簧 9 轻微跳动 10 跳动 特效展示(同时汇总相关命令) pad背景显示 pad背景透明 相关命令(一会再讲这些命令&#xff0c;先往下看) # 合成特效语音 ffmpeg -y -loglevel erro…

Element Plus/vue3 无限级导航实现

在使用element plus 时&#xff0c;最初要使用的就是导航组件了&#xff0c;官网上看到的也就是写死的一级/二级导航&#xff0c;那么如何设计一个无限级且动态的导航呢&#xff1f;毋庸置疑&#xff0c;递归。废话不多说&#xff0c;直接看代码和效果&#xff1a; 代码&#x…

Jmeter:录制脚本(操作文档)

新建线程组 打开jmeter&#xff0c;右键测试计划–>添加–>Threads(Users)–>点击"线程组" 添加录制控制器 右键线程组–>添加–>逻辑控制器–>点击"录制控制器" 添加HTTP代理服务器 右键工作台–>添加–>非测试元件–>…

YOLOv5改进 | Neck | 添加双向特征金字塔BiFPN【小白轻松上手 | 论文必备】

&#x1f680;&#x1f680;&#x1f680;本专栏所有的改进均可成功执行&#x1f680;&#x1f680;&#x1f680; 尽管Ultralytics 推出了最新版本的 YOLOv8 模型。但YOLOv5作为一个anchor base的目标检测的算法&#xff0c;YOLOv5可能比YOLOv8的效果更好。但是针对不同的数据…

Linux 第三十五章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

Kubernetes安装calico网络插件失败

今天啥也没干成&#xff0c;不想排版了。 接着昨天搭建k8s集群&#xff0c;安装calico插件&#xff0c;虚拟机一直卡。 # 在 master 节点上执行 # 下载 calico 配置文件&#xff0c;可能会网络超时 curl https://docs.tigera.io/archive/v3.25/manifests/calico.yaml -O # 修…

[svelte] 怎么引入fortawesome的icon样式

首先在项目的终端下执行以下命令 npm install fortawesome/fontawesome-free # 或者 yarn add fortawesome/fontawesome-free这样子可以把fontawsome的图标给下载到项目的对应文件中 一般都是在node_modules中 在fontawsome/fontawesome-free中就可以看到很多文件夹了 …

unapp写微信小程序封装水印相机组件怎么实现?

<template><view><!-- <cu-custom bgColor"bg-gradual-blue" :isBack"true"><block slot"backText">返回</block><block slot"content">编辑资料</block></cu-custom> --><…

三步在 vite 中配置 tailwindcss

前言 tailwindcss 是一个原子化的 css 工具&#xff0c;可以让你免于写 css&#xff0c;只写 html 即可原理&#xff1a;利用你写的 html 的 class 名称来生成 css 样式&#xff0c;理解为一个 postcss 插件或 loader 第一步&#xff1a;安装 tailwindcss npm i -D tailwind…

图片恢复的实用指南,为你拯救遗失的记忆!

随着科技的日新月异&#xff0c;我们的生活已被照片填满。它们记录着我们的喜怒哀乐&#xff0c;见证着每一个重要的时刻。但我们往往会因为各种原因将手机图片遗失&#xff0c;有什么方法可以恢复呢&#xff1f;本文将提供一份实用的图片恢复指南&#xff0c;帮助你找回那些遗…

ArrayList和LinkedList的使用

ArrayList List<> list new ArrayList<>(); LinkedList

SQL注入漏洞常用绕过方法

SQL注入漏洞 漏洞描述 Web 程序代码中对于用户提交的参数未做过滤就直接放到 SQL 语句中执行&#xff0c;导致参数中的特殊字符打破了原有的SQL 语句逻辑&#xff0c;黑客可以利用该漏洞执行任意 SQL 语句&#xff0c;如查询数据、下载数据、写入webshell 、执行系统命令以及…