refactor: Add contextual compression retriever to ensemble retriever
Browse files- libs/retrievers.py +10 -1
libs/retrievers.py
CHANGED
@@ -1,5 +1,7 @@
|
|
1 |
# retrievers.py
|
2 |
import pickle
|
|
|
|
|
3 |
from langchain_community.vectorstores import FAISS
|
4 |
from langchain.retrievers import EnsembleRetriever
|
5 |
|
@@ -26,8 +28,15 @@ def load_retrievers(embeddings):
|
|
26 |
|
27 |
bm25_retriever = load_bm25_retriever().with_config(run_name="bm25")
|
28 |
|
29 |
-
|
30 |
retrievers=[bm25_retriever, faiss_retriever],
|
31 |
weights=[0.7, 0.3],
|
32 |
search_type="mmr",
|
33 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
# retrievers.py
|
2 |
import pickle
|
3 |
+
from langchain_cohere import CohereRerank
|
4 |
+
from langchain.retrievers.contextual_compression import ContextualCompressionRetriever
|
5 |
from langchain_community.vectorstores import FAISS
|
6 |
from langchain.retrievers import EnsembleRetriever
|
7 |
|
|
|
28 |
|
29 |
bm25_retriever = load_bm25_retriever().with_config(run_name="bm25")
|
30 |
|
31 |
+
ensemble_retriever = EnsembleRetriever(
|
32 |
retrievers=[bm25_retriever, faiss_retriever],
|
33 |
weights=[0.7, 0.3],
|
34 |
search_type="mmr",
|
35 |
)
|
36 |
+
|
37 |
+
compressor = CohereRerank(model="rerank-multilingual-v3.0", top_n=5)
|
38 |
+
compression_retriever = ContextualCompressionRetriever(
|
39 |
+
base_compressor=compressor,
|
40 |
+
base_retriever=ensemble_retriever,
|
41 |
+
)
|
42 |
+
return compression_retriever
|