使用RAG技术构建企业级文档问答系统:检索优化Embedding微调

原创 超乎想象 [ 超乎想象的科技圈 ](javascript:void(0)😉 2024年08月13日 00:28 北京

概述

根据使用RAG技术构建企业级文档问答系统之基础流程中的RAG流程描述,有一个很重要步骤是从知识库中检索相关的文档片段,由于RAG是一个典型的串行流程,即先检索,再生成,因此,提升检索性能,通常可以提升RAG的效果。

针对RAG检索部分的优化,已经有不少优化手段,典型的有如下这些:

  • Embedding模型优化
  • 混合检索(BM25+Embedding)
  • Multi Query
  • RAG Fusion
  • Hypothetical Document Embeddings(HyDE)
  • Rerank

从本文开始,会陆续覆盖这些优化方法,每次优化,会分别计算检索的命中率,和问答的准确率,以便大家直观地感受不同优化手段带来的性能提升。

检索的命中率,会根据《使用RAG技术构建企业级文档问答系统之基础流程》中介绍的HitRate,问答的准确率,然后评估,考虑到大家访问OpenAI的API可能不便,打分统一替换为Qwen2-72B-Instruct。

本文首先介绍Embedding模型优化。通常我们所使用的Embedding模型,由于要考虑到通用型,不会特别针对某个领域做专门的优化。针对Embedding模型的优化,主要有两个部分可以做:

  • 对Embedding做二次预训练
  • 对Embedding模型做微调

对Embedding做二次预训练通常不会有显著的效果提升,本文主要介绍对Embedding模型的微调。所选取的模型是BAAI/bge-large-zh-v1.5(HuggingFace中的模型ID),是BAAI(智源)开源的一个Embedding,这个基本上也是目前RAG中用得比较多的模型了,虽然BGE发布后陆续有新的模型不断刷新了榜单,但综合对比下来,BGE还是很能打的。

本文会介绍Embedding微调时,涉及的如下几点:

  • 微调样本构建
  • 微调脚本
  • 训练过程监控:W&B监控
  • 模型效果评估

本文优化后的模型评估效果见下表,可以看出,检索的HitRate,Embedding微调后的模型,都是显著优于Baseline(基础流程中介绍的方法)的,问答全流程,使用3个知识片段的Embedding微调后的模型进行检索,也取得了目前为止的最好效果图片

本文代码已开源,地址在:https://github.com/Steven-Luo/MasteringRAG

其中,样本构建代码为:

  • build_embedding_sample_v1.ipynb
  • build_embedding_sample_v2.ipynb:最终使用版本

微调脚本为:

  • finetune_bge_embedding_v1.sh
  • finetune_bge_embedding_v2.sh
  • finetune_bge_embedding_v3.sh
  • finetune_bge_embedding_v4.sh:最终使用版本

RAG全流程代码为:retrieval/01_bge_embedding_ft.ipynb

环境准备

Embedding模型的训练,虽然对机器的性能要求没有对训练LLM那么高,但也还是有一定要求的,GPU是需要的

硬件环

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值