Expose shared embedder for indexing jobs

This commit is contained in:
Sleeps
2026-10-06 17:53:32 +01:00
parent baaa87780d
commit dcd298f5ad
+8 -2
View File
@@ -38,11 +38,17 @@ class SearchService:
def model_loaded(self) -> bool:
return self._embedder is not None
def _get_embedder(self) -> SiglipEmbedder:
def get_embedder(self) -> SiglipEmbedder:
"""Get the shared embedding model, loading it lazily."""
if self._embedder is None:
self._embedder = SiglipEmbedder(self.model_id, self.device)
return self._embedder
@property
def model_lock(self) -> threading.Lock:
"""Lock guarding exclusive access to the shared GPU embedding model."""
return self._model_lock
def health(self) -> dict[str, Any]:
init_db(self.db_path)
with connect(self.db_path) as con:
@@ -174,7 +180,7 @@ class SearchService:
# SigLIP / PyTorch model execution is kept behind one lock so concurrent
# API requests do not fight over a single GPU model instance.
with self._model_lock:
embedder = self._get_embedder()
embedder = self.get_embedder()
text_vector = embedder.embed_text(query)
result = self.meili.search_vector(