
    NgG                     `    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dS )    )AnyDictListOptional)
Embeddings)	BaseModel
ConfigDictFieldz'sentence-transformers/all-mpnet-base-v2c                   H    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                      j        di | 	 ddl}n"# t          $ r}t          d          |d}~ww xY w |j        | j        fd| j        i| j        | _        dS )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       h/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_huggingface/embeddings/huggingface.pyr   zHuggingFaceEmbeddings.__init__0   s    ""6"""	((((( 	 	 	N  	 A,@O
 
*.*;
?C?P
 
s   ! 
A ;A forbidr   )extraprotected_namespacestextsreturnc                    ddl }t          t          d |                    }| j        rO| j                                        }| j                            ||          }|j                            |           n | j        j	        |fd| j
        i| j        }t          |t                    rt          d          |                                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                 .    |                      dd          S )N
 )replace)xs    r    <lambda>z7HuggingFaceEmbeddings.embed_documents.<locals>.<lambda>O   s    199T3#7#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7??@@ 		<88::D::5$GGJ!5MMdSSSS,, "&"4 $ J j$'' 	&  
   """r-   textc                 :    |                      |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   	   sr         & )J((("&L(3-&&&K#(5#>#>#>L$sCx.>>>d %*E$$?$?$?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 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1> c/ c/ c/ c/ c/Iz c/ c/ c/ c/ c/r-   