"""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() @property def text_encoder(self): """Lazy-created text encoder (TextEmbeddingEncoder).""" from embeddings.text_encoder import TextEmbeddingEncoder return TextEmbeddingEncoder(service_url=self._base_url) @property def image_encoder(self): """Lazy-created image encoder (CLIPImageEncoder).""" from embeddings.image_encoder import CLIPImageEncoder return CLIPImageEncoder(service_url=self._base_url)