当前位置: 首页 > news >正文

Rerank模型

RAG中embedding与rerank之间的区别?

Embedding 阶段是将查询和文档(或候选答案)映射到向量空间,并通过向量之间的相似度来进行文档检索,目的是从大量文档中快速找到相关的候选文档。

而 Re-ranking 阶段则是在初步检索到的候选文档中,使用更复杂的模型对文档进行深度排序,以提高结果的精确度。重排序器通过查询和文档的深度交互来进一步优化相关性排序,确保最相关的文档被排在前面。

追问:embedding模型存在的问题
  • embedding模型只是将文本信息压缩为固定长度的向量,可能会导致语义信息丢失理解多义词困难长文本语义平均化等问题。

  • 因为在用户提出问题之前就已经为文档创建了嵌入,无法理解用户问题的上下文信息。

  • embedding模型计算整个查询和文档之间的相似度,难以捕捉捕捉词级、句级或精确语义关系

追问:embedding与rerank的模型架构的区别?

embedding模型通常使用bi-encoder的架构 ,负责快速将查询和文档转化为向量表示并进行相似度检索。查询和文档是独立编码的,可以在检索时使用预先计算好的向量进行快速匹配,这使得它可以高效处理大规模文档库的检索任务,但由于缺乏查询和文档的交互,精度可能较低。 re-ranking模型通常使用cross-encoder的架构,它将查询和文档拼接在一起并共同输入同一个模型,查询和候选文档 拼接(例如通过 "[QUERY] [SEP] [DOCUMENT]" 的格式)一起输入到同一个模型中,模型通过 自注意力机制(self-attention) 计算查询和文档之间的交互关系,输出一个联合表示,通过计算这个联合表示的相关性分数,对候选文档进行排序。由于查询和文档之间有了深度的交互,模型能够更好地捕捉两者之间的细节关系,因此精度通常比bi-encoder更高,适合于重排序阶段以精细化检索结果。但又由于每次都需要重新计算查询和文档的交互,它的计算效率相对较低,特别是在面对大量文档时。 总结:在大规模文档检索时,bi-encoder 更为高效,而在需要更高精度的排序时,cross-encoder 具有优势。

追问:了解哪些rerank模型
  • cohere-reranker-v3.5:Cohere Reranker v3.5 是由人工智能公司 Cohere 推出的一款先进的重排序模型,旨在提高搜索和检索增强生成(RAG)系统中呈现信息的相关性。拥有多语言能力、长上下文理解、更强的推理能力,这是一个闭源模型,暂不了解更多的技术细节。

  • BGE-M3:由北京智源研究院(BAAI)开发,基于交叉编码器(Cross-Encoder)架构,使用预训练的Transformer模型( XLM-RoBERTa)对用户查询和文档进行联合编码,直接输出二者的相关性分数。该模型支持多语言、多种检索方式。主要技术特点有:

    • 混合检索:统一了密集检索、词汇(稀疏)检索和多向量检索。

    • 自蒸馏:集成不同检索功能的教师信号,显著提升模型鲁棒性

    • 高效批处理:保障训练时batch-size足够大,充分学习文本之间的差异。

  • mGTE:阿里巴巴通义实验室推出的GTE-Multilingual系列模型,具备高性能、长文档支持、多语言处理及弹性向量表示等特性,显著提升了RAG系统的检索与排序效果。mGTE构建了两阶段RAG的训练流程:

    • 首先利用RoPE和unpadding方法训练的编码器,该编码器经过两阶段MLM预训练得到

    • 基于编码器训练用于检索的混合文本表示模型(TRM)用作第一阶段粗排,和rerank模型用作第二阶段精排。

Rerank的作用

  • 提升检索结果相关性:RAG粗排返回的文档质量和相关性可能较差,rerank采用更精细的语义匹配模型,过滤掉与用户问题相关性较低的文档,以及噪声和不相关的信息。

  • 复杂语义理解:rerank能帮助大模型更好地理解和利用检索到的信息,强化相关文档的影响,从而提升生成结果的相关性和准确性。

  • 降低生成模型负担:RAG检索到的文档数量较多,通过Rerank能较少输入文档数量,缩短上下文长度。

为什么Rerank精度更高?

  • reranker不进行预计算,而是将用户查询和一个文档一起输入到transformer中,能更好的捕捉两者之间语义和上下文信息。

  • embedding模型将用户查询和文档压缩到低维向量中,可能丢失细粒度语义。

总结下ReRank模型的一些技术特点

  • 使用Cross-Encoder,将用户查询和文档拼接起来,交给Transformer编码器,能更好的建模两者之间的语义关系。

  • 一般都采用多阶段训练的方式,逐步扩充上下文长度。

  • 损失函数大多采用InfoNCE损失,并在对比学习中加入难负样本,增强模型的鲁棒性。

  • 为了加速训练和节省显存,可能采用deepspeed、混合精度训练、激活检查点、动态批次划分等技术。

  • 在性能上,使用了Rerank模型后的精度往往更高

怎么评价RAG

准确率/召回率评评估

  • MRR(Mean Reciprocal Rank,平均倒数排名):关注第一个相关结果出现的位置,反映用户是否能很快找到答案 。MRR是所有查询 Reciprocal Rank 的平均值,其中每个查询的 Reciprocal Rank = 1/(相关结果的排名)。如果相关结果总是排在第一,MRR=1;如果相关结果平均排在第三位,MRR≈0.33。MRR适合评估问答场景下第一个正确答案的易得性。

  • NDCG(Normalized Discounted Cumulative Gain,归一化折损累计增益):考察整个排名列表的质量,包括多个相关结果的贡献 。它考虑结果的相关性等级和排名次序,通过折损因子(如1/log2(rank+1))给排名靠后的相关结果降低权重。NDCG进行归一化以便不同查询间可比,值在0到1之间,1表示理想排序。NDCG@K通常用于评估Top K结果的综合相关性排序。

  • Precision@K(P@K,前K精度):衡量在返回的前K个结果中,有多少比例是相关的。例如Precision@5 = 前5个结果中相关结果数量/5。它直接反映用户看前K条结果能找到多少正确答案,不考虑顺序(非rank-aware指标)。常和Recall@K(在所有相关文档中前K找到多少)一起使用。

  • Recall@K(召回率):相关文档中有多大比例在前K结果里。由于问答系统往往每问只需一两个相关片段即可回答,有时Precision和MRR更受关注,但在多文档综合场景下Recall也重要。

可信度评估

衡量生成的答案在多大程度上有文档支持,以及答案内容和检索到的文档是否一致、可靠。具体包括:

  • 答案与支持文档匹配度:验证生成答案中的关键信息是否能在检索文档中找到。可以计算答案和支持文档之间的相似度或重合率,例如关键词重叠度。

  • 文档覆盖率:检查检索到的文档是否覆盖了回答所需的所有要点。如果答案涉及多个要点,评估这些要点是否均能在提供的文档集合中找到依据。

响应速度评估

评估RAG系统处理查询的速度,包括:

  • 平均响应时间:系统处理单个查询的平均用时。

  • P95/P99 延迟:95%和99%的请求在多少时间内完成(尾部延迟),用于评估最慢响应的情况。

  • 整体响应分布:可以绘制响应时间分布图(如直方图)来了解大部分查询的延迟范围。

可扩展性评估

测试RAG系统在不同数据规模和负载下的性能表现,包括:

  • 数据规模扩展:增大知识库或文档集规模,观察检索和生成性能的变化(如响应时间是否随数据量线性增长,检索准确率是否保持稳定)。

  • 吞吐量:衡量系统每秒可处理的查询数(QPS),以及在高并发情况下的性能表现。

用户体验评估

系统给用户带来的主观感受和易用性,包括:

  • 人工满意度评价:通过人工评估或用户反馈来打分,衡量用户对答案的满意度。例如收集用户评分(1-5分)或对答案是否解决问题的二元反馈,以计算平均满意度分或满意率。

  • 答案可读性:评价生成答案表述的清晰易懂程度。可以使用可读性评分(如基于句子长度和词汇复杂度的指标)来定量分析答案文本的可读性,确保答案语言简洁明了,便于用户理解。

http://www.xdnf.cn/news/1113751.html

相关文章:

  • 【设计模式】职责链模式(责任链模式) 行为型模式,纯与不纯的职责链模式
  • LeetCode|Day9|976. 三角形的最大周长|Python刷题笔记
  • [论文阅读] 软件工程 | 首个德语软件工程情感分析黄金标准数据集:构建与价值解析
  • 开发语言的优劣势对比及主要应用领域分析
  • 【PTA数据结构 | C语言版】简单计算器
  • 深入解析Hadoop RPC:技术细节与推广应用
  • Namespace查看容器状态
  • 基于 SpringBoot 的 REST API 与 RPC 调用的统一封装
  • Maven项目没有Maven工具,IDEA没有识别到该项目是Maven项目怎么办?
  • monorepo 发布库 --- 发布
  • 在 Microsoft Edge 中,你可以使用 IE 兼容模式(Internet Explorer Mode)来运行 IE 内核 的网站。
  • DH(Denavit–Hartenberg)矩阵
  • 范畴论重构三生原理的具体案例?
  • AI(学习笔记第五课) 使用langchain进行AI开发 load documents(web)
  • python基础知识pip配置pip.conf文件
  • 开发语言中关于面向对象和面向过程的笔记
  • python 虚拟环境 Anaconda Miniconda
  • AI 编程工具 Claude Code 实战
  • MSVCP*.dll、vcruntime*.dll缺失或损坏,以及.NET Framework相关问题,解决办法
  • .NET + WPF框架开发聊天、网盘、信息发布、视频播放功能
  • 以太坊应用开发基础:从理论到实战的完整指南
  • [Subtitle Edit] 字幕格式处理 | .Net依赖管理(NuGet)
  • 【机器学习】反向传播如何求梯度(公式推导)
  • 前端面试十二之vue3基础
  • Vue Router 完全指南:从入门到实战,高效管理前端路由
  • 一文读懂现代卷积神经网络—使用块的网络(VGG)
  • 一扇门铃,万向感应——用 eventfd 实现零延迟通信
  • 【Qt开发】Qt的背景介绍(一)
  • 一文打通MySQL任督二脉(事务、索引、锁、SQL优化、分库分表)
  • Linux驱动开发2:字符设备驱动