langchain中的检索器

检索器汇总

检索器名称 📛 核心概念 💡 典型应用场景 🎯 特点 ⚡ 基础代码示例 🛠️
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 )
相关推荐
承渊政道1 小时前
LangChainAI应用开发框架【LangChain与LangGraph介绍】
langchain·大模型·langgraph·ai应用开发
Flynn Liang1 小时前
AiServices 源码级拆解:一个接口如何变成 RAG Agent
java·langchain·源码分析·rag·langchain4j·aiservices
Flynn Liang1 小时前
LangChain4j 1.23 架构全景:Java 大模型应用的 6 层抽象
java·langchain·大模型·rag·ai agent·langchain4j
GISer_Jing3 小时前
Agent相关岗位时收集的各类技术面试题
后端·ai·langchain
Flynn Liang3 小时前
LangChain4j 生产级工程骨架:12 个模块 + Docker 一键启动
java·spring boot·langchain·rag·langchain4j
叼烟扛炮3 小时前
[LangChain] 学习笔记(08):工具调用底层闭环与第三方搜索(Tavily)实战
人工智能·笔记·学习·langchain
GISer_Jing4 小时前
AI Agent秋招面试万字通关指南|架构、ReAct、上下文工程、RAG、评测、生产运维全解
后端·ai·langchain
西安小哥6 小时前
大厂把大模型做为一层“网关”,比换个框架更值得琢磨
架构·langchain
叼烟扛炮13 小时前
[LangChain] 学习笔记(07):大模型长出手脚——工具(Tools)定义与调用闭环
笔记·学习·langchain
叼烟扛炮17 小时前
[LangChain] 学习笔记(06):突破大模型限制——结构化输出(Structured Output)
windows·笔记·学习·langchain