mirror of
https://github.com/MrSleeps/jellyfin-scene-search.git
synced 2026-11-14 22:11:27 +00:00
Expose shared embedder for indexing jobs
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user