Medical-Chatbot / api /database.py
LiamKhoaLe's picture
rm MongoDB services by AgentDiagram #3
130168a
# 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()