趋近智
LangChain 提供专门的抽象层,以便更好地支持混合搜索。举例来说:
EnsembleRetriever:langchain.retrievers 中的这个类接受检索器列表 (例如 BM25 检索器和向量 (vector)存储检索器),并整合它们的检索结果。它通常使用倒数排名融合 (RRF) 算法,根据文档在各个结果列表中的位置进行重新排序。你可以在 RRF 计算中分配权重 (weight)来优先处理特定检索器。# 使用 EnsembleRetriever 的示例 (假设检索器已初始化)
from langchain.retrievers import EnsembleRetriever
# 假设 bm25_retriever 和 faiss_retriever 已配置
# 示例:pip install rank_bm25, faiss-cpu
# 初始化稀疏检索器 (例如 BM25)
# ... 设置 bm25_retriever ...
# 初始化密集检索器 (例如 FAISS 向量存储)
# ... 设置 faiss_retriever ...
# 使用 EnsembleRetriever 结合它们 (使用加权倒数排名融合)
ensemble_retriever = EnsembleRetriever(
retrievers=[bm25_retriever, faiss_retriever],
weights=[0.4, 0.6] # 可选:应用于 RRF 计算的权重
)
# 使用混合检索器
query = "How to fix connection timeout?"
hybrid_results = ensemble_retriever.invoke(query)
print(hybrid_results)
简洁的语法。内置调试功能。从第一天起就可投入生产。
为 ApX 背后的 AI 系统而构建
这部分内容有帮助吗?
EnsembleRetriever 的官方文档,详细说明了其用法以及如何结合来自多个检索器(包括稀疏和密集方法)的结果。© 2026 ApX Machine Learning用心打造