支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


技术分享|如何快速领域增强 RAG 的 Embedding 模型

发布日期:2024-12-11 10:32:28 浏览次数: 2200 作者:百川智能商业服务

1. 研究背景

1.1 Embedding 模型在 RAG 中的重要性

检索增强技术(RAG)提供了一种高效地更新领域知识,并且缓解模型幻觉问题的方法。在通常的 RAG 流程中,首先以向量数据库、索引库的形式存储领域知识;在用户提问时,在向量库和索引库中匹配与用户问题相关性最高的知识片段;最后,大模型根据用户问题和检索得到的知识片段,推理归纳并给出回答。

在 RAG 方法中,检索到正确的知识片段是最终能正确回答用户问题的前提。在稠密向量检索过程中,Embedding 模型将知识片段、用户问题转换为向量,通过计算向量间的余弦相似度得到与用户问题相关性最高的知识片段。因此 Embedding 模型决定了稠密向量检索的结果,一个好的 Embedding 模型可以让 RAG 整体效果显著提升。

1.2 真实场景需要增强Embedding模型效果

近年来,Embedding 模型得到学术界和工业界广泛的关注,并发布了一系列优秀的研究工作和开源模型。在众多主流的开源 Embedding 模型中,bge-m3 基于 BERT 模型通过多阶段训练得到,因其较小的参数规模、较长的窗口长度和较强的通用能力被广泛使用;gte 系列模型基于通义千问大模型训练得到,在众多评测集中表现出色;在前沿探索中,基于Mistral大模型训练的 NV-Embd、E5-Mistral 和 bge-icl 等模型在训练中引入了 few-shot 方法和更多的数据处理策略。

但是,以上 Embedding 模型的工作更多关注在通用领域,Embedding 模型还没有学习到企业内部数据和知识,在实际落地实践中效果并不好。比如,在金融领域 Embedding 模型评测集 FinMTEB 中可以发现,当前的主流 Embedding 模型在金融领域 hard 测试集表现一般,相比在通用评测集 MTEB 的平均分数有较大程度下降。在客户场景快速增强 Embedding 模型并提升在领域测试集的效果,是值得研究的课题,也是企业落地 RAG 的重要工作。
2. 48 小时内快速领域增强 Embedding 模型

大模型在医疗、金融、教育、政务等领域有巨大的应用前景,百川智能与行业客户也在这些领域深度打磨产品。在提升产品效果过程中,百川智能逐步探索出 Embedding 模型快速领域增强的通用解决方案。

Embedding 模型领域增强的目标是在领域测试集上效果显著提升,同时要尽量减少在通用测试集上效果的损失,也要控制训练的机器成本并且不需要人工标注训练集。下面将以金融领域增强的 Embedding 模型 FinRet-v1 为例,介绍百川在 Embedding 模型领域增强的实践

FinRet-v1 基于通用 Embedding 模型继续训练,大幅降低了领域 Embedding 的训练成本。通用 Embedding 模型的选择,需要综合考虑模型的处理速度、向量维度和通用榜单效果。为方便复现,下面实验结果基于开源 bge-m3 模型实现。

FinRet-v1 的训练过程包含数据生产、模型微调、模型融合三个主要阶段,其中数据生产包括文档切片、生成查询、正例清洗以及难负例挖掘四个步骤。数据生产时间 30 小时,4 卡 A100 训练时间 12 小时,增强后的 Embedding 模型在 FinMTEB 金融检索能力提升 5.46%、相对提升 12.77%,显著提升了领域测试集效果;同时,在通用 MTEB 的中文评测集上提升 0.58%、在 MTEB 的中文检索任务评测集提升 3.04%,通用能力没有损失。

下面将详细介绍模型整体训练流程与技术细节。

2.1 数据生产

2.1.1 文档切片

在数据生产阶段,首先收集中英文金融数据,并对文档进行切分。bge-m3 模型具有 8192 的窗口长度,在对文档切分时,切片长度可以有多种调整方式,这里我们让金融数据切片的长度分布与 bge-m3 训练数据的长度分布尽量一致。多样的切片长度可以让 Embedding 模型在处理不同长短的切片和用户查询时均保持较好的效果。

2.1.2 生成查询

得到文档切片后,借助大模型生成相应查询语句,这里我们主要选择 Baichuan2-Turbo 和 Qwen2.5-32B 模型,并使用了多种生成查询的策略:

(1)给模型文档切片,让模型直接生成查询语句;

(2)根据不同的 RAG 任务类别,让模型根据文档切片生成相应任务的查询语句,任务类别包括:知识抽取类、多跳推理类、对比类、长答案类;

(3)让模型根据文档切片推理出可能对应的任务类型,并根据不同任务类型生产不同的查询语句;

(4)基于已有的查询和文档切片,让模型通过改写和替换关键词的方式生成新的查询与文档切片。

2.1.3 正例清洗

通过上述步骤收集到大量查询语句,在之后的对比学习过程中,每条查询对应的文档切片即为正例。在清洗查询、正例时,首先根据规则的方式,排除掉长度过长的查询,并排除含有“本文”、“下文”、“那个人”等指示代词的查询语句。下一步,为了过滤掉相似度过高的查询、正例,借助 Embedding 模型计算查询、正例的相似度,并去掉了相似度较高的数据。这一数据清洗过程是可迭代的,即通过当前训练得到的模型过滤数据,并用过滤后的数据继续对当前模型进行微调。这一过程可以得到对模型价值更大的高质量数据。

2.1.4 难负例挖掘

在通常的对比学习过程中,负例由同个数据集中的其他数据切片组成。为了提高数据质量和训练的效率,使用挖掘难负例的方法,即通过 Embedding 模型计算查询语句、其他切片的相似度,并选择相似度高的切片作为难负例。为了避免错负例,即切片和查询相似度高、并且切片实际上应作为正例的情况出现,针对不同方法得到的查询,在挖掘难负例时忽略掉相似度最高的一些负例。这一过程同样是可迭代的,即通过当前训练得到的模型挖掘难负例,并用挖掘后的数据对当前模型进一步训练。

2.2 模型微调

在得到查询和相应的正例、难负例后,采用对比学习的方法微调 bge-m3,使用通常的 InfoNCE 损失函数。通过使用上述方式生成的 335k 数据在 4 张 A100 GPU 上进行 2 epoch 微调,采用从 1e-5 线性衰减且无热启动的学习率。

2.3 模型融合

金融领域数据微调后的模型,在 FinMTEB 的检索能力相比 bge-m3 提升 5%,但在 MTEB 的中文评测集上通用能力相比 bge-m3 下降 4%。为了让模型在具有金融领域能力的同时不损失通用能力,我们选择将微调后的模型与原始 bge-m3 融合,从而降低对通用能力的损失。经过实验推荐使用 LM_Cocktail 方法,计算不同模型在少量训练数据上的损失函数,自动确定模型融合的超参数选取。

2.4 评测结果

  • 计算方式:
     I 代表子评测集组成的集合,指标 i 代表不同子评测集

  • 金融领域中文检索能力:在 FinMTEB 的 10 个子评测集上评测,与原始模型相比综合得分由 68.08 提升到 73.46,绝对提升 5.38,相对提升 9.51%。
  • 金融领域英文检索能力:在 FinMTEB 的 10 个子评测集上评测,与原始模型相比综合得分由 64.06 提升到 69.61,绝对提升 5.55,相对提升 16.02%。

  • 通用能力:在 MTEB 的 39 个通用中文子评测集(包含 C-MTEB 的全部 31 个子评测集)上进行评测,BGE-M3 得分 64.06,FinRetv1 得分 64.63。
    • 下图为 39 个通用中文评测集的评测结果,y 轴代表 FinRetv1 分数减去 BGE-M3 分数,黄色越高代表 FinRetv1 提升越大。整体上,检索、聚类(clustering)任务得分增加,语义相似度任务得分降低,其他基本持平。
    • C-MTEB 检索任务:在 8 个检索任务中,BGE-M3 得分 65.44,FinRetv1 得分 68.47,绝对提升 3.04,相对提升 5.91%。具体得分如下。
    • 主要下降部分:在 39 个子评测集中,FinRetv1 在 6 个评测集上得分下降超过 1.5,包括 3 个句子语义相似度任务、2 个 pair classification task(和句子语义相似度任务类似,文本稍长)、1 个语义分类任务(积极、消极、中立)。该结果符合预期,因为大量实验、论文表明Embedding模型的检索能力越强,则语义相似度能力越弱,反之亦然。

3. 总结

针对 RAG 落地过程中检索链路 Embedding 模型的定制优化问题,百川智能探索出了一个快速领域增强的解决方案,在开源模型实验以及客户场景中验证了方案的有效性。在产品打磨过程中,Embedding 模型还需要收集线上真实数据反馈,指导后续数据生产并形成数据飞轮,持续优化 Embedding 模型效果,最终提升 RAG 的整体效果。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询