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分)或对答案是否解决问题的二元反馈,以计算平均满意度分或满意率。

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

### Rerank模型介绍与实现 Rerank模型是一种用于重新排序候选结果的机器学习模型,通常在信息检索、推荐系统和自然语言处理中广泛应用。其核心目标是根据用户查询或上下文,对初始候选列表进行重新排序,从而提升最终结果的相关性和质量[^1]。 #### Rerank模型的基本原理 Rerank模型通常作为两阶段流程中的第二阶段出现。第一阶段通过快速匹配算法(如BM25、Embedding检索等)生成一个初步的候选列表;第二阶段则利用更复杂的模型(如深度学习模型)对这些候选结果进行重新排序。这种设计能够平衡效率与效果,在大规模数据场景下尤其有效[^2]。 #### Rerank模型的常见类型 1. **基于规则的Rerank**:使用手工设计的规则或特征工程方法对候选列表进行重新排序。 2. **基于机器学习Rerank**:利用监督学习方法训练模型,例如LambdaMART、RankNet、ListNet等经典排序模型。 3. **基于深度学习的Rerank**:近年来,深度学习模型(如Transformer架构)被广泛应用于Rerank任务,能够更好地捕捉复杂特征和上下文信息。 #### Rerank模型的实现教程 以下是一个简单的基于深度学习的Rerank模型实现示例,使用PyTorch框架完成: ```python import torch import torch.nn as nn # 定义Rerank模型 class RerankModel(nn.Module): def __init__(self, input_dim, hidden_dim, output_dim): super(RerankModel, self).__init__() self.fc1 = nn.Linear(input_dim, hidden_dim) self.relu = nn.ReLU() self.fc2 = nn.Linear(hidden_dim, output_dim) def forward(self, x): out = self.fc1(x) out = self.relu(out) out = self.fc2(out) return out # 示例数据 input_dim = 100 # 输入特征维度 hidden_dim = 64 # 隐藏层维度 output_dim = 1 # 输出维度(相关性分数) model = RerankModel(input_dim, hidden_dim, output_dim) # 模拟输入数据 batch_size = 32 num_candidates = 10 features = torch.randn(batch_size, num_candidates, input_dim) # 前向传播 scores = model(features.view(-1, input_dim)).view(batch_size, num_candidates) print("候选列表得分:", scores) ``` 上述代码定义了一个简单的神经网络模型,并展示了如何为每个候选结果计算相关性得分[^2]。 #### Rerank模型的应用场景 - **搜索引擎**:对搜索结果进行重新排序,提升用户体验。 - **推荐系统**:优化推荐列表的顺序,提高点击率和转化率。 - **问答系统**:从多个候选答案中选择最相关的答案。 #### Rerank模型的学习资源 1. **论文阅读**:可以参考经典的排序学习论文,如《Learning to Rank for Information Retrieval》。 2. **开源项目**:LangChain框架提供了丰富的Rerank功能实现,可作为学习和实践的起点[^2]。 3. **在线课程**:Coursera、Udemy等平台上有许多关于排序学习和深度学习的课程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值