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()