seo专员是什么职业岗位,徐州网站快速优化排名,哪里有网站建设定制,如何进行网站推广?网站推广的基本手段有哪些发布于#xff1a;2024 年 10 月 29 日
#RAG #Text2 SQL #NL2 SQL
语言模型在将自然语言问题转换为 SQL 查询#xff08;文本到 SQL #xff09;的任务中显示出良好的性能。然而#xff0c;大多数最先进的 #xff08;SOTA#xff09; 方法都依赖于强大但闭源的大型语言…发布于2024 年 10 月 29 日
#RAG #Text2 SQL #NL2 SQL
语言模型在将自然语言问题转换为 SQL 查询文本到 SQL 的任务中显示出良好的性能。然而大多数最先进的 SOTA 方法都依赖于强大但闭源的大型语言模型 LLM例如 ChatGPT 和 GPT-4这些模型可能存在模型架构不明确、数据隐私风险和昂贵的推理开销等局限性。为了解决这些限制我们引入了 CodeS 这是一系列预先训练的语言模型参数范围从 1B 到 15B专为文本到 SQL 任务而设计。 CodeS 是一种完全开源的语言模型它以小得多的参数大小实现了卓越的准确性。实验结果表明我们的 CodeS 在几乎所有具有挑战性的文本到 SQL 基准测试中都实现了新的 SOTA 准确性和稳健性。 欢迎关注作者接收最前沿的人工智能技术 一、引言
1.1 研究背景与现状
Text-to- SQL 任务旨在将用户的自然语言问题转换为相应的 SQL 查询以便在数据库上执行并获取答案。传统方法多采用监督微调SFT但随着大型语言模型LLMs的兴起如GPT-4、GPT3.5和PaLM-2等提示学习prompt learning或上下文学习in-context learning成为新趋势。然而当前大多数先进的Text-to- SQL 方法依赖于闭源的LLMs这带来了诸多局限性如模型架构不透明、数据隐私风险以及高昂的推理开销等。 1.2 论文核心创新点
开源语言模型本文介绍了 CodeS 这是一系列完全开源的语言模型参数规模从1B到15B不等专为Text-to- SQL 任务设计解决了闭源模型的诸多问题。
增量预训练通过收集包含 SQL 相关、自然语言相关和自然语言到代码数据的语料库对 StarCoder 进行增量预训练增强了模型在 SQL 生成和自然语言理解方面的能力。
数据库提示构建提出了一种综合的数据库提示构建策略包括Schema 过滤器和值检索器并融入关键的数据库元数据有效提升了模型生成 SQL 查询的准确性。
双向数据增强针对新领域适应问题采用双向数据增强技术自动生成大量真实且通用的问题 SQL 对减少了标注成本提高了模型在新领域的适应性。
1.3 CodeS 模型优势 全开源与依赖闭源LLMs的现有方法不同 CodeS 基于 StarCoder 构建完全开源用户可根据自身需求选择合适参数规模的模型便于进行定制化开发和研究。
高性能在多个具有挑战性的Text-to- SQL 基准测试中 CodeS 取得了新的最优性能展现出卓越的准确性和鲁棒性。
小尺寸高效 CodeS 模型规模相较于现有先进的LLMs如ChatGPT和GPT-4小10到100倍但在 SQL 生成能力上表现出色推理速度更快所需GPU内存更低更适合实际部署。 二、相关工作
2.1 监督微调与提示学习
在Text-to- SQL 任务中监督微调曾是主流方法通过“编码器-解码器”神经网络模型利用数据库相关数据进行训练。随着语言模型发展Text-to- SQL 逐渐被视为序列到序列任务T5、BART等模型通过微调实现 SQL 查询生成。而提示学习则借助少量示例作为提示让LLMs在不进行参数微调的情况下完成任务但在实际应用中由于使用闭源模型API存在成本和隐私问题面临一定挑战。
2.2 代码语言模型
现有代码语言模型通常在多种编程语言混合数据上预训练对于特定编程语言如 SQL 的小规模模型其性能可能受限。 CodeS 则专注于以 SQL 为中心的数据进行优化以提升在Text-to- SQL 任务中的表现。
2.3 模式链接与数据增强
模式链接在Text-to- SQL 过程中起着关键作用用于识别自然语言问题中的数据库模式和值主要有基于字符串匹配和神经网络的策略。数据增强方面现有方法多采用 SQL 到问题的合成管道但合成问题与实际用户问题存在差异。本文提出的双向数据增强策略结合了问题到 SQL 和 SQL 到问题的合成能更准确地生成多样化的用户问题。
三、预备知识
3.1 Text-to- SQL 任务
Text-to- SQL 任务的目标是根据自然语言问题和数据库生成可执行的 SQL 查询。数据库包含模式表和列以及元数据列类型、注释、值、主键和外键关系。例如对于查询银行金融数据库中特定条件的银行名称的自然语言问题需要生成准确的 SQL 查询来获取答案见图2。
3.2 预训练语言模型
基于Transformer架构的语言模型通过无监督学习目标在大规模文本数据上预训练主要有“语言建模”和“掩码语言建模”两种范式。预训练后的模型可通过监督微调或上下文学习适应特定任务。 四、方案概述 4.1 增量预训练
为提升模型能力收集了来自多源的语料库包括 SQL 相关数据11GB、自然语言相关数据4.5GB和自然语言到代码数据6GB。基于 StarCoder 模型在该语料库上进行增量预训练得到不同参数规模1B、3B、7B、15B的 CodeS 模型优化目标为广泛使用的语言建模目标。
4.2 数据库提示构建
通过 Schema 过滤器和值检索器构建高质量数据库提示并融入数据库元数据列数据类型、注释、代表性值、主键和外键为模型提供更丰富的上下文信息有助于生成准确的 SQL 查询。
4.3 新领域适应
提出双向数据增强方法包括问题到 SQL 和 SQL 到问题的增强。通过收集少量真实用户问题并手动标注 SQL 查询利用GPT-3.5扩展数据集同时从现有基准中提取模板填充新数据库模式并优化问题生成大量问题 SQL 对以适应新领域数据库。
4.4 CodeS 的使用方式
CodeS 可通过监督微调SFT和少样本上下文学习两种方式使用。在有大量训练数据时SFT可使模型快速适应数据分布数据有限时可利用少样本上下文学习能力通过高效检索器选择有用示例辅助模型预测。 五、增量预训练
5.1 预训练语料库
为强化Text-to- SQL 模型在 SQL 生成与自然语言理解方面的能力本研究从三个关键维度收集数据集。在 SQL 相关数据 方面运用 StarCoder 预训练语料库中的 SQL 片段数据量达11GB以此提升模型生成 SQL 查询的能力。针对 自然语言理解能力 的提升从Alpaca-cleaned、Unnatural-instructions和UltraChat三个来源采样4.5GB的高质量对话数据这些数据有助于模型更好地理解用户的自然语言问题。在 自然语言到代码 数据维度整合了CoNaLa、StaQC、CodeAlpaca 20k和新构建的NL- SQL -458K等数据集总量为6GB旨在缩小自然语言问题与 SQL 查询之间的差距特别是NL- SQL -458K数据集通过从开源语料库提取 SQL 查询并借助GPT-3.5生成对应自然语言问题的方式构建为模型提供了丰富的学习素材。
5.2 预训练细节
CodeS 模型基于 StarCoder 构建 StarCoder 预先在多种编程语言、Jupyter笔记本、GitHub问题和Git提交等混合数据上进行了预训练。在开发 CodeS 时针对 SQL 相关数据进行两阶段的增量预训练而对自然语言相关和自然语言到代码数据各进行一个阶段的训练这种混合训练方式有利于模型在自然语言和代码相关任务中发挥出色性能。具体而言 CodeS -15B基于 StarCoder -15B而 CodeS -(1B、3B、7B)则分别源自相应的 StarCoder Base-(1B、3B、7B)。预训练过程中优化广泛使用的语言建模目标采用AdamW优化器其参数设置为 β1 0.9、β2 0.95、ε 10-8学习率设定为 5e-5同时应用权重衰减0.1和余弦退火学习率调度无热身步骤最终学习率为初始值的十分之一。训练采用大批次4M tokens并进行梯度裁剪裁剪值为1.0借助 DeepSpeed Zero-3 框架及 BF16 混合精度优化 GPU 内存消耗。由于GPU内存限制 CodeS -(1B、3B、7B) 的最大上下文长度为 8,192而 CodeS -15B 为 6,144。不同参数规模的 CodeS 模型预训练耗时各异 CodeS -(1B、3B、7B、15B) 分别约需 1.5、3、8、16 天。 六、数据库 Prompt 构建 除了模型改进之外构建有效的数据库提示对于文本到 SQL 任务也至关重要。高质量的提示为语言模型提供了有价值的见解使其能够更高效地生成精确的 SQL 查询。为了制作这些卓越的数据库提示我们采用了两个关键策略Schema 过滤器 和 值检索器同时还整合了关键的数据库元数据。算法 1 中介绍了详细说明我们的提示构建过程的伪代码。 6.1 Schema 过滤器
在实际场景中数据库常包含众多表和列这可能导致数据库提示过长超出模型上下文长度进而影响模型性能。为解决此问题本研究采用 Schema 过滤器根据用户问题筛选相关表和列减少提示长度同时保留关键信息。具体操作是开发一个模式项分类器依据用户问题预测表和列的相关性得分保留得分最高的top k1个表和每个表中得分最高的top k2个列。对于训练集中的样本依据真实 SQL 查询确定使用的表和列若使用的表数量少于top k1则随机选择未使用的表填充对于列也采取类似操作确保每个保留的表包含top k2个列。此策略不仅能缩短数据库提示长度还能减轻模型的模式链接压力提升模型性能。
6.2 值检索器
从数据库中检索与问题相关的值有助于模型在生成 SQL 查询谓词时更好地理解数据库内容提高查询准确性。以往研究多使用最长公共子串LCS算法计算数据库值与问题的匹配度但该算法在处理大数据集时时间复杂度高效率低下。为改进此问题本研究提出“粗到细”的匹配方法。首先利用 Lucene 构建 BM25 索引根据用户问题快速从数据库中提取数百个潜在相关值然后使用 LCS 算法计算这些潜在值与问题的匹配度确定最相关的值。这种方法显著减少了 LCS 算法的调用次数大大提高了值检索速度尤其适用于包含大量值的数据库如 BIRD 基准中的 Donor 数据库。
6.3 数据库元数据
本研究在数据库提示中融入多种关键元数据以提升模型生成 SQL 查询的准确性。列数据类型 决定了数据的操作规则例如数值类型支持算术运算而字符串类型则需转换后才能进行算术操作尽管模型可从列名和注释中推断部分类型信息但明确列数据类型仍有助于模型生成更准确的 SQL 查询。数据库中的注释 可解决模式中的歧义问题特别是在实际数据库中歧义模式可能导致模型选择错误的表或列将注释纳入输入可辅助模型进行准确的模式链接。代表性数据库值能为模型提供列值的格式信息例如告知模型“gender”列的取值范围有助于生成精确的谓词。主键和外键信息 则指导模型正确推导表之间的连接路径确保生成准确的JOIN ON子句本研究使用唯一标识符表示主键列以特定格式表示外键关系为模型提供关键的结构信息。 七、新领域适应 在现实世界的场景中人们通常拥有自己的数据库这些数据库来自金融、基因、生物学、学术界等各种新领域。但是由于缺乏标记的训练数据在这些数据库上开发文本到 SQL 模型具有挑战性。在本节中我们提出了一种 双向数据增强技术以最小的注释成本自动生成大量真实和通用问题、 SQL 对。 7.1 问题到 SQL 增强
针对新领域数据库缺乏标注训练数据的问题本研究提出问题到 SQL 的增强方法旨在生成与用户偏好一致的真实问题 SQL 对。首先从实际用户中收集少量具有代表性的自然语言问题这些问题反映了用户对特定数据库的常见查询需求然后手动为其标注对应的 SQL 查询获得少量高质量的问题 SQL 对。由于收集到的问题数量有限为扩充数据集引入两阶段提示方法利用GPT-3.5根据收集到的真实问题生成更多潜在问题捕捉用户意图再为这些合成问题生成相应的 SQL 查询。为保证生成问题的多样性在生成过程中打乱用户提供问题的顺序并采用高温度超参数。最终生成的新数据对能够更好地反映用户偏好增强了模型对新领域数据的适应性。
7.2 SQL 到问题增强
受Syntax SQL Net启发本研究探索了 SQL 到问题的增强方法通过通用模板生成问题 SQL 对。具体而言使用从 Spider 基准中提取的75个常见 SQL 模板这些模板涵盖多种常见查询模式如“Return the lowest {COLUMN} of {TABLE}”及其对应的 SQL 模板“SELECT {COLUMN} FROM {TABLE} GROUP BY {COLUMN} ORDER BY COUNT (*) ASC LIMIT 1”。由于单个 SQL 模板可对应多个自然语言问题模板将新数据库的模式信息填充到模板中生成大量模板问题 SQL 对。然而这些模板问题因直接插入表和列名而显得生硬为使其更自然利用GPT-3.5根据手动编写的优化示例对模板问题进行改写最终生成的新问题与典型Text-to- SQL 数据集更契合提高了模型对新领域数据分布的适应性。 八、CodeS 的使用方式 8.1 监督微调
在有大量训练数据可用时监督微调是优化 CodeS 模型的有效方法。首先将数据库提示与问题组合作为模型输入 CodeS 在训练过程中学习根据此输入预测准确的 SQL 查询其学习目标是最小化预测 SQL 查询与真实 SQL 查询之间的差异。经过监督微调后模型能够快速适应特定的数据分布在面对测试样本时根据输入的数据库提示和问题准确生成 SQL 查询有效提高了模型在实际应用中的性能。
8.2 少样本上下文学习
当训练数据有限时少样本上下文学习使 CodeS 能够利用其预训练知识处理用户问题无需进行参数微调。在这种方式下模型的性能不仅取决于其自身的内在能力还依赖于提供的示例质量。为提高示例选择的有效性本研究采用“问题模式感知演示检索器”综合考虑测试问题与训练问题之间的语义相关性和核心结构相似性选择最有用的K个示例。具体而言通过去除问题中的实体获取其核心结构问题模式使用nltk工具和SimCSE模型计算相似度避免仅基于实体匹配选择示例导致的偏差。选择示例后将其与测试样本合并为统一输入序列送入模型预测 SQL 查询从而在数据有限的情况下实现较好的性能表现。 九、实验设置与结果分析 9.1 实验设置
9.1.1 数据集
主要实验在 Spider 和 BIRD 两个基准数据集上进行同时评估模型在 Spider 的四个变体 Spider -DK、 Spider -Syn、 Spider -Realistic和Dr. Spider 上的鲁棒性。此外还使用了手动创建的金融Bank-Financials和学术Aminer-Simplified领域的数据库以测试模型在实际场景中的应用能力。 Spider 数据集包含丰富的训练、开发和测试样本涵盖多种领域数据库 BIRD 数据集具有更复杂的问题、模糊模式和大量数据值且提供外部知识EK用于特定样本 Spider 变体用于模拟实际场景中的不同挑战新领域数据库则针对特定领域特点设计任务和评估指标。
9.1.2 评估指标
对于 Spider 家族基准采用执行准确率EX和测试套件准确率TS评估其中EX评估预测与真实 SQL 查询执行结果是否一致TS通过在多个扩充数据库实例上评估减少EX的误报情况 BIRD 基准主要依赖EX并引入有效效率分数VES评估 SQL 查询执行效率但VES受硬件、软件和系统状态影响较大实际应用中EX更稳定可靠。
9.1.3 环境
我们的实验是在运行 CentOS Linux 7 操作系统的计算机上使用 PyTorch 13.1.7 进行的该计算机配备了 8 个 NVIDIA A800 80GB GPU、一个 IntelR XeonR Platinum 8358 CPU 和 1024GB RAM。
9.2 实验结果
9.2.1 少样本上下文学习评估
在 Spider 和 BIRD 基准的少样本上下文学习评估中见表4增量预训练显著提升了 StarCoder 的 SQL 生成能力。对比不同版本的 StarCoder 和 CodeS CodeS 表现更优 CodeS -15B 成为领先的开源预训练语言模型。较小模型在增量预训练后提升更明显证明了增量预训练对小规模模型在 SQL 相关任务上的重要性。 9.2.2 监督微调评估
在 Spider 开发集上见表5SFT CodeS-3B 超越了基于GPT-4的领先方法SFT CodeS -7B和SFT CodeS -15B达到新的最优性能但SFT CodeS -15B相比SFT CodeS -7B优势不明显可能存在过拟合问题表明更大模型不一定保证更好的微调结果。在 BIRD 数据集上见表6由于其复杂性更高本方法相比基线方法提升显著SFT CodeS -15B在测试集上的执行准确率相比ChatGPT COT提升23.20%且模型生成的 SQL 查询执行效率更高。 9.2.3 鲁棒性基准评估
在 Spider 变体上见表7SFT CodeS -7B 表现出色在不同数据集上相比最佳基线均有显著提升表明模型在分布变化场景下具有良好的泛化能力。在Dr. Spider 上见表8尽管在数据库扰动方面略逊于ChatGPT ZeroNL2 SQL 但在自然语言问题扰动方面表现更好模型对问题语义的理解更准确整体上SFT CodeS -7B和SFT CodeS -15B的全局平均性能略优于专为文本到 SQL 鲁棒性设计的ChatGPT ZeroNL2 SQL 。 9.2.4 消融实验
在 Spider 和 BIRD 数据集上的消融实验见表9表明各关键组件对模型性能均有重要影响。仅使用问题相似度检索示例-w/o pattern similarity在 Spider 上会导致性能下降而随机选择示例-w/o demonstration retriever在多数情况下会降低性能。Schema 过滤器和值检索器缺失会分别影响性能和生成速度以及 SQL 查询谓词生成能力。元数据方面列数据类型影响较小而注释、代表性数据库值和主键/外键对模型在两个数据集上的性能至关重要。 9.2.5 实际场景评估
在 Bank-Financials 和 Aminer-Simplified 两个新领域数据集上的评估见表10显示 CodeS -7B 在不同使用方式下均展现出一定的领域转移能力。通过双向数据增强策略微调后的 CodeS -7BSFT CodeS -7B using aug. data在两个数据集上的准确率显著提升合并多个数据集训练的统一模型SFT CodeS -7B using merged data不仅避免了性能下降还在 Aminer-Simplified 数据集上进一步提高了性能。 9.3 模型效率与部署
与基于提示的先前最优方法 DIN- SQL GPT-4 相比 CodeS 模型在推理速度上有显著提升1B、3B、7B、15B变体在 Spider 数据集上的推理时间分别为0.6、0.9、1.1和1.5秒。在部署方面 CodeS 适合在本地机器上运行不同参数规模的 SFT CodeS 模型在 Float16 精度下所需 GPU 内存容量分别为 10GB、13GB、20GB 和 35GB避免了对昂贵的GPT-4 API的依赖。 十、研究结论与展望 10.1 主要研究成果
本研究成功开发了 CodeS 系列模型这是专为 Text-to- SQL 任务设计的开源语言模型。通过增量预训练、数据库提示构建和双向数据增强等创新技术 CodeS 在多个基准测试中取得了优异成绩展现出卓越的 SQL 生成能力、准确性和鲁棒性。同时模型在实际场景中也表现出良好的适应性和效率为开源 Text-to- SQL 模型的发展做出了重要贡献。
10.2 未来研究方向
未来研究可从以下几个方面展开进一步优化模型架构和训练方法提高模型性能和效率探索更有效的数据增强策略以更好地适应不同领域和复杂场景加强对模型可解释性的研究提升用户对模型决策的信任度将Text-to- SQL 技术与其他人工智能技术如知识图谱、强化学习相结合拓展其应用范围和功能。
本研究通过对 CodeS 模型的深入探索为Text-to- SQL 领域提供了一种强大的开源解决方案有望推动相关技术在实际应用中的广泛部署和进一步发展。希望本研究成果能为人工智能领域的研究人员和开发者提供有价值的参考共同推动自然语言处理与数据库技术的融合创新。 论文地址CodeS : Towards Building Open-source Language Models for Text-to- SQLhttps://arxiv.org/pdf/2402.16347v1 代码地址https://github.com/RUCKBReasoning/ CodeS https://github.com/RUCKBReasoning/codes 原文链接CodeS构建用于文本到 SQL 的开源语言模型CodeS 是一系列预先训练的语言模型参数范围从1B到15B专为文本到SQL任务而设计。CodeS是一种完全开源的语言模型它以小得多的参数大小实现了卓越的准确性实现了新的SOTA准确性和稳健性。https://mp.weixin.qq.com/s/nrvcEdXfWFqeQDEKi9Ckkw