Text-to-sql学习大纲

简介

NL2SQL的任务是将用户的自然语言问句转化为可以执行的SQL语句,是实现人类和数据库无缝交互和提高数据库分析效率的核心技术。本篇仅讨论基于大语言模型的text-to-sql技术方案。
基于大模型的text-to-sql处理流程


技术环节

其核心技术环节包括了:表/字段召回、SQL生成、SQL校验、生成回答/分析、图表展示等模块。
在这里插入图片描述

  • 表/字段召回:
    如果库表数量不大,可以借鉴C3的方案,通过上下文提示,让大模型自己选择召回相近的表格;如果库表数量较大,可以考虑类似知识库检索的形式,通过embedding的相似度来搜索相近表格。

  • SQL生成:
    这一步的关键有两个方面,一是大模型的SQL能力,二是prompt的构造。好的prompt应该具备清晰、详细的表信息,同时也可能需要涉及到一些领域知识和详细的字段描述去帮助大模型准确理解问题和表字段。一些prompt的构建思路如下:

    • 详细的表描述和表字段描述
    • 做一些预处理过滤,去掉表里的无关字段
    • 给大模型注入一些领域知识
    • 添加表格具体数据作为示例给到大模型的作为上下文输入
    • 添加问答模板作为上下文提示,提高大模型生成能力

  • 后处理
    可以通过后处理来做一些自我矫正和错误结果过滤(例如一些语法错误或缺失)。提高SQL语句准确率。

    • Self-consistency: 同样使用了基于执行结果的多路投票来选择sql。
    • Self Correction:修复一些小的语法错误,例如缺少DESC,DISTINCT等,通过zero-shot指令来让模型对生成的SQL直接进行修正。

相关资源


数据集

名称简介
WikiSQLSalesforce在2017年提出的一个大型标注NL2SQL数据集。其中包含了26,375张表、87,726条自然语言问句及相应的SQL语句。SQL的形式较为简单,不涉及到高级用法、Question所对应的正确表格已经给定、不需要联合多张表格等诸多问题的简化。
Spider耶鲁大学在2018年新提出的一个较大规模的NL2SQL数据集。该数据集包含了10,181条自然语言问句、分布在200个独立数据库中的5,693条SQL,并且内容覆盖了138个不同的领域。虽然在数据数量上不如WikiSQL,但Spider引入了更多的SQL用法,例如Group By、Order By、Having,甚至需要Join不同表,这更贴近于真实场景,也带来了更大的难度。
BIRD阿里巴巴联合香港大学等机构推出了面向大规模真实数据库的全新基准 BIRD
CSpiderSpider的中文数据集
CHASE西交和微软等提出了收个跨领域,多轮t2q中文数据集,包含5459个多轮问题组成的列表,17940个<query,SQL>二元组
天池NL2SQL中文挑战赛数据集中文数据集

相关项目

名称简介链接
Awesome-Text2SQL相关数据集和排名、相关sota模型汇总、相关的项目汇总eosphoros-ai/Awesome-Text2SQL: Curated tutorials and resources for Large Language Models, Text2SQL, and more. (github.com)
DB-GPTDB-GPT 是一个开源的以数据库为基础的GPT实验项目,具备以下等能力:,SQL 语言能力,SQL生成、诊断,私域问答与数据处理,数据库知识问答,插件模型eosphoros-ai/DB-GPT: Revolutionizing Database Interactions with Private LLM Technology (github.com)
sqlcoder一个sota nl2sql模型,34b,在自建评测体系上效果超过gpt-4defog-ai/sqlcoder: SoTA LLM for converting natural language questions to SQL queries (github.com)
LangChain-SQL-Chain一个基于Langchain构建和MySQL的交互的demosugarforever/LangChain-SQL-Chain (github.com)

相关博客:https://www.zhihu.com/people/la-la-la-9-78

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值