当前位置:   article > 正文

0基础搞AI-NL2SQL子任务(Query-Schema-align)_finetune nl2sql

finetune nl2sql

        在NL2SQL(自然语言转SQL)中存在着两个经典的子任务:

        1、基于有限的数据库结构,当用户进行提问(Query)时如何找到问题中涉及的数据库表;

        2、是基于找到的数据库表结构(Schema)和用户提问(Query)构造合适的提问模板(Prompt),使用训练好的text2sql模型或者经过微调(fine-tune)后的大语言模型(LLM)

        因此分析任务1,事实上这可以被泛化为一个基本问题,那么就是如何通过模型构建用户提问Query和数据库结构Schema之间的联系,而在事实上,当前大语言模型的流行,离不开检索增强生成(RAG)技术的演进,也就是目前流行的知识库问答技术。

        事实上RAG技术就是构造一个知识库,使用embedding模型,对用户提问(Query)进行向量化(Query-embedding),将每一个知识文本段也通过向量化技术存储到向量库中,通过向量化后的用户提问对知识文本段进行召回,并进行排序,因此用户提问Query和数据库结构(Schema)之间的关系,可以泛化为RAG问题。

        通过巨量的用户提问(Query),用户提问对应的数据库结构(Schema)对一个预训练的embedding模型进行fine-tune成为了一个可以考虑的实现路径,因此,基于前期的180k中文NL2SQL数据集的基础上进行筛选和整合(Text2SQL-中文-180K · 数据集 (modelscope.cn))得到微调数据集,基于uniem库,使用基线模型m3e-large(m3e-large · 模型库 (modelscope.cn))进行微调,现在我们微调后模型已经进行了开源,我们的模型使用单卡A800 80G上经历10个小时,4个epoch的微调,具体代码和数据集,微调后的模型如下:

        相比较基线模型m3e-large,在Cspider-dev数据集中进行测试,我们的模型和m3e-large在top10,top5,top3,top2,top1的精度汇报如下:

        微调代码如下:

  1. import json
  2. from datasets import load_dataset
  3. from uniem.finetuner import FineTuner
  4. dataset=load_dataset("json",data_files="../Source_data/m3e_fine_tune_data.json")
  5. dataset=dataset["train"]
  6. dataset=dataset.train_test_split(test_size=0.1,seed=42)
  7. dataset["validation"]=dataset.pop("test")
  8. finetuner = FineTuner.from_pretrained("../model_dir/m3e-large", dataset=dataset)
  9. fintuned_model = finetuner.run(epochs=4,batch_size=16)

        微调数据集:

Text2SQL-中文-180K · 数据集 (modelscope.cn)icon-default.png?t=N7T8https://www.modelscope.cn/datasets/JinzhangLi/CDC_AI-Lab_Text2SQL_CN_180K/summary        微调后模型:​​​​​​Schema_Query_Align · 模型库 (modelscope.cn)icon-default.png?t=N7T8https://www.modelscope.cn/models/JinzhangLi/CDC_Schema_Query_Align/summary

        在未来我们将准备推出一下两个版本的Schema-Query-Align model,分别有:

        1、基于对比学习(Contrast Loss)和孪生网络思想,使用两个m3e-large模型分别对数据库结构Schema和用户提问Query进行表征学习,通过计算余弦度量和Contract Loss更新网络

        2、使用大模型(LLM)的前n层中的[EOS]位置标记的向量作为输出,利用大模型充分预训练的特性,使用QLoRa技术对模型进行微调使其具有Query表征能力,对指定的输入(数据库结构Schema)具有表征能力

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/840573
推荐阅读
相关标签
  

闽ICP备14008679号