"""Embedding provider - HTTP service.""" from __future__ import annotations from config.services_config import ( get_embedding_config, get_embedding_image_base_url, get_embedding_text_base_url, ) def create_embedding_provider() -> "EmbeddingProvider": """Create embedding provider from services config.""" cfg = get_embedding_config() provider = (cfg.provider or "http").strip().lower() if provider != "http": raise ValueError(f"Unsupported embedding provider: {provider}") return EmbeddingProvider() class EmbeddingProvider: """ Provides text and image encoders. Both use HTTP embedding service configured via services_config. """ def __init__(self) -> None: self._text_base_url = get_embedding_text_base_url() self._image_base_url = get_embedding_image_base_url() from embeddings.text_encoder import TextEmbeddingEncoder from embeddings.image_encoder import CLIPImageEncoder # Initialize once; avoid per-access instantiation. self._text_encoder = TextEmbeddingEncoder(service_url=self._text_base_url) self._image_encoder = CLIPImageEncoder(service_url=self._image_base_url) @property def text_encoder(self): """Pre-initialized text encoder (TextEmbeddingEncoder).""" return self._text_encoder @property def image_encoder(self): """Pre-initialized image encoder (CLIPImageEncoder).""" return self._image_encoder