网易首页 > 网易号 > 正文 申请入驻

揭开RAG检索模型神秘面纱:谁是最佳选择?

0
分享至

构建RAG系统时,Bi-Encoder、Cross-Encoder、SPLADE、ColBERT这几个术语几乎都会在一起出现,表面上看它们都在做文本相似度计算但为什么需要这么多不同的模型?是一个不够用吗?

本文将拆解每种模型的工作机制、适用边界,以及如何在实际系统中组合使用。而核心问题是:高召回和高精准之间的平衡该怎么把握。



精准率与召回率

先厘清两个基础概念。



TP是真阳性,FP是假阳性,FN是假阴性。

高精准率意味着模型说"是"的时候基本不会错,假阳性极少但是是可能漏掉一些真正的正样本。这种策略偏保守,只有高置信度时才做出阳性判断。典型场景是垃圾邮件检测:被标记为垃圾邮件的必须真的是垃圾邮件。

高召回率则相反,目标是尽可能捕获所有正样本,假阴性降到最低但会混入不少假阳性。这个策略更激进一些,宁可误报也不漏报。

RAG检索实际上需要两者配合:第一阶段追求高召回,把可能相关的文档块尽量“捞”出来;第二阶段做语义重排序和过滤噪声来提升精准率。所以需要不同模型分工协作速度和准确度也是关键考量维度。

检索系统的核心矛盾在于规模和精度难以兼得:既要在百万级文档中快速搜索,又要准确判断哪些文档真正相关。单一模型无法同时优化这两个目标所以就出现了多阶段架构。

Bi-Encoder:大规模语义检索的基础

Bi-Encoder的思路很直接:用同一个编码器分别处理查询和文档,各自生成一个向量然后计算余弦相似度。

句子A → 编码器 → 向量A
句子B → 编码器 → 向量B
相似度(向量A, 向量B)

虽然叫"双编码器"实际上只有一个编码器,只是用共享权重分别编码两段文本。

Bi-Encoder的核心优势在于文档向量可以离线预计算。每个文档变成固定长度的向量后,存入FAISS、Milvus之类的向量数据库,查询时只需编码一次query然后做近似最近邻(ANN)搜索。

from sentence_transformers import SentenceTransformer
import faiss
import numpy as np
model = SentenceTransformer("all-MiniLM-L6-v2")
doc_embeddings = model.encode(documents, normalize_embeddings=True)
index = faiss.IndexFlatIP(doc_embeddings.shape[1])
index.add(doc_embeddings)
query_vec = model.encode(["Only project owner can publish event"], normalize_embeddings=True)
scores, indices = index.search(query_vec, k=10)

所以它扩展性强、检索快、嵌入可复用。但缺点也很明显,查询和文档之间没有token级别的交互,相关性判断只能是近似的,遇到逻辑推理、否定表达、复杂约束时表现会打折扣。

Cross-Encoder:精度优先

检索器面对百万级文档需要的是速度,但快的代价往往是返回一些不太相关的结果。Cross-Encoder是用来解决这个问题的重排序器,把查询和候选文档拼接起来,一起送进Transformer,输出0到1之间的相关性分数。



Cross-Encoder不产生句子嵌入,也不能单独处理一段文本,所以它必须同时看到查询和文档才能工作:

[CLS] Query [SEP] Document [SEP] → Score

代码如下:

from sentence_transformers import CrossEncoder
model = CrossEncoder("cross-encoder/ms-marco-MiniLM-L-6-v2")
pairs = [(query, documents[i]) for i in candidate_indices]
scores = model.predict(pairs)

Cross-Encoder的准确度是最高的,能捕捉真正的语义相关性。问题在于它没法预计算,每次查询都要对所有候选做前向传递,计算成本高所以只适合处理小规模候选集。



Cross-Encoder适合处理预定义的句子对评分任务,比如手头有100对句子需要打分。而Bi-Encoder适合需要向量表示来做高效比较的场景。

比如说,用Cross-Encoder对10000个句子做聚类,需要计算约5000万对组合的相似度,耗时65小时左右。如果换成Bi-Encoder,先算嵌入只要5秒,然后就是聚类就是后续向量运算的事了。

所以Cross-Encoder精度更高而Bi-Encoder扩展性更好。实际系统中两者组合使用效果最佳:先用Bi-Encoder快速召回top-100,再用Cross-Encoder对这100个结果精排。

SPLADE:学习型稀疏检索

SPLADE是基于Transformer的稀疏检索模型,输出不是稠密向量,而是词汇表上的稀疏权重分布。可以理解成一个学出来的BM25。

稠密模型在处理ID、错误码、领域专有术语、合规性表述时往往效果不好。SPLADE的优势正是词汇层面的精确匹配能力,同时保留一定的语义理解。

它能学习词项的重要性权重,可解释性比稠密模型好。但是代价是索引体积比传统BM25大,语义表达能力不如纯稠密模型。适用于需要兼顾关键词匹配和语义召回的场景。

ColBERT:延迟交互机制

ColBERT在Bi-Encoder和Cross-Encoder之间找到了一个平衡点。它不是给整个文档生成单一向量而是为每个token生成一个向量查询时用延迟交互计算相似度:

score(query, doc) = Σ max cosine(query_token, doc_token)

这种设计保留了token级别的语义信息,精度比Bi-Encoder高不少,又比Cross-Encoder更容易扩展。细粒度匹配对长文档效果尤其好。

不过token级向量意味着索引体积膨胀,内存占用和延迟都会上升。适合基础设施条件允许、对精度要求高的场景。

多阶段混合架构

实际效果最好的RAG系统通常采用多阶段设计:

Query
├─ 稀疏检索(BM25/SPLADE) → 词汇召回
├─ 稠密检索(Bi-Encoder) → 语义召回
├─ Cross-Encoder重排序 → 精准率
└─ LLM生成

这套架构同时兼顾召回率(不漏相关文档)、精准率(相关文档排前面)和可扩展性。

不同场景的模型选择:



各模型的性能特征对比:



典型的流水线组合是稀疏检索(BM25或SPLADE)加稠密检索(Bi-Encoder)合并候选后用Cross-Encoder精排。

完整流程示意:

Query

├─ 编码查询(1次Transformer前向)

├─ 向量检索10000个嵌入(快速向量运算)

├─ 保留Top-20候选

├─ Cross-Encoder重排Top-20(20次Transformer前向)

└─ 返回3-5个最佳文档块



附:BM25与SPLADE对比



作者:

https://avoid.overfit.cn/post/bb49efa85b9141e1a9ab0e1d57855dc6

Sachchida Nand Singh

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
大儿子17岁,双胞胎二儿子三儿子16岁,才38岁的她美得让人羡慕!

大儿子17岁,双胞胎二儿子三儿子16岁,才38岁的她美得让人羡慕!

上官晚安
2026-01-14 17:16:14
岳家军58将排名,岳飞排第四档,岳云才第二档,第一档都有谁?

岳家军58将排名,岳飞排第四档,岳云才第二档,第一档都有谁?

鹤羽说个事
2026-01-14 15:34:23
名将止步首轮,大满贯资格赛真难打!

名将止步首轮,大满贯资格赛真难打!

网球之家
2026-01-14 12:57:00
广州放开摩托加油,就离解禁不远了?

广州放开摩托加油,就离解禁不远了?

楼市前线
2026-01-14 21:01:16
大误判,袁绍不懂底层人,董卓不懂上层人

大误判,袁绍不懂底层人,董卓不懂上层人

掠影后有感
2026-01-10 13:59:33
犹太财团又要开始卖国了,大规模资产转移后,贝莱德:美国没救了

犹太财团又要开始卖国了,大规模资产转移后,贝莱德:美国没救了

老范谈史
2026-01-13 20:15:38
篡改网友视频称牙膏能修牙填缝,狂卖70万单!高露洁失控了……

篡改网友视频称牙膏能修牙填缝,狂卖70万单!高露洁失控了……

柴狗夫斯基
2026-01-13 10:59:40
DeepSeek梁文锋喊话罗永浩:靠嘴年入过亿,为啥非得做科技?

DeepSeek梁文锋喊话罗永浩:靠嘴年入过亿,为啥非得做科技?

雷科技
2026-01-14 15:31:09
乔丹的控球技术什么水平?

乔丹的控球技术什么水平?

董先森爱篮球
2026-01-15 08:29:45
科尔:理解为什么开拓者首轮选杨瀚森 他有机会成为非常出色球员

科尔:理解为什么开拓者首轮选杨瀚森 他有机会成为非常出色球员

罗说NBA
2026-01-14 12:01:54
我国最“不靠谱”的三位专家,在央视“大放厥词”,却爆火34年

我国最“不靠谱”的三位专家,在央视“大放厥词”,却爆火34年

有范又有料
2026-01-13 09:21:31
恭喜俄罗斯与乌克兰,打了近4年,终于打成了全世界都喜欢的样子

恭喜俄罗斯与乌克兰,打了近4年,终于打成了全世界都喜欢的样子

水泥土的搞笑
2026-01-15 07:23:16
中国首批顶流网红:已淡出圈子,每月仅工作两天,实现财富自由

中国首批顶流网红:已淡出圈子,每月仅工作两天,实现财富自由

陈意小可爱
2026-01-15 06:05:40
中戏院长主动投案!闫学晶儿子学籍疑云反转?背后牵扯不简单?

中戏院长主动投案!闫学晶儿子学籍疑云反转?背后牵扯不简单?

复转这些年
2026-01-14 18:39:16
教师工作琐记:教师群体之间的霸凌示范,我见过很多,你呢?

教师工作琐记:教师群体之间的霸凌示范,我见过很多,你呢?

双旗镇客栈
2026-01-13 21:56:00
中海油原总经理李勇坦白受贿细节:外国代理商开车来,拿个箱子给钱

中海油原总经理李勇坦白受贿细节:外国代理商开车来,拿个箱子给钱

澎湃新闻
2026-01-14 21:06:27
以为是假新闻其实是真新闻,从袁立到王星,件件离谱又惊人

以为是假新闻其实是真新闻,从袁立到王星,件件离谱又惊人

上官晚安
2026-01-06 08:08:35
监管出手降杠杆!哪些板块最受冲击?

监管出手降杠杆!哪些板块最受冲击?

君临财富
2026-01-14 17:45:34
3+2!重击后脑勺!勇士主帅点评杨瀚森

3+2!重击后脑勺!勇士主帅点评杨瀚森

篮球实战宝典
2026-01-14 14:59:04
贺娇龙14号这天:早上9点半传死讯,官方辟谣,晚上11点确认走了

贺娇龙14号这天:早上9点半传死讯,官方辟谣,晚上11点确认走了

棱镜镜
2026-01-15 03:48:56
2026-01-15 08:56:49
deephub incentive-icons
deephub
CV NLP和数据挖掘知识
1890文章数 1443关注度
往期回顾 全部

科技要闻

反垄断大棒,为何砸向了携程

头条要闻

特朗普:同委代总统通电话 美方同她"合作得非常好"

头条要闻

特朗普:同委代总统通电话 美方同她"合作得非常好"

体育要闻

你是个好球员,我们就拿你交易吧

娱乐要闻

网红彭十六偷税被封杀 曾成功转型明星

财经要闻

“疯狂的白银”,还能走多远?

汽车要闻

曝Model Y或降到20万以内!

态度原创

游戏
家居
本地
旅游
公开课

《对魔忍派遣队》将于1月15日开启Android版测试

家居要闻

心之所向 现代建构之美

本地新闻

邵阳公益诉讼检察主题曲:《守望星》

旅游要闻

西安这座古典园林,古树参天、闹中取静,冬天也美得惊心动魄

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版