huggingface.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import os
  2. from typing import Optional
  3. from langchain_community.embeddings import HuggingFaceEmbeddings
  4. try:
  5. from langchain_huggingface import HuggingFaceEndpointEmbeddings
  6. except ModuleNotFoundError:
  7. raise ModuleNotFoundError(
  8. "The required dependencies for HuggingFaceHub are not installed."
  9. "Please install with `pip install langchain_huggingface`"
  10. ) from None
  11. from embedchain.config import BaseEmbedderConfig
  12. from embedchain.embedder.base import BaseEmbedder
  13. from embedchain.models import VectorDimensions
  14. class HuggingFaceEmbedder(BaseEmbedder):
  15. def __init__(self, config: Optional[BaseEmbedderConfig] = None):
  16. super().__init__(config=config)
  17. if self.config.endpoint:
  18. if not self.config.api_key and "HUGGINGFACE_ACCESS_TOKEN" not in os.environ:
  19. raise ValueError(
  20. "Please set the HUGGINGFACE_ACCESS_TOKEN environment variable or pass API Key in the config."
  21. )
  22. embeddings = HuggingFaceEndpointEmbeddings(
  23. model=self.config.endpoint,
  24. huggingfacehub_api_token=self.config.api_key or os.getenv("HUGGINGFACE_ACCESS_TOKEN"),
  25. )
  26. else:
  27. embeddings = HuggingFaceEmbeddings(model_name=self.config.model)
  28. embedding_fn = BaseEmbedder._langchain_default_concept(embeddings)
  29. self.set_embedding_fn(embedding_fn=embedding_fn)
  30. vector_dimension = self.config.vector_dimension or VectorDimensions.HUGGING_FACE.value
  31. self.set_vector_dimension(vector_dimension=vector_dimension)