File size: 1,045 Bytes
0a96660
 
 
 
d641e1d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from langchain_huggingface import HuggingFaceEmbeddings
from config import EMBEDDING_MODEL


_embedding_model_instance = None

def get_embedding_model() -> HuggingFaceEmbeddings:
    global _embedding_model_instance
    if _embedding_model_instance is None:
        _embedding_model_instance = HuggingFaceEmbeddings(
            model_name=EMBEDDING_MODEL,
            model_kwargs={"local_files_only": True}
        )
    return _embedding_model_instance

from langchain_core.embeddings import Embeddings

class LazyEmbeddingModel(Embeddings):
    def __getattr__(self, name):
        return getattr(get_embedding_model(), name)

    def embed_documents(self, texts, *args, **kwargs):
        return get_embedding_model().embed_documents(texts, *args, **kwargs)

    def embed_query(self, text, *args, **kwargs):
        return get_embedding_model().embed_query(text, *args, **kwargs)

    def __call__(self, text, *args, **kwargs):
        return get_embedding_model().embed_query(text, *args, **kwargs)

embedding_model = LazyEmbeddingModel()