1- """RAG engine singleton wrapper."""
1+ """RAG engine singleton wrapper.
2+
3+ Heavy dependencies (torch, transformers, docs2db-api) are imported lazily
4+ inside ``get_engine()`` so that importing this module is near-instant.
5+ """
6+
7+ from __future__ import annotations
28
39import logging
410
5- from docs2db_api .rag .engine import RAGConfig
6- from docs2db_api .rag .engine import UniversalRAGEngine
11+ from typing import TYPE_CHECKING
712
813from docs2db_mcp .config import CONFIG
914
1015
16+ if TYPE_CHECKING :
17+ from docs2db_api .rag .engine import UniversalRAGEngine
18+
19+
1120logger = logging .getLogger (__name__ )
1221
1322_engine : UniversalRAGEngine | None = None
1625async def get_engine () -> UniversalRAGEngine :
1726 """Get or create the singleton RAG engine instance.
1827
28+ On first call this imports ``docs2db-api`` (which pulls in torch,
29+ transformers, etc.) and initialises the engine. Subsequent calls
30+ return the cached instance.
31+
1932 Returns:
2033 Initialized UniversalRAGEngine instance
2134
@@ -25,6 +38,9 @@ async def get_engine() -> UniversalRAGEngine:
2538 global _engine
2639
2740 if _engine is None :
41+ from docs2db_api .rag .engine import RAGConfig
42+ from docs2db_api .rag .engine import UniversalRAGEngine
43+
2844 logger .info ("Initializing UniversalRAGEngine" )
2945
3046 # Configure database connection (dict format)
@@ -53,7 +69,7 @@ async def get_engine() -> UniversalRAGEngine:
5369 await _engine .start ()
5470 logger .info ("UniversalRAGEngine initialized successfully" )
5571 except Exception as e :
56- logger .error (f "Failed to initialize RAG engine: { e } " )
72+ logger .error ("Failed to initialize RAG engine: %s" , e )
5773 _engine = None
5874 raise
5975
@@ -95,11 +111,12 @@ async def health_check() -> None:
95111
96112 # Verify we got a valid response
97113 if result is None :
98- raise Exception ("Health check query returned None" )
114+ msg = "Health check query returned None"
115+ raise Exception (msg )
99116
100- logger .info (f "Test query successful (returned { len (result .documents )} documents)" )
117+ logger .info ("Test query successful (returned %d documents)" , len (result .documents ))
101118 logger .info ("Health check passed - system is ready" )
102119
103120 except Exception as e :
104- logger .error (f "Health check failed: { e } " , exc_info = True )
121+ logger .error ("Health check failed: %s" , e , exc_info = True )
105122 raise Exception (f"Startup health check failed - cannot connect to database or perform queries: { e } " ) from e
0 commit comments