anpigon commited on
Commit
60d7b42
·
1 Parent(s): 0961a03

refactor: Add contextual compression retriever to ensemble retriever

Browse files
Files changed (1) hide show
  1. 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
- return EnsembleRetriever(
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