
    +#hG                     X    d dl mZmZmZmZ d dlmZ d dlmZm	Z	m
Z
 dZ G d dee      Zy)    )AnyDictListOptional)
Embeddings)	BaseModel
ConfigDictFieldz'sentence-transformers/all-mpnet-base-v2c                       e Zd ZU dZeZeed<   	 dZe	e   ed<   	  e
e      Zeeef   ed<   	  e
e      Zeeef   ed<   	 dZeed	<   	 dZeed
<   	 def fdZ edd      Zdee   deee      fdZdedee   fdZ xZS )HuggingFaceEmbeddingsa`  HuggingFace sentence_transformers embedding models.

    To use, you should have the ``sentence_transformers`` python package installed.

    Example:
        .. code-block:: python

            from langchain_huggingface import HuggingFaceEmbeddings

            model_name = "sentence-transformers/all-mpnet-base-v2"
            model_kwargs = {'device': 'cpu'}
            encode_kwargs = {'normalize_embeddings': False}
            hf = HuggingFaceEmbeddings(
                model_name=model_name,
                model_kwargs=model_kwargs,
                encode_kwargs=encode_kwargs
            )
    
model_nameNcache_folder)default_factorymodel_kwargsencode_kwargsFmulti_processshow_progresskwargsc                     t        |   di | 	 ddl} |j                  | j
                  fd| j                  i| j                  | _        y# t        $ r}t        d      |d}~ww xY w)z$Initialize the sentence_transformer.r   NzrCould not import sentence_transformers python package. Please install it with `pip install sentence-transformers`.r    )	super__init__sentence_transformersImportErrorSentenceTransformerr   r   r   _client)selfr   r   exc	__class__s       i/var/www/html/sandstorm/venv/lib/python3.12/site-packages/langchain_huggingface/embeddings/huggingface.pyr   zHuggingFaceEmbeddings.__init__0   s    "6"	( A,@@OO
*.*;*;
?C?P?P
  	N 	s   A 	A)A$$A)forbidr   )extraprotected_namespacestextsreturnc                    ddl }t        t        d |            }| j                  rR| j                  j                         }| j                  j                  ||      }|j                  j                  |       n3 | j                  j                  |fd| j                  i| j                  }t        |t              rt        d      |j                         S )zCompute doc embeddings using a HuggingFace transformer model.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        r   Nc                 &    | j                  dd      S )N
 )replace)xs    r    <lambda>z7HuggingFaceEmbeddings.embed_documents.<locals>.<lambda>O   s    199T3#7     show_progress_barzHExpected embeddings to be a Tensor or a numpy array, got a list instead.)r   listmapr   r   start_multi_process_poolencode_multi_processr   stop_multi_process_poolencoder   r   
isinstance	TypeErrortolist)r   r$   r   pool
embeddingss        r    embed_documentsz%HuggingFaceEmbeddings.embed_documentsD   s     	%S7?@<<88:D::5$GJ!55MMdS,,,"&"4"4 $$J j$'& 
   ""r-   textc                 ,    | j                  |g      d   S )zCompute query embeddings using a HuggingFace transformer model.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r   )r:   )r   r;   s     r    embed_queryz!HuggingFaceEmbeddings.embed_queryc   s     ##TF+A..r-   )__name__
__module____qualname____doc__DEFAULT_MODEL_NAMEr   str__annotations__r   r   r
   dictr   r   r   r   r   boolr   r   r	   model_configr   floatr:   r=   __classcell__)r   s   @r    r   r   	   s    & )J("&L(3-&K#(#>L$sCx.>d %*$$?M4S>?k  M4(M4)
 
 L
#T#Y #4U3D #>	/ 	/U 	/r-   r   N)typingr   r   r   r   langchain_core.embeddingsr   pydanticr   r	   r
   rB   r   r   r-   r    <module>rM      s*    , , 0 1 1> c/Iz c/r-   