Spaces:
Sleeping
Sleeping
File size: 1,600 Bytes
5b7955a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | """Factory function to instantiate the configured embedder."""
from rag_engine.utils.logger import get_logger
from .base_embedder import BaseEmbedder
logger = get_logger(__name__)
def get_embedder(provider: str | None = None) -> BaseEmbedder:
"""Return an embedder instance for the requested provider.
Parameters
----------
provider : str | None
One of ``"local"``, ``"jina"``, ``"openai"``, ``"cohere"``.
Falls back to ``settings.embedding_provider`` when *None*.
"""
from rag_engine.config.settings import settings
if provider is None:
provider = settings.embedding_provider
provider = provider.strip().lower()
if provider == "local":
from .local_embedder import LocalEmbedder
model_name = settings.embedding_model
logger.info("Instantiating LocalEmbedder (model=%s)", model_name)
return LocalEmbedder(model_name=model_name)
if provider == "jina":
from .jina_embedder import JinaEmbedder
logger.info("Instantiating JinaEmbedder")
return JinaEmbedder()
if provider == "openai":
raise NotImplementedError(
"OpenAI embeddings skipped — use EMBEDDING_PROVIDER=local"
)
if provider == "cohere":
raise NotImplementedError(
"Cohere embeddings skipped — use EMBEDDING_PROVIDER=local"
)
# default fallback
logger.warning(
"Unknown embedding provider '%s' — falling back to LocalEmbedder",
provider,
)
from .local_embedder import LocalEmbedder
return LocalEmbedder()
|