1、数据集格式
2、对于微调数据的构造
bge基础模型向量化数据
对每个query召回top10
计算top10的重排得分 #重排得分的计算方法是?Bge-reranker-large
#关于重排参考文章:
两两计算query、answer、target_query、target_answer的bge_cos-sim、jacard 相似性系数、lcs、编辑距离
使用重排得分、bge相似度、jacard相似度系数等数值组合,筛选出训练的数据
Query targetquery Answer targetanswer
writer.writerow(["query", "answer", "target_query", "target_answer", "rerank_score",
"query_tgt_query_bge_cos", "query_tgt_query_lcs_score", "query_tgt_query_edit_dist", "query_tgt_query_jaccard",
"answer_tgt_query_bge_cos", "answer_tgt_query_lcs_score", "answer_tgt_query_edit_dist", "answer_tgt_query_jaccard",
"query_tgt_answer_bge_cos", "query_tgt_answer_lcs_score", "query_tgt_answer_edit_dist", "query_tgt_answer_jaccard",
"answer_tgt_answer_bge_cos", "answer_tgt_answer_lcs_score", "answer_tgt_answer_edit_dist", "answer_tgt_answer_jaccard"
])
使用bge基础模型向量化数据
对每个query召回top100
过滤出0.4到0.7的数据作为负样本/或者从range_for_sampling范围内随机抽样
注:负样本的构造是用以上两种方法生成。
LLM根据段落生成问答对,query是生成的问题,passage是给定的段落,如此构成一个正例对。LLM生成的数据过滤下来后,不到1w条
Prompt:
prompt = f"""
'''
{paragraph}
'''
请你从以上文献段落中抽取问答对, 务必严格遵守以下要求:抽取出来的问题和答案必须包含主语谓语宾语, 不得出现 本研究、本实验 等指代不明的词语, 请确保抽取出的问题必须能在原文中找到答案, 返回结果的格式请严格按照'''中的格式
'''
[
{{
"问题": "问题1内容",
"回答": "问题1的答案"
}},
{{
"问题": "问题2内容",
"回答": "问题2的答案"
}},
{{
"问题": "问题3内容",
"回答": "问题3的答案"
}}
]
'''
"""
3、训练参数
Batch_size要大(结合gradient_accumulation_steps使用),否则小的batch_size训练过程中loss非常陡,效果很差
4、可改进的地方
用训练好的向量模型去构造困难样例,再去训练基座模型,是否效果会更好
将负样本从阈值区间采样,改为取相对来说更相近的前TopK个
参考文章:
因篇幅问题不能全部显示,请点此查看更多更全内容