From a09ca19c94b83377533750d95427b13cc991e767 Mon Sep 17 00:00:00 2001 From: Kaitlyn Date: Sun, 27 Aug 2023 22:39:21 +0200 Subject: [PATCH 1/2] Add flag for loading embedding model --- contentrepo/settings/base.py | 2 ++ home/constants.py | 6 +++++- home/models.py | 3 +++ home/utils.py | 3 +++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/contentrepo/settings/base.py b/contentrepo/settings/base.py index d7800dba..366891c1 100644 --- a/contentrepo/settings/base.py +++ b/contentrepo/settings/base.py @@ -264,3 +264,5 @@ EMAIL_SSL_CERTFILE = env.str("EMAIL_SSL_CERTFILE", None) EMAIL_SSL_KEYFILE = env.str("EMAIL_SSL_KEYFILE", None) EMAIL_TIMEOUT = env.int("EMAIL_TIMEOUT", None) + +LOAD_TRANSFORMER_MODEL = env.bool("LOAD_TRANSFORMER_MODEL", False) diff --git a/home/constants.py b/home/constants.py index e3030eaf..38d14301 100644 --- a/home/constants.py +++ b/home/constants.py @@ -1,6 +1,8 @@ # Define constants for use throughout the application +from django.conf import settings from sentence_transformers import SentenceTransformer + GENDER_CHOICES = [ ("male", "Male"), ("female", "Female"), @@ -21,4 +23,6 @@ ("empty", "Empty"), ] -model = SentenceTransformer("all-mpnet-base-v2") +model = None +if settings.LOAD_TRANSFORMER_MODEL: + model = SentenceTransformer("all-mpnet-base-v2") diff --git a/home/models.py b/home/models.py index b426da8b..1593a8e2 100644 --- a/home/models.py +++ b/home/models.py @@ -620,6 +620,9 @@ def save_revision( def update_embedding(sender, instance, *args, **kwargs): from .utils import preprocess_content_for_embedding + if not model: + return + embedding = {} if instance.enable_web: content = [] diff --git a/home/utils.py b/home/utils.py index 41780d5e..f05e61c5 100644 --- a/home/utils.py +++ b/home/utils.py @@ -82,6 +82,9 @@ def cosine_similarity(A, B): def retrieve_top_n_content_pieces( user_input, queryset, n=5, content_type=None, platform="web" ): + if not model: + return [] + # similar_embeddings = [{'faq_name':, 'faq_content':, 'embedding':}, ...] # We need to filter by content type and then retrieve their embeddings # Generate embedding for user text user_embedding = model.encode([user_input]) From dba6d79ff7ae60140ef27036fd19cf3a9c11c8cd Mon Sep 17 00:00:00 2001 From: Kaitlyn Date: Sun, 27 Aug 2023 22:54:17 +0200 Subject: [PATCH 2/2] Run linting --- home/constants.py | 1 - 1 file changed, 1 deletion(-) diff --git a/home/constants.py b/home/constants.py index 38d14301..7e809029 100644 --- a/home/constants.py +++ b/home/constants.py @@ -2,7 +2,6 @@ from django.conf import settings from sentence_transformers import SentenceTransformer - GENDER_CHOICES = [ ("male", "Male"), ("female", "Female"),