File size: 1,180 Bytes
4225666
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

"""
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