检索进阶:Retriever、Postprocessor 与重排
组合 Retriever 接口、Node Postprocessor 与 Reranker,在 LlamaIndex 中复刻完整的检索优化流水线。
检索是可组合的流水线
LlamaIndex 把检索拆成两个可插拔环节:Retriever(取回候选) + Node Postprocessor(后处理),可以像搭积木一样组合。
常用 Postprocessor
- SimilarityPostprocessor:丢弃相似度低于阈值的块 —— 挡垃圾结果;
- KeywordNodePostprocessor:必须包含/排除关键词;
- SentenceTransformerRerank:交叉编码器重排 —— 与本站《重排》课完全同源;
- MetadataReplacementPostProcessor:配合"小块检索、替换成父块内容"(父子块策略)。
from llama_index.core.postprocessor import (
SimilarityPostprocessor, SentenceTransformerRerank)
query_engine = index.as_query_engine(
similarity_top_k=10,
node_postprocessors=[
SimilarityPostprocessor(similarity_cutoff=0.3),
SentenceTransformerRerank(model="cross-encoder/ms-marco-MiniLM-L-6-v2",
top_n=3),
])
进阶检索器
- Auto-Retrieval:让 LLM 从用户问题中推断元数据过滤条件("最近三个月的财报" → 自动加 date 过滤);
- QueryFusionRetriever:多查询扩展 + 多路融合 —— 对应本站《查询改写与 HyDE》与《多路召回》;
- Recursive Retriever:检索命中块后顺着其引用/大纲继续检索相关块。
你会发现:本站 RAG 进阶模块讲的所有优化手段,在 LlamaIndex 里都有官方组件——换框架不换方法论。
📝 课后练习
quiz-1 LlamaIndex 中丢弃相似度低于阈值的检索块,应使用哪个组件?