Spaces:
Sleeping
Sleeping
| """ | |
| 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__) | |
| 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 | |