type
status
date
summary
slug
tags
category
password
URL
icon
QA对话目前是大语言模型的一大应用场景,在QA对话中,由于大语言模型信息的滞后性以及不包含业务知识的特点,我们经常需要外挂知识库来协助大模型解决一些问题。在外挂知识库的过程中,embedding模型的召回效果直接影响到大模型的回答效果,因此,在许多场景下,我们都需要微调我们的embedding模型来提高我们的召回效果。下面,我们就基于llama-index对BAAI/bge-base-zh-v1.5模型进行微调,关于该模型的介绍,可以参考https://huggingface.co/BAAI/bge-base-zh-v1.5。
平台介绍
对embedding模型进行微调的过程中需要使用GPU加速训练,由于家境贫寒,我这里就使用了Google colab提供的免费T4GPU进行微调测试。如果大家没办法使用这个,可以使用国内一些公司的GPU云平台,租便宜的GPU就行,微调这个模型所耗费的GPU资源不多。以下所有训练代码皆是在Jupter-notebook上编写并执行的。
依赖安装
安装一些依赖库,有些依赖需要制定版本,否则存在不兼容的问题。
训练样本准备
我们当前的使用场景是QA问答场景,因此训练数据的格式最好也是问答的格式。我这里由于没有现成的问答样本(人工整理比较耗时),因此我就摘取了《明朝那些事儿》这个小说里面的部分章节,然后让GPT-3.5针对文章内容进行提问,从而形成问答对。代码如下
构造训练集和测试集
使用GPT3.5基于小说内容生成对应的问题,最后生成train_dataset.json作为训练集,val_dataset.json作为验证集。
微调Embedding模型
这里的微调都是使用的默认参数,在实际微调过程中,可根据实际情况进行调整。
评估微调后的模型
在评估阶段,我们对比了微调前、后的BAAI/bge-base-zh-v1.5模型以及OPENAI的ada002的Embedding模型的召回效果,代码如下:
注意,在执行下面的代码前,需要先在当前项目的目录下创建results文件夹,否则会导致程序执行失败。
OPENAI-ada002
ada002模型的最终评测结果为
0.9285714285714286
原始BAAI/bge-base-zh-v1.5
原始的bge-base-zh-v1.5模型的评测结果为
0.7663744588744589
微调后的BAAI/bge-base-zh-v1.5
微调后模型的最终评测结果为
0.975
。即微调后,我们的embedding模型在当前数据集的召回效果由0.766
上升到0.975
。注意,得分并不是越高越好,需考虑是否过拟合,可以在其他数据集上再评测下。以上,即是一次简单的微调过程。感谢技术的发展和开源大佬们的贡献,使得人工智能的应用门槛越来越低。
参考资料:
- 作者:luxinfeng
- 链接:https://www.luxinfeng.top/article/%E5%9F%BA%E4%BA%8Ellama-index%E5%AF%B9embedding%E6%A8%A1%E5%9E%8B%E8%BF%9B%E8%A1%8C%E5%BE%AE%E8%B0%83
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。