讲解检索系统中的重排序环节:为什么需要 rerank、交叉编码模型的原理与输入长度限制、如何用大语言模型充当 ranker,以及向量召回与精排配合提升命中率的工程实践。
一、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算法原理:是一种分层的最小世界导航算法,通过创建数据的图表示,从最高层向下依次查询,牺牲绝对最近邻的保证以提高检索效率。
其他近似近邻算法:
四、Rerank模型原理
早期交互模型与后期交互模型:早期交互模型如Cross-encoders,后期交互模型如ColBERT,后者引入延迟交互机制,效率提升。
Sentence Transformers模型:支持Bi-encoders和Cross-encoders两种类型,Bi-encoders更快更可扩展,适合搜索;Cross-encoders更准确,适合分类和高精度排序。
模型选择依据:
Rerank模型与embedding模型的区别:embedding模型仅考虑当前文本获取向量,rerank模型将query与文档信息一起比较,学习映射输出0-1的相似性判断,功能更明确,效果更好。
五、使用LLM作为ranker
LLM自主改进文档重排序的策略分为三类:

- 逐点方法:测量查询与单个文档之间的相关性,包括相关性生成和查询生成,适用于零样本文档重新排序。
- 列表方法:通过将查询和文档列表插入提示,指示LLM输出重新排序的文档标识符来直接对文档列表排序。因LM输入长度有限,采用滑动窗口策略对候选文档子集进行重新排序。
- 成对方法:LLM接收包含查询和文档对的提示,生成更相关文档的标识符,使用AllPairs等聚合方法对所有候选文档进行重新排序,通常用高效排序算法加快排名过程。

