smart-chatbot-api / app /services /dependencies.py
GitHub Actions
Deploy from GitHub Actions (2026-05-31 09:04 UTC)
55c0d78
Raw
History Blame Contribute Delete
1.53 kB
"""
Dependency factories for FastAPI dependency injection.
Provides cached singleton instances of EmbeddingService and VectorStore.
"""
from functools import lru_cache
from app.services.embedding_service import EmbeddingService
from app.services.qdrant_vector_store import QdrantVectorStore
from app.services.retrieval_service import RetrievalService
from app.services.vector_store import VectorStore
from app.services.vector_store_contract import VectorStoreContract
from app.utils.config import config_manager
config = config_manager.get_config()
@lru_cache
def get_embedding_service() -> EmbeddingService:
model_name = config.embedding_model
return EmbeddingService(
model_name=model_name,
api_key=config.gemini_embedding_api_key,
)
@lru_cache
def get_vector_store() -> VectorStoreContract:
if config.vector_store_backend == "qdrant":
return QdrantVectorStore(
url=config.qdrant_url,
collection_name=config.qdrant_collection_name,
vector_size=config.qdrant_vector_size,
timeout=config.qdrant_timeout,
)
if config.vector_store_backend == "chroma":
persist_path = config.chroma_persist_path
return VectorStore(persist_path=persist_path)
raise ValueError(f"Unsupported VECTOR_STORE_BACKEND: {config.vector_store_backend}")
@lru_cache
def get_retrieval_service() -> RetrievalService:
return RetrievalService(
embedding_service=get_embedding_service(), vector_store=get_vector_store()
)