一、Rerank简介
Rerank(重排名)是基于交叉熵损失优化的模型,以问题和文档为输入,直接输出相似度,用于对检索结果进行重新排序,以提高检索的准确性和相关性。

二、为什么需要重排序
- 大模型token长度限制:检索得到的chunks未经筛选,且LLM输入token长度受限,需用更准确方式对chunks与query的关系进行rerank,以提高MMR和命中率。
- cross encoder模型耗资源:rerank通常使用cross encoder模型对query和召回的chunk逐个排序,但该模型资源消耗大,推理时间长,通常放在最后环节,且输入长度一般不超过512。
- 小范围内精确计算:搜索存在随机性,第一次召回结果可能不理想。增加top_k大小,再用精确算法rerank,计算打分排序,时间可接受。
- 混合搜索时:混合检索融合多种技术优势,提升召回效果,但需整合和标准化处理结果。引入重排序模型可优化和精炼检索结果,提升top_3的Hit Rate指标。
三、向量数据库检索算法
- 近似近邻算法:Elasticsearch的相似度检索算法中,KNN算法在海量检索时会使用近似近邻算法,如基于HNSW的算法,能在几毫秒内从数百万数据点中找到最近邻,但会带来随机性问题。
- HNSW算法原理:是一种分层的最小世界导航算法,通过创建数据的图表示,从最高层向下依次查询,牺牲绝对最近邻的保证以提高检索效率。
- 其他近似近邻算法:
- 基于图的算法:如HNSW。
- 基于哈希的算法:如位置敏感哈希(LSH)、多索引哈希(MIH)。
- 基于树的算法:如kd树、球树和随机投影树(RP树),在低维空间(≤10)中有效。
四、Rerank模型原理
-
早期交互模型与后期交互模型:早期交互模型如Cross-encoders,后期交互模型如ColBERT,后者引入延迟交互机制,效率提升。

-
Sentence Transformers模型:支持Bi-encoders和Cross-encoders两种类型,Bi-encoders更快更可扩展,适合搜索;Cross-encoders更准确,适合分类和高精度排序。
-
模型选择依据:
-
Rerank模型与embedding模型的区别:embedding模型仅考虑当前文本获取向量,rerank模型将query与文档信息一起比较,学习映射输出0-1的相似性判断,功能更明确,效果更好。

五、使用LLM作为ranker
LLM自主改进文档重排序的策略分为三类:
