"""Embedding provider - HTTP service.""" from __future__ import annotations from config.services_config import get_embedding_config, get_embedding_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._base_url = get_embedding_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._base_url) self._image_encoder = CLIPImageEncoder(service_url=self._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