Arastun commited on
Commit
ceaaf32
·
1 Parent(s): fc8a76d

fix: cached retriever model weights

Browse files
Files changed (1) hide show
  1. retrieval/models/sentence_bert.py +8 -2
retrieval/models/sentence_bert.py CHANGED
@@ -9,14 +9,20 @@ from sentence_transformers import SentenceTransformer
9
 
10
  from ..base import BaseRetriever
11
 
 
 
12
 
13
  class DenseRetriever(BaseRetriever):
14
  """Dense retrieval using sentence transformers."""
15
-
16
  def __init__(self, model_name: str, db_path: str, index_config: Literal["naive", "v1"]):
17
  super().__init__(db_path, index_config)
18
  self.model_name = model_name
19
- self.model = SentenceTransformer(model_name)
 
 
 
 
20
  self.corpus_embeddings = None
21
  self.embeddings_path = self._default_embeddings_path()
22
  self.load_index() if self._embeddings_exist() else self.build_index()
 
9
 
10
  from ..base import BaseRetriever
11
 
12
+ _model_cache: Dict[str, SentenceTransformer] = {}
13
+
14
 
15
  class DenseRetriever(BaseRetriever):
16
  """Dense retrieval using sentence transformers."""
17
+
18
  def __init__(self, model_name: str, db_path: str, index_config: Literal["naive", "v1"]):
19
  super().__init__(db_path, index_config)
20
  self.model_name = model_name
21
+ if model_name not in _model_cache:
22
+ model = SentenceTransformer(model_name)
23
+ model.half() # fp16: halves model memory footprint
24
+ _model_cache[model_name] = model
25
+ self.model = _model_cache[model_name]
26
  self.corpus_embeddings = None
27
  self.embeddings_path = self._default_embeddings_path()
28
  self.load_index() if self._embeddings_exist() else self.build_index()