vgecbot / app /api /dependencies.py
harsh-dev's picture
docker deployment
4225666
"""
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