检索器汇总

检索器名称 📛核心概念 💡典型应用场景 🎯特点 ⚡基础代码示例 🛠️
VectorStore Retriever-2-6基于向量相似度进行语义搜索语义搜索、基于文档的问答系统-2• 理解语义,处理同义词和复杂查询
• 依赖嵌入模型质量-2
• 支持多种向量库(Chroma, FAISS等)-2
retriever = vectorstore.as_retriever(search_type="similarity", search_kwargs={"k": 4}) -2
BM25 Retriever-1-2基于BM25算法的关键词匹配搜索传统搜索、关键词驱动的问答-2• 计算成本低,无需嵌入模型-2
• 依赖文本字面匹配,不支持语义搜索-2
• 快速、轻量,适合离线或资源受限场景-4
retriever = BM25Retriever.from_documents(docs) retriever.k = 4 -1-2
Ensemble Retriever-1-2-10融合多种检索器结果,取长补短需要综合关键词和语义的复杂搜索、高覆盖率检索-2-4• 结合关键词搜索和语义搜索优点-2-10
• 支持加权融合不同检索器结果-1-2
• 通常能获得更高的召回率和精准度-2
ensemble_retriever = EnsembleRetriever(retrievers=[bm25_retriever, vector_retriever], weights=[0.3, 0.7]) -1-2
MultiQuery Retriever-1-2使用LLM为原始查询生成多个相关问题进行检索查询表达不明确、需要提高检索全面性的场景-2• 通过多查询变体提高召回率-2
• 适合处理复杂查询-2
• 会增加一定的计算开销
retriever = MultiQueryRetriever.from_llm(retriever=base_retriever, llm=llm) -1-2
Contextual Compression Retriever-1-2-4对检索到的文档进行压缩和精炼,提取最相关内容文档内容冗长、需要提取关键信息、提高问答质量-2-4• 有效减少噪声,输出更聚焦的上下文-4
• 大幅提升生成模型回答质量-4
• 增加计算开销,但提升精准度-2
compressor = LLMChainExtractor.from_llm(llm) compression_retriever = ContextualCompressionRetriever(base_compressor=compressor, base_retriever=base_retriever) -1-2
MultiVector Retriever-3-4为单个文档生成多个向量表示(如摘要、小 chunk、假设问题)长文档检索、技术文档或论文检索、多模态知识库-3-4• 提高检索精度,支持细粒度匹配-3
• 允许通过摘要或假设性问题来检索完整文档-3
• 索引体积相对较大
retriever = MultiVectorRetriever( vectorstore=vectorstore, byte_store=store, id_key=id_key ) 

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐