Text-to-SQL小白入门(12)Awesome-Text2SQL开源项目star破1000

项目介绍

项目地址

23年9月份刚开源这个项目,大半年过去了,star数终于破1000啦,决定在知乎更新一下内容,看看内容变化,知乎有上当时项目介绍的链接:追光者:Text-to-SQL小白入门(六)Awesome-Text2SQL项目介绍

项目首页

  • 截止2024.5.1日,项目已经有1014个star, 80个fork, 7个海内外贡献者,欢迎大家围观参与、使用!

如果项目对您有帮助的话,也可以star支持一下,您的支持就是我们更新最大的动力!

项目理念

这个项目是DB-GPT开源社区的子项目,支持中英文两种语言,主要收集了针对大型语言模型和Text2SQL等的精选教程和资源,希望能够共同学习、共同推动Text2SQL领域进步!

同时,考虑到Text2SQL和其他领域的相似性,未来也会更新Text2DSLText2APIText2Vis 等内容,欢迎各位伙伴一起贡献合作!

项目内容

主要内容有:

  • 贡献说明

  • 数据集排行榜

  • 介绍

  • 综述

  • 经典Text2SQL模型

  • 火热的开源LLM

  • 微调方法

  • 数据集

  • 评价指标

  • Python第三方库

  • 实践项目

榜单

这里收集了知名的WikiSQL、Spider、Bird数据集榜单的top10相关数据,持续更新中!

值得注意的是:spider1.0 数据集在2024.2.5日也停止更新了,等待spider 2.0 数据问世。

简介

这里主要介绍了Text2SQL的概念

  • Text-to-SQL(或者Text2SQL),顾名思义就是把文本转化为SQL语言,更学术一点的定义是:把数据库领域下的自然语言(Natural Language,NL)问题,转化为在关系型数据库中可以执行的结构化询语言(Structured Query Language,SQL),因此Text-to-SQL也可以被简写为NL2SQL。

  • 输入:自然语言问题,比如"查询表t_user的相关信息,结果按id降序排序,只保留前10个数据"

  • 输出:SQL,比如"SELECT * FROM t_user ORDER BY id DESC LIMIT 10"

图片来源于DB-GPT项目

综述

这里罗列了一些Text2SQL领域的综述文章

  • (2023-International Conference on Very Large Data Bases,VLDB,CCF-A)A survey on deep learning approaches for text-to-SQL [paper]

  • (2022-IEEE Transactions on Knowledge and Data Engineering,TKDE,CCF-A) A Survey on Text-to-SQL Parsing: Concepts, Methods, and Future Directions [paper]

  • (2022-International Conference on Computational Linguistics,COLOING,CCF-B) Recent Advances in Text-to-SQL: A Survey of What We Have and What We Expect [paper]

  • (2022-arXiv)Deep Learning Driven Natural Languages Text to SQL Query Conversion: A Survey [paper]

经典模型

这里主要介绍了Text2SQL领域的经典模型,最近的工作都以LLM+Text2SQL为主,附上了使用的数据集和论文代码链接。

  • (2023-arXiv, None)MAC-SQL: A Multi-Agent Collaborative Framework for Text-to-SQL [paper] [code]

  • (2023-arXiv, None)DBCᴏᴘɪʟᴏᴛ: Scaling Natural Language Querying to Massive Databases [paper] [code]

  • (2023-arXiv, None) Text-to-SQL Empowered by Large Language Models: A Benchmark Evaluation [paper] [code]

  • (2023-AAAI 2023, CCF-A) RESDSQL: Decoupling Schema Linking and Skeleton Parsing for Text-to-SQL[paper] [code]

基础LLM

这里主要以时间顺序列举了一些主要的开源大模型:比如Llama、ChatGLM、Baichuan、Qwen、phi、CodeLlama、Mistral-7B、Deepseek系列等,值得一提的是,Meta 在2024年4月18日 将 llama3 开源,太牛啦!

  • Llama [paper] [code] [model]

  • 2023年2月,Meta AI提出开源大模型Llama,有7b、13b、33b、65b共4种规模。

  • ChatGLM [paper] [code] [model]

  • 2023年3月,清华大学提出了开源的双语大模型ChatGLM,基于GLM框架,参数规格为6b。

  • Alpaca [paper] [code] [model]

  • 2023年3月,斯坦福大学提出基于Llama 7b模型微调的开源大模型Alpaca,有7b共1种规格,训练更简单和便宜。

  • Vicuna [paper] [code] [model]

  • 2023年3月,UC伯克利大学联合CMU、斯坦福大学提出的开源大模型Vicuna,有7b、13b共2种规格。

  • WizardLM [paper] [code] [model]

  • 2023年4月,北京大学和微软提出进化指令大模型WizardLM,有7b、13b、30b共3种规格,2023年6月,提出了数学领域的大模型WizardMath,2023年8月提出了代码领域的大模型WizardCoder。

  • Falcon [paper] [code] [model]

  • 2023年6月, 阿联酋提出了大模型Falcon,这是一种仅在网络数据集上训练的开源大模型,具有 1b、7b、40b和180b四个参数规范。值得注意的是,其中Falcon 40B的性能超过了LLaMA 65B。

  • ChatGLM2[paper] [code] [model]

  • 2023年6月,清华大学提出了ChatGLM的第二代版本ChatGLM 2,规范为6b,具有更强的性能、更长的上下文、更高效的推理和更开放的许可。

  • Baichuan-7b [code] [model]

  • 2023年6月,百川智能提出Baichuan-7B,这是一个基于Transformer架构的开源大规模预训练语言模型,包含70亿个参数,训练了约​​1.2万亿个tokens。支持中文和英文,上下文窗口长度为4096。

  • Baichuan-13b [code] [model]

  • 2023年7月,百川智能继Baichuan-7B之后,提出开源、可商用的大规模语言模型Baichuan-13B,有预训练版本(Baichuan-13B-Base)和对齐版本(Baichuan-13B-Chat)。

  • InternLM [paper] [code] [model]

  • 2023年7月,上海人工智能实验室和商汤科技等提出了InternLM,开源了针对实际场景量身定制的7b和20b参数模型和聊天模型以及训练系统。

  • Llama 2 [paper] [code] [model]

  • 2023年7月,Meta AI提出第二代Llama系列开源大模型Llama 2,和Llama 1相比,训练数据多40%,上下文长度翻倍,模型有7b、13b、34b、70b共4种规格,但是34b没有开源。

  • Code Llama [paper] [code] [model]

  • 2023年8月,Meta AI 在 Llama 2 的基础上提出 Code LLama。Code Llama 在多个代码基准测试中达到了开放模型中最先进的性能。有基础模型 (Code Llama)、Python 专业化 (Code Llama - Python) 和指令跟踪模型(instruction-following models),每个模型都有 7B、13B 和 34B 参数。2024年1月,Meta AI开源CodeLLama-70b、CodeLLama-70b-Python和CodeLLama-70b-Instruct。

  • Qwen [paper] [code] [model]

  • 2023年8月,阿里云提出大语言模型系列Qwen-7B(简称通义千问),在海量数据上进行预训练,包括网页文本、书籍、代码等,开源了两个版本Qwen-7B和Qwen-7B-Chat。 2023年9月,阿里云更新了Qwen-7B和Qwen-7B-Chat,并开源了Qwen-14B和Qwen-14B-Chat。2023年11月, 他们开源了Qwen-1.8B,Qwen-1.8B-Chat,Qwen-72B以及Qwen-72B-Chat.

  • Baichuan 2 [paper] [code] [model]

  • 2023年9月,百川智能提出新一代开源大语言模型Baichuan 2,在2.6万亿个tokens的高质量语料上训练,有7B和13B的基础版和聊天版,以及4bits量化版聊天模型。

  • Phi-1.5 [paper] [model]

  • 2023年9月,微软研究院提出开源语言模型phi-1.5,一个拥有1.3b个参数的Transformer,使用与phi-1相同的数据源进行训练,增加了由各种NLP合成文本组成的新数据源。当根据测试常识、语言理解和逻辑推理的基准进行评估时,phi-1.5在参数少于10b的模型中表现出近乎最先进的性能。2023年12月,他们提出了Phi-2,一个 2.7b参数的语言模型,展示了出色的推理和语言理解能力,展示了参数少于13b的基础语言模型中最先进的性能。

  • Mistral-7B [paper] [code] [model]

  • 2023年10月,Mistral-AI 公司提出开源 LLM Mistral 7B,这是一个具有7b参数的语言模型,旨在实现卓越的性能和效率。Mistral 7B 在所有评估基准中均优于开源的llama2 13B,在推理、数学和代码生成方面优于llama1-34B模型。他们还提供了一个经过微调以遵循指令的模型Mistral 7B--Instruct,该模型在人类和自动化基准测试上都超越了Llama2-13B-Chat。2023年12月,他们提出了开源LLM Mixtral-8x7B,一种预训练的生成式稀疏专家混合物,在大多数基准测试上优于Llama2 70B。

  • Deepseek [paper] [code] [model]

  • 2023年11月, DeepSeek-AI公司提出了开源LLM deepseek,它是在包含2万亿个中英文token的庞大数据集上从头开始训练的。同样,deepseek LLM主要有base和chat两大类,分别有7b和67b两种参数格式。论文中的数据显示,deepSeek LLM 67b 在一系列基准测试中都超越了LLaMA2 70b,特别是在代码、数学和推理领域。 此外,与GPT-3.5相比,DeepSeek LLM 67B Chat 表现出卓越的性能。

  • MiniCPM [paper] [code] [model]

  • 2024年2月, 面壁智能与清华大学自然语言处理实验室开源了大模型MiniCPM,这是一个系列端侧大模型,主体语言模型 MiniCPM-2B 仅有 24亿(2.4B)的非词嵌入参数量, 总计2.7B参数量。值得注意的是,经过 SFT 后,MiniCPM 在公开综合性评测集上,MiniCPM 与 Mistral-7B相近(中文、数学、代码能力更优),整体性能超越 Llama2-13B、MPT-30B、Falcon-40B 等模型。

  • Llama 3 [paper] [code] [model]

  • 2024年4月,Meta AI提出第三代Llama系列开源大模型Llama 3,模型有8b、70b共2种参数规格, 每种规则都有base和instruct版本。令人兴奋的是,Llama 3 模型是 Llama 2 的重大飞跃,并为这些参数规模的 LLM 模型建立了新的最先进水平。

模型微调

这里主要收集了一些常见的大模型微调Text2SQL的方法,比如LoRA、QLoRA、RLHF等,想看微调具体实践可以参考原来知乎总结:追光者:Text-to-SQL小白入门(十)RLHF在Text2SQL领域的探索实践

  • P-Tuning [paper] [code]

  • 2021年3月,清华大学等提出了针对大模型微调方法P-Tuning,采用可训练的连续提示词嵌入,降低了微调成本。

  • LoRA [paper] [code]

  • 2021年6月,微软提出的针对大模型微调的Low-Rank Adaptation(LoRA)方法,冻结预训练权重。

  • P-Tuning V2 [paper] [code]

  • 2021年10月,清华大学提出了P-Tuning的改进版本P-Tuning V2,性能更优。

  • RLHF [paper] [code]

  • 2022年12月,OpenAI使用RLHF方法训练ChatGPT,利用人类反馈信号直接优化语言模型,表现优异。

  • RRHF [paper] [code]

  • 2023年4月,阿里巴巴提出了一种新的学习范式称为RRHF(Rank Responses to Align Language Models with Human Feedback without tears),可以像微调一样轻松调整并实现PPO算法在HH数据集中的性能。

  • QLoRA [paper] [code]

  • 2023年5月,华盛顿大学基于冻结的4bit量化模型,结合LoRA方法训练,进一步降低了微调门槛。

  • RLTF [paper] [code]

  • 2023年7月,腾讯提出了RLTF(Reinforcement Learning from Unit Test Feedback),这是一种新颖的online强化学习框架,具有多粒度的单元测试反馈,用于细化code LLMs。

  • RRTF [paper]

  • 2023年7月,华为提出RRTF(Rank Responses toalign Test&Teacher Feedback)。与 RLHF 相比,RRHF可以有效地将语言模型的输出概率与人类偏好对齐,调优期间只需要1-2个模型,并且在实现、超参数调优和训练方面比PPO更简单。

  • RLAIF [paper]

  • 2023年9月,谷歌提出了RLAIF(来自AI反馈的强化学习RL),这是一种由现成的LLM代替人类来标记偏好的技术。他们发现RLHF和 RLAIF方法在摘要任务上取得了相似的结果。

数据集

  • WikiSQL [paper] [code] [dataset]

  • 2017年9月,Salesforce提出的一个大型的Text-to-SQL数据集,数据来源于Wikipedia,属于单领域,包含了80654个自然语言问题,77840个SQL语句,SQL语句形式比较简单,不包含排序、分组、子查询等复杂操作。

  • Spider [paper] [code] [dataset]

  • 2018年9月,耶鲁大学提出的多数据库、多表、单轮查询的Text-to-SQL数据集,也是业界公认难度最大的大规模跨领域评测榜单,包含了10181个自然语言问题,5693个SQL语句,涉及138个不同领域的200多个数据库,难易程度分为:简单、中等、困难、特别困难。2024年2月,耶鲁大学开源了Spider1.0排行榜单的test数据集,并且他们将在3月开源Spider 2.0数据集。

  • SParC [paper] [code] [dataset]

  • 2019年6月,耶鲁大学提出了一个大型数据集SParC,用于复杂、跨域、上下文相关(多轮)语义解析和Text-to-SQL任务,该数据集由4298个连贯的问题序列组成(有12k+个自然语言问题到SQL标注的Question-SQL对,由14名耶鲁大学学生标注),通过用户与138个领域的200个复杂数据库的交互获得。

  • CSpider [paper] [code] [dataset]

  • 2019年9月,西湖大学提出了一个大型中文数据集CSpider,用于复杂和跨领域的语义解析和Text-to-SQL任务,由2位NLP研究人员和1位计算机专业学生从数据集Spider翻译而来,其中包含200个数据库上的10181个问题和5693个独特的复杂SQL查询,具有涵盖138个不同领域的多个表的数据库。

  • CoSQL [paper] [code] [dataset]

  • 2019年9月,耶鲁大学和Salesforce Research提出了一种跨域数据库CoSQL,它由30k+轮次和10k+带注释的SQL查询组成,这些查询是从Wizard-of-Oz (WOZ)集合中获得的,该集合包含3k个对话,查询跨越 138个域的200个复杂数据库。

  • TableQA [paper] [dataset]

  • 2020年6月,追一科技公司提出了一个大规模跨领域Text-to-SQL数据集TableQA,其中包含64891个问题和6000多个表的20311个唯一SQL查询。

  • DuSQL [paper] [dataset]

  • 2020年11月,百度针对跨域文本到SQL任务提出了一个大规模、实用的中文数据集DuSQL,它包含200个数据库、813个表和23797个Question-SQL对。

  • CHASE [paper] [code] [dataset]

  • 2021年8月,西安交通大学和微软等提出了首个跨领域、多轮Text-to-SQL中文数据集,包含了5459个多轮问题组成的列表,17940个<query, SQL>二元组。

  • BIRD-SQL [paper] [code] [dataset]

  • 2023年5月,香港大学和阿里巴巴提出了一个大规模跨域数据集BIRD,其中包含超过12751个独特的问题 SQL、95个大数据库,总大小为33.4GB。它还涵盖区块链、曲棍球、医疗保健和教育等超过37个专业领域。

  • KaggleDBQA [paper] [code] [dataset]

  • 2021年6月,华盛顿大学和微软研究院提出了KaggleDBQA,这是一个真实Web数据库的跨域评估数据集,具有特定领域的数据类型、原始格式和不受限制的问题。 它包括跨 8 个数据库的 272 个示例,每个数据库平均有 2.25 个表。 该数据集以其真实世界的数据源、自然的问题创作环境以及具有丰富领域知识的数据库文档而闻名。 主要统计数据:8.7% WHERE 子句、73.5% VAL、24.6% SELECT 和 6.8% NON-SELECT。

评测指标

除了查看论文中的指标计算,还可以直接查看spider数据集Leaderboard榜单

  • 执行准确率(Execution Accuracy,简称EX)[paper]

  • 定义:计算SQL执行结果正确的数量在数据集中的比例,结果存在高估的可能。

  • 逻辑形式准确率(Exact Match,简称EM) [paper]

  • 定义:计算模型生成的SQL和标注SQL的匹配程度,结果存在低估的可能。

如果想查看具体的计算公式和逻辑,可以直接去对应数据集的开源仓库中去运行eval相关代码。

库函数

  • mindsql

  • MindSQL 是一个 Python RAG(检索增强生成)库,旨在仅使用几行代码来简化用户与其数据库之间的交互。 MindSQL 与 PostgreSQL、MySQL、SQLite 等知名数据库无缝集成,还通过扩展核心类,将其功能扩展到 Snowflake、BigQuery 等主流数据库。 该库利用 GPT-4、Llama 2、Google Gemini 等大型语言模型 (LLM),并支持 ChromaDB 和 Fais 等知识库。

实践项目

目前主要尝试了DB-GPT-Hub项目的全流程,比如模型选用vicuna、code llama等等。

  • DB-GPT-Hub

  • eosphoros组织提出的专注于大模型Text-to-SQL微调的开源项目,包含了大模型下载、数据集预处理、LoRA和QLoRA等微调技术、模型预测、模型评估等步骤。

  • sqlcoder

  • Defog组织提出的先进的Text-to-SQL的大模型,表现亮眼,效果优于GPT3.5、wizardcoder和starcoder等,仅次于GPT4。

  • modal_finetune_sql

  • 项目基于LLaMa 2 7b模型进行Text-to-SQL微调,有完整的训练、微调、评估流程。

  • LLaMA-Efficient-Tuning

  • 这是一个易于使用的LLM微调框架,支持LLaMA-2、BLOOM、Falcon、Baichuan、Qwen、ChatGLM2等。

友情链接

  • eosphoros

  • 他们是一支由来自互联网公司的技术爱好者和热衷于开源项目的NLP研究生组成的团队。他们的重点是开发保护数据库和大型语言模型的隐私和安全的解决方案。他们的目标是确保这些模型的能力保持绝对私密、安全和受控。

  • Awesome-AIGC-Tutorials

  • Awesome AIGC Tutorials 包含一系列精选的教程和资源,涵盖大型语言模型、AI 绘画和相关领域。探索适合初学者和高级人工智能爱好者的深入见解和知识。

最后附上项目的star增长曲线,持续开源,坚持笔耕不缀、久久为功!

其他文章学习

xt-to-SQL小白入门(一)综述文章学习

Text-to-SQL小白入门(二)Transformer学习

Text-to-SQL小白入门(三)IRNet:引入中间表示SemQL

Text-to-SQL小白入门(四)指令进化大模型WizardLM

Text-to-SQL小白入门(五)开源代码大模型Code Llama

Text-to-SQL小白入门(六)Awesome-Text2SQL项目介绍

Text-to-SQL小白入门(七)PanGu-Coder2论文------RRTF

Text-to-SQL小白入门(八)RLAIF论文:AI代替人类反馈的强化学习

Text-to-SQL小白入门(九)InstructGPT论文:教你如何训练ChatGPT

Text-to-SQL小白入门(十)RLHF在Text2SQL领域的探索实践

Text-to-SQL小白入门(十一)DAIL-SQL教你刷Spider榜单第一

相关推荐
04Koi.29 分钟前
Redis--常用数据结构和编码方式
数据库·redis·缓存
silver988632 分钟前
mongodb和Cassandra
数据库
PersistJiao35 分钟前
3.基于 Temporal 的 Couchbase 动态 SQL 执行场景
数据库·sql
上山的月1 小时前
MySQL -函数和约束
数据库·mysql
zhcf1 小时前
【MySQL】十三,关于MySQL的全文索引
数据库·mysql
极限实验室1 小时前
Easysearch Chart Admin 密码自定义
数据库
丁总学Java1 小时前
要查询 `user` 表中 `we_chat_open_id` 列不为空的用户数量
数据库·mysql
抓哇能手1 小时前
数据库系统概论
数据库·人工智能·sql·mysql·计算机
littlegirll1 小时前
一个从oracle使用spool导出数据到kadb的脚本
数据库·oracle
geovindu1 小时前
CSharp: Oracle Stored Procedure query table
数据库·oracle·c#·.net