展示如何使用 LangChain 的 EnsembleRetriever
组合 BM25 和 FAISS 两种检索方法,从而在检索过程中结合关键词匹配和语义相似性搜索的优势。通过这种组合,我们能够在查询时获得更全面的结果。
1. 导入必要的库和模块
首先,我们需要导入所需的库和模块。本文使用的工具包括 LangChain 提供的 EnsembleRetriever
、BM25Retriever
、FAISS
、以及 HuggingFace 的嵌入模型。
from langchain.retrievers import EnsembleRetriever
from langchain_community.retrievers import BM25Retriever
from langchain_community.vectorstores import FAISS
from langchain_community.embeddings import HuggingFaceEmbeddings
from config import paraphrase_multilingual_MiniLM_L12_v2
2. 准备文档数据
准备了两组文档数据,这些文档分别用于 BM25 和 FAISS 检索器。在实际使用中,这些文档可以是任何你想要检索的文本数据。
# 定义第一组文档,这些文档将用于 BM25 检索器
doc_list_1 = [
"这是一个测试句子",
"温格高赢得了2023环法冠军",
"波士顿马拉松是历史悠久的一项比赛",
"何杰即将出战巴黎奥运会的马拉松项目",
"珍宝将不再赞助温格高所在的车队",
]
# 定义第二组文档,这些文档将用于 FAISS 检索器
doc_list_2