导语
在信息爆炸的时代,如何从海量数据中精准获取知识并生成智能回答,已成为AI落地的核心挑战。腾讯优图实验室凭借前沿的RAG体系,突破传统检索与生成的局限,打造了一套覆盖语义检索、结构化表检索、图检索的全栈解决方案。
本文将为你深度解析优图实验室RAG技术的架构设计与创新实践:从多阶段训练的2B级Embedding模型、Reranker分层蒸馏,到结构化表的智能解析与查询,再到自研GraphRAG框架在构图效率与复杂推理上的突破。目前,优图实验室自研的RAG技术已应用在多个领域和产品,未来,我们更将着力于迈向Agentic RAG与低成本精细化方向,推动产业智能化升级。
RAG技术架构
语义检索
1.1、Embedding模型
1.1.1、多阶段训练管线
为了提升基于大语言模型(LLM)的向量模型的检索能力,采用多阶段训练策略,逐步增强向量模型的泛化能力和检索效果。
图1.1. 训练管线概览图
弱监督对比学习训练。通过批次内负样本共享和跨设备负样本共享技术,每个查询文本对应多达6万个负样本,来极大增强向量模型的判别能力。
有监督对比学习训练。通过优化数据采样方法,使跨设备共享的负样本来源于同一个子数据集,来保证难负样本的质量和难度一致性,提升对比学习的有效性。在输入文本中加入特定任务的指令词,进行指令感知的对比学习,使模型能够根据不同任务调整语义匹配策略,来提升向量模型指令遵循的动态检索能力。
1.1.2、精细化数据工程
1.1.2.1、数据构造流程
训练数据的规模和质量对向量模型的效果至关重要,一般地,构建对比学习训练数据的流程如下:
构建(问题,相关文档)的文本对。通常有两种方式,一是在网络上收集已经构建好的开源的问答对数据;二是利用大语言模型杰出的文本生成能力,为文档生成高质量的问题数据。通过收集开源数据和利用大语言模型合成数据,扩充了训练数据的规模,增加训练数据的多样性和丰富性,有助于提高向量模型的泛化能力。
挖掘难负样本,构建(问题,正样本,负样本)三元组。构建两千万规模的文本语料库用于难负样本挖掘,通过扩大语料库规模、构建特定行业语料库、利用大语言模型识别过滤假负样本的方法,优化了挖掘负样本的质量和效果。
1.1.2.2、数据质量控制
图1.2. 质量控制逻辑示意图
在上述内容基础上,借助 Reranker 模型对训练语料进行筛选及重组,以进一步提升数据质量。大致的处理逻辑包含以下三项:
剔除相关性分数极低的伪正例
基于相关性分布,过滤简单负样本
识别强负例挖掘过程中的潜在正样本,并进行替换
Reranker 模型的评分在通过验证后,会应用于编码器的更新过程,实现label层面的知识蒸馏。
1.1.3、多任务均衡配置
图3. 多任务跨GPU联合训练示意图
为充分发挥 Embedding 模型的潜力,解决不同任务属性、不同领域数据之间的冲突问题,我们设计了一套精密的联合训练方案:
数据统一化:依据数据在组织形式等方面的差异,将整体语料划分为 IR 和 STS 两大类,并采用统一的联调格式同时囊括二者,从而实现混合加载。
动态采样器:跨设备负采样是编码器微调过程中的常用技巧,但在多任务、多领域、多节点混合训练时,跨域数据的引入会为对比学习带来噪音,影响模型表现。对此,通过重构采样器和加载器,保证一次 iteration 中,多个 GPU 获取的样本严格出自同一数据集,并支持为它们设置差异化的 batch size 以充分平衡更新次数。
任务特定指令及损失:不同的检索及匹配任务拥有不同的领域特点及评价标准。相较于不加区分地对待全体数据,差异性的设置可以在最大程度上为参数更新过程注入先验知识。经过分析,我们针对 STS 和 IR 这两大类任务设计了不同的损失函数,同时支持配置个性化指令以灵活应对下游任务。在这种方式下,通过与采样器的联合作用,每个批次将提供纯粹的任务梯度,从而极大地避免强制适配时的潜在性能损失。
模型融合策略:以ModelSoups为代表的权重融合技术此前已被证实可以为CLIP等多模态模型带来提升,而这一方案同样适用于文本嵌入领域。在精调阶段结束后,通过选取不同训练轨迹得到的模型,并精心设置它们的融合方式及权重,进一步增强了网络在各项任务的表现。
1.1.4、任务定制损失
损失函数是模型优化过程的目标及主要参照,对于神经网络的性能具有重要影响。良好的损失函数应充分贴近任务的评价指标,从而为模型提供有效指导。
具体到编码模型最主要的两类应用场景——文本语义相似性(STS)及信息检索(IR)。STS任务采用Spearman相关系数作为根本指标,该指标通过计算样本的预测排位与真实排位之差来衡量顺序一致性。IR任务的核心指标nDCG同样是list-wise式的,但它更强调高位优先性。鉴于在大部分IR任务中,与给定query相关的文档其实非常稀少,因此将这些正样本有效突出出来是提升模型表现的关键。
基于这两类任务的差异性和共通性,我们为STS任务引入了多种顺序性损失,希望模型从逆序对、分数差异性等角度对Embedding分布进行调整,以捕获细粒度的语义区别。对于IR任务,则会在采集充分多的负样本同时尽可能地扩大query和所有正样本之间的相似度分数,从而增强模型的判别能力。
1.1.5、模型效果
目前很多开源的Embedding模型在开源榜单测试集和业务侧测试集上的效果没法很好的平衡,往往顾此失彼。我们的apd-embedding-2b模型能够在这两种测试集上都达到比较好的效果。
我们验证了apd-embedding-2b模型在C-MTEB基准测试中的表现,在中文IR任务和中文STS任务上均取得了SOTA的结果。
中文IR任务
中文STS任务
同时我们也在业务集上进行了实际测试,apd-embedding-2b以2B的参数量超越竞品4B、8B模型的效果,具体结果见下表:
1.2、Reranker模型
尽管向量模型的双编码器架构在实际的检索场景中计算效率高,耗时短,但它却无法直接捕捉查询文本和文档文本之间的微妙关联。为了提升检索环节召回文档的准确性,需要采用基于LLM的Reranker模型对向量模型的检索结果进行重排序。这种方式可以有效捕捉到查询文本和文档文本之间深层次的语义关联,从而给出更准确的检索结果。
1.2.1、Reranker模型升级为LLM模型
传统的Reranker模型通常基于BERT、RoBERTa等模型进行训练,包括BGE-Reranker-large、Jina-Reranker等,其模型参数量相对较小(110M~400M),输入长度有限(512个token),对自然语言的理解能力远不及LLM。
为了提升Reranker模型在实际复杂场景中的表现,使用LLM训练Reranker模型成为必要方案。该方案能够有效发挥LLM对复杂问题和文档的理解能力,从而提供更高质量的文档检索结果,并且其所能支持的文本长度更长(达到8k甚至更长)。同时,通过对特殊任务添加指令,模型也能够适应不同场景的重排序需求。下表是在某业务数据上进行的评测:
1.2.2、分层知识蒸馏损失
对比学习损失是的Reranker模型训练时常用的损失函数,它的核心作用是帮助模型学习到区分相关和不相关查询-文
万字长文详解优图RAG技术
AI云资讯
2025-09-14
4
0
本文由 Zyentor(智元界) 原创发布,转载请注明出处。
欢迎在 技术论坛 讨论本文相关内容