File size: 2,304 Bytes
6c73a13
 
 
130168a
6c73a13
 
 
 
130168a
 
6c73a13
 
 
 
 
 
130168a
6c73a13
 
 
 
 
 
 
 
 
 
 
 
130168a
 
 
 
5d74993
6c73a13
130168a
 
 
6c73a13
130168a
 
 
 
6c73a13
 
 
 
 
 
 
130168a
 
 
6c73a13
130168a
 
6c73a13
 
 
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# api/database.py
import numpy as np
from sentence_transformers import SentenceTransformer
from .config import MODEL_CACHE_DIR, EMBEDDING_MODEL_DEVICE
import logging

logger = logging.getLogger("database-bot")

# Root Cause vs Logic: the runtime used to initialize a MongoDB/FAISS RAG data plane at import time,
# which caused DNS failures when the index cluster was unavailable; the app now keeps only the embedder hook.
class DatabaseManager:
    def __init__(self):
        self.embedding_model = None
        self.index = None
        self.symptom_vectors = None
        self.symptom_docs = None

    def initialize_embedding_model(self):
        """Initialize the SentenceTransformer model"""
        logger.info("[Embedder] 📥 Loading SentenceTransformer Model...")
        try:
            self.embedding_model = SentenceTransformer(MODEL_CACHE_DIR, device=EMBEDDING_MODEL_DEVICE)
            self.embedding_model = self.embedding_model.half()  # Reduce memory
            logger.info("✅ Model Loaded Successfully.")
        except Exception as e:
            logger.error(f"❌ Model Loading Failed: {e}")
            raise
    
    def initialize_mongodb(self):
        """Compatibility stub for legacy MongoDB-backed retrieval startup."""
        # Root Cause vs Logic: all MongoDB-backed RAG wiring has been removed from the runtime;
        # keeping this as a no-op preserves import compatibility without triggering DNS lookups.
        logger.info("[DB] MongoDB initialization skipped (legacy RAG disabled).")

    def load_faiss_index(self):
        """Legacy FAISS loading disabled."""
        return None

    def load_symptom_vectors(self):
        """Legacy symptom vector loading disabled."""
        self.symptom_docs = []
        self.symptom_vectors = np.empty((0, 0), dtype=np.float32)

    def get_embedding_model(self):
        """Get the embedding model"""
        if self.embedding_model is None:
            self.initialize_embedding_model()
        return self.embedding_model
    
    def get_qa_collection(self):
        """Legacy QA collection access disabled."""
        return None

    def get_symptom_collection(self):
        """Legacy symptom collection access disabled."""
        return None

# Global database manager instance
db_manager = DatabaseManager()