主题
概念
重排器(reranker)接收初始检索器(通常是稠密向量检索、关键词检索,或两者的混合)返回的 top-k 个节点,并依据一种更强、但通常也更慢的「查询-文档相关性」度量重新排序。重排是 RAG 流水线里杠杆最大的旋钮之一:初始检索器针对大语料的高召回而调优,而重排器让你在结果进入 LLM 之前把准确度找回来。
在 LlamaIndex 里,重排器是以节点后处理器的形式实现的,运行在检索与响应合成之间。
使用方式
from llama_index.core.postprocessor import SentenceTransformerRerank
reranker = SentenceTransformerRerank(
model="cross-encoder/ms-marco-MiniLM-L6-v2", top_n=3
)
query_engine = index.as_query_engine(
similarity_top_k=10,
node_postprocessors=[reranker],
)
response = query_engine.query("What did the author do in college?")检索器先取回更宽的一组结果(similarity_top_k=10),重排器再筛出最好的 top_n=3,然后才交给 LLM。
选择重排器
- 无需 API key、本地运行、质量强:推荐把
SentenceTransformerRerank作为默认选择,配一个现代 cross-encoder,例如Qwen/Qwen3-Reranker-0.6B(更强、多语言)或cross-encoder/ms-marco-MiniLM-L6-v2(更小、更快)。更多模型见 Sentence Transformers 的 cross-encoder 清单与 MTEB 榜单。 - 托管 API、配置最少:
CohereRerank、JinaRerank、VoyageAIRerank、MixedbreadAIRerank。不想自己跑推理时,这几个都是好选择。 - 质量最高、不在意延迟:
LLMRerank、RankGPTRerank、RankLLMRerank。它们直接用一个 LLM 来判断相关性。 - 多模态后期交互(文档为图片):
ColPaliRerank。 - 文本后期交互:
ColbertRerank。当查询与文档中含有较窄、较专门的技术术语时特别有用。
包含所有集成与所有模型的完整参考,见节点后处理器指南。重排器是节点后处理器中的一个类别。
延伸阅读
- 节点后处理器指南:每个受支持的重排器都带代码示例。
- Sentence Transformers cross-encoder 文档:开源模型在速度与准确度上的取舍。
- 进阶检索:重排如何放进更大的检索策略里。