CRM / engine /similarity_engine.py
github-actions[bot]
Sync from GitHub: 1440d3c58e322339bab856b61d48222a04c10964 to branch main
739b192
Raw
History Blame Contribute Delete
1.32 kB
from sentence_transformers import SentenceTransformer, util
from core.globals import ml_models
from core.logging_config import logger
def load_similarity_models():
try:
model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
ml_models["sentence_transformer"] = model
logger.info("✅ Sentence Transformer model loaded.")
except Exception as e:
logger.error(f"❌ Failed to load Sentence Transformer model: {e}")
async def check_duplicate(current_text: str, open_tickets_texts: list[str]) -> dict:
model = ml_models.get("sentence_transformer")
if not model or not open_tickets_texts:
return {"is_duplicate": False, "max_similarity": 0.0}
try:
current_embedding = model.encode(current_text, convert_to_tensor=True)
open_embeddings = model.encode(open_tickets_texts, convert_to_tensor=True)
cosine_scores = util.cos_sim(current_embedding, open_embeddings)[0]
max_score = float(cosine_scores.max().item())
is_duplicate = max_score > 0.85 # threshold
return {
"is_duplicate": is_duplicate,
"max_similarity": max_score
}
except Exception as e:
logger.error(f"Duplicate check error: {e}")
return {"is_duplicate": False, "max_similarity": 0.0}