""" FastAPI dependencies for dependency injection. """ from functools import lru_cache # from app.services.rag_service import RAGService # MOVED INSIDE FUNCTION TO PREVENT CIRCULAR IMPORT from app.utils.model_factory import get_llm_model, get_embedding_model, get_local_model from app.core.config import settings import logging logger = logging.getLogger(__name__) @lru_cache() def get_rag_service(): from app.services.rag_service import RAGService """ Get RAG service instance (singleton). This is cached so the same instance is reused across requests. Models are initialized once and reused. Returns: RAGService: Configured RAG service """ logger.info("Initializing RAG service...") # Initialize models llm_model = get_llm_model() embedding_model = get_embedding_model() # Create RAG service rag_service = RAGService( model=llm_model, collection_name=settings.collection_name, persist_directory=settings.persist_directory, embedding_model=embedding_model, k=settings.similarity_top_k ) logger.info("RAG service initialized successfully") return rag_service