为什么向量检索后还需要Reranking?
•AI Search
在搭 RAG 系统的时候,我一直以为只要把文本转成向量(Embedding),然后算个余弦相似度就万事大吉了。直到今天看了关于混合检索(Hybrid Search)和重排(Reranking)的文章,才发现自己太天真了。
纯向量检索其实有很多盲区。比如它对具体的专有名词、缩写或者精确的数字不敏感。这时候就需要传统的 BM25(基于关键词匹配)来兜底。
但把两路召回的结果合并后,怎么决定谁排在前面呢?这就轮到 Cross-encoder(交叉编码器)出场了。它会把用户的 Query 和每一个 Document 拼在一起输入模型,仔细打分。
我一开始不理解,为什么不直接用 Cross-encoder 去搜所有的文档?博客里的一句话点醒了我:"Cross-encoders are highly accurate but computationally expensive. You can't run them on millions of documents."
所以现在的标准套路是:先用双流模型(Bi-encoder)或者 BM25 快速粗筛出 top-100(Retrieve fast),然后再用 Cross-encoder 精细打分选出 top-5(Score slow)。这种工程上的 trade-off 真的很有意思。