
    KKi'                    p    S SK Jr  S SKJr  S SKJr  S SKJrJrJ	r	  S SK
JrJrJrJr  Sr " S S\\5      rg	)
    )annotations)Any)
Embeddings)	BaseModel
ConfigDictField)IMPORT_ERRORis_ipex_availableis_optimum_intel_availableis_optimum_intel_versionz1.22c                     ^  \ rS rSr% Sr\" SSS9rS\S'    SrS	\S
'    \" \	S9r
S\S'    \" \	S9rS\S'    \" \	S9rS\S'    SrS\S'    SrS\S'    SU 4S jjr\" SSSS9r      SS jrSS jrS S jrSrU =r$ )!HuggingFaceEmbeddings   a  HuggingFace sentence_transformers embedding models.

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

Example:
    ```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,
    )
    ```
z'sentence-transformers/all-mpnet-base-v2model)defaultaliasstr
model_nameNz
str | Nonecache_folder)default_factorydict[str, Any]model_kwargsencode_kwargsquery_encode_kwargsFboolmulti_processshow_progressc                  > [         TU ]  " S0 UD6   SSKnU R                  R                  SS5      S:X  au  [        5       (       a  [        5       (       d$  S[        R                  " S5       3n[        U5      e[        S	[        5      (       a  S
[         S3n[        U5      eSSKJn  UnOUR                  nU" U R                  4SU R                   0U R                  D6U l        g! [         a  nSn[        U5      UeSnAff = f)z$Initialize the sentence_transformer.r   NzrCould not import sentence_transformers python package. Please install it with `pip install sentence-transformers`.backendtorchipexzBackend: ipex zoptimum[ipex]<z&Backend: ipex requires optimum-intel>=z_. You can install it with pip: `pip install --upgrade --upgrade-strategy eager `optimum[ipex]`.)IPEXSentenceTransformerr    )super__init__sentence_transformersImportErrorr   getr   r
   r	   formatr   _MIN_OPTIMUM_VERSIONoptimum.intelr#   SentenceTransformerr   r   _client)selfkwargsr'   excmsgr#   	model_cls	__class__s          n/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/langchain_huggingface/embeddings/huggingface.pyr&   HuggingFaceEmbeddings.__init__@   s   "6"	,(   G4>-//7H7J7J&|':':?'K&LM!#&&'-ABB<+, -''  "#&&=/I .AAI OO
*.*;*;
?C?P?P
9  	,N  c"+	,s   C' '
D1C??Dforbidr$   T)extraprotected_namespacespopulate_by_namec                   SSK nU Vs/ s H  oDR                  SS5      PM     nnU R                  (       aQ  U R                  R	                  5       nU R                  R                  X5      nUR                  R                  U5        O)U R                  R                  " U4SU R                  0UD6n[        U[        5      (       a  Sn[        U5      eUR                  5       $ s  snf )a4  Embed a text using the HuggingFace transformer model.

Args:
    texts: The list of texts to embed.
    encode_kwargs: Keyword arguments to pass when calling the
        `encode` method for the documents of the SentenceTransformer
        encode method.

Returns:
    List of embeddings, one for each text.

r   N
 show_progress_barzHExpected embeddings to be a Tensor or a numpy array, got a list instead.)r'   replacer   r.   start_multi_process_poolencode_multi_processr-   stop_multi_process_poolencoder   
isinstancelist	TypeErrortolist)r/   textsr   r'   xpool
embeddingsr2   s           r5   _embedHuggingFaceEmbeddings._embedk   s     	%/45u!4%u5<<88:D::5GJ!55MMdS,,"&"4"4  J j$''&  C.   ""' 6s   C#c                8    U R                  XR                  5      $ )zCompute doc embeddings using a HuggingFace transformer model.

Args:
    texts: The list of texts to embed.

Returns:
    List of embeddings, one for each text.

)rL   r   )r/   rH   s     r5   embed_documents%HuggingFaceEmbeddings.embed_documents   s     {{5"4"455    c                    [        U R                  5      S:  a  U R                  OU R                  nU R                  U/U5      S   $ )zCompute query embeddings using a HuggingFace transformer model.

Args:
    text: The text to embed.

Returns:
    Embeddings for the text.

r   )lenr   r   rL   )r/   textembed_kwargss      r5   embed_query!HuggingFaceEmbeddings.embed_query   sJ     4++,q0 $$## 	
 {{D6<033rQ   )r.   )r0   r   )rH   	list[str]r   r   returnlist[list[float]])rH   rX   rY   rZ   )rT   r   rY   zlist[float])__name__
__module____qualname____firstlineno____doc__r   r   __annotations__r   dictr   r   r   r   r   r&   r   model_configrL   rO   rV   __static_attributes____classcell__)r4   s   @r5   r   r      s    & 9J  #L*#K#(#>L.>d %*$$?M>?k +0*EEk  M4(M4)#
J L$#$#/=$#	$#L
64 4rQ   r   N)
__future__r   typingr   langchain_core.embeddingsr   pydanticr   r   r   (langchain_huggingface.utils.import_utilsr	   r
   r   r   r+   r   r$   rQ   r5   <module>rj      s6    "  0 1 1   Z4Iz Z4rQ   