from sentence_transformers import SentenceTransformer, util import torch import joblib import os os.environ["TRANSFORMERS_CACHE"] = "/tmp/huggingface" # Load model components once bundle = joblib.load("semantic_specialist_model.pkl") local_model_path = "models/all-MiniLM-L6-v2" model = SentenceTransformer(local_model_path) known_embeddings = bundle["known_embeddings"] symptom_specialist_pairs = bundle["symptom_specialist_pairs"] def predict_specialist(symptom_text: str): input_embedding = model.encode(symptom_text, convert_to_tensor=True) similarities = util.pytorch_cos_sim(input_embedding, known_embeddings)[0] top_idx = similarities.argmax().item() specialist = symptom_specialist_pairs[top_idx][1] score = similarities[top_idx].item() return specialist, score