初始检索返回的候选结果基于嵌入相似度或关键词匹配排序,但这种排序并非总是最优的。重排序(Reranking)使用更精确的模型对检索结果进行二次评分和重新排序,将最相关的内容提升到前列。
重排序通常使用交叉编码器(Cross-Encoder)模型实现。与双编码器(Bi-Encoder)不同,交叉编码器将查询和文档作为一个整体输入模型,能够捕捉更细粒度的交互特征,从而提供更准确的相似度评分。
LlamaIndex 通过 Node Postprocessor 模块支持重排序。开发者可以在检索后添加重排序处理器,配置重排序模型(如 Cohere Rerank、Sentence Transformers Reranker 等)和保留的 Top-K 数量。重排序作为检索管道的标准组件,可与混合检索、元数据过滤等其他后处理步骤组合使用。
重排序能够有效解决"中间丢失"(Lost in the Middle)问题——研究表明,LLM 对上下文开头和结尾的内容关注度更高,而对中间部分的信息处理可靠性较低。通过重排序将最相关的内容置于前列,可以提升 LLM 对关键信息的利用效率。