LlamaIndex 高级

检索进阶: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 中丢弃相似度低于阈值的检索块,应使用哪个组件?