factory.py•958 B
from typing import Any, ClassVar
from memos.configs.reranker import RerankerConfigFactory
from memos.rerankers.base import BaseReranker
from memos.rerankers.siliconflow import SiliconFlowReranker
class RerankerFactory:
"""Factory class for creating reranker instances."""
backend_to_class: ClassVar[dict[str, Any]] = {
"siliconflow": SiliconFlowReranker,
}
@classmethod
def from_config(cls, config_factory: RerankerConfigFactory) -> BaseReranker:
"""Create a reranker instance from configuration."""
backend = config_factory.backend
if backend not in cls.backend_to_class:
raise ValueError(f"Invalid backend: {backend}")
reranker_class = cls.backend_to_class[backend]
return reranker_class(config_factory.config)
@classmethod
def list_backends(cls) -> list[str]:
"""List all available reranker backends."""
return list(cls.backend_to_class.keys())