Ë
    µŒjF  ã                   óL  — d dl Z d dlmZmZmZmZ d dlZd dlmZm	Z	 d dl
mZ d dlmZmZmZmZ dZdZdZd	Zd
ZdZdZ eddd¬«       G d„ dee«      «       Z eddd¬«       G d„ dee«      «       Z eddd¬«       G d„ dee«      «       Z eddd¬«       G d„ dee«      «       Zy)é    N)ÚAnyÚDictÚListÚOptional)Ú
deprecatedÚwarn_deprecated)Ú
Embeddings)Ú	BaseModelÚ
ConfigDictÚFieldÚ	SecretStrz'sentence-transformers/all-mpnet-base-v2zhkunlp/instructor-largezBAAI/bge-large-enz&Represent the document for retrieval: z<Represent the question for retrieving supporting documents: z9Represent this question for searching relevant passages: u9   ä¸ºè¿™ä¸ªå�¥å­�ç”Ÿæˆ�è¡¨ç¤ºä»¥ç”¨äºŽæ£€ç´¢ç›¸å…³æ–‡ç« ï¼šz0.2.2ú1.0z+langchain_huggingface.HuggingFaceEmbeddings)ÚsinceÚremovalÚalternative_importc                   ó  ‡ — e Zd ZU dZdZeed<   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 )ÚHuggingFaceEmbeddingsai  HuggingFace sentence_transformers embedding models.

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

    Example:
        .. code-block:: python

            from langchain_community.embeddings 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
            )
    NÚclientÚ
model_nameÚcache_folder©Údefault_factoryÚmodel_kwargsÚencode_kwargsFÚmulti_processÚshow_progressÚkwargsc                 ó†  •— t        ‰| �  di |¤Ž d|vrSd}d}t        ||d| j                  j                  › d�d|› d�z   d|› d	�z   d| j                  j                  › d
�z   ¬«       	 ddl} |j                  | j                  fd| j                  i| j                  ¤Ž| _        y# t        $ r}t        d«      |‚d}~ww xY w)ú$Initialize the sentence_transformer.r   ú0.2.16ú0.4.0úDefault values for ú.model_nameú were deprecated in LangChain ú and will be removed inÚ ú%. Explicitly pass a model_name to theú constructor instead.©r   r   Úmessager   NúrCould not import sentence_transformers python package. Please install it with `pip install sentence-transformers`.r   © )ÚsuperÚ__init__r   Ú	__class__Ú__name__Úsentence_transformersÚImportErrorÚSentenceTransformerr   r   r   r   )Úselfr   r   r   r1   Úexcr/   s         €út/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/embeddings/huggingface.pyr.   zHuggingFaceEmbeddings.__init__C   sý   ø€ ä‰ÑÑ"˜6Ò"à˜vÑ%ØˆEØˆGÜØØØ-¨d¯n©n×.EÑ.EÐ-FÀkÐRØ2°5°'Ð9PÐQñRà�g�YÐCÐDñEð �d—n‘n×-Ñ-Ð.Ð.CÐDñEõð	Û(ð @Ð+×?Ñ?Ø�O‰Oñ
Ø*.×*;Ñ*;ð
Ø?C×?PÑ?Pñ
ˆ�øô ò 	ÜðNóð ðûð	ús   Á)B& Â&	C Â/B;Â;C Úforbidr,   ©ÚextraÚprotected_namespacesÚtextsÚreturnc                 ó–  — ddl }t        t        d„ |«      «      }| j                  ra| j                  j                  «       }| j                  j                  ||«      }|j                  j                  |«       |j                  «       S  | j                  j                  |fd| j                  i| j                  ¤Ž}|j                  «       S )úÉCompute 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Ú
r&   )Úreplace)Úxs    r6   Ú<lambda>z7HuggingFaceEmbeddings.embed_documents.<locals>.<lambda>m   s   €  1§9¡9¨T°3Ô#7ó    Úshow_progress_bar)r1   ÚlistÚmapr   r   Ústart_multi_process_poolÚencode_multi_processr3   Ústop_multi_process_poolÚencoder   r   Útolist)r4   r;   r1   ÚpoolÚ
embeddingss        r6   Úembed_documentsz%HuggingFaceEmbeddings.embed_documentsb   s·   € ó 	%ä”SÑ7¸Ó?Ó@ˆØ×ÒØ—;‘;×7Ñ7Ó9ˆDØŸ™×9Ñ9¸%ÀÓFˆJØ!×5Ñ5×MÑMÈdÔSð × Ñ Ó"Ð"ð	 ,˜Ÿ™×+Ñ+ØñØ)-×);Ñ);ðØ?C×?QÑ?QñˆJð × Ñ Ó"Ð"rD   Útextc                 ó,   — | j                  |g«      d   S ©ú³Compute query embeddings using a HuggingFace transformer model.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r   ©rO   ©r4   rP   s     r6   Úembed_queryz!HuggingFaceEmbeddings.embed_queryy   ó   € ð ×#Ñ# T FÓ+¨AÑ.Ð.rD   )r0   Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__annotations__ÚDEFAULT_MODEL_NAMEr   Ústrr   r   r   Údictr   r   r   r   Úboolr   r.   r   Úmodel_configr   ÚfloatrO   rV   Ú__classcell__©r/   s   @r6   r   r      sÞ   ø… ñð& €FˆCÓØ(€J�Ó(ØØ"&€L�(˜3‘-Ó&ðKá#(¸Ô#>€L�$�s˜C�x‘.Ó>ðdñ %*¸$Ô$?€M�4˜˜S˜‘>Ó?ðkð  €M�4ÓØ(Ø€M�4ÓØ)ð
 õ 
ñ:  HÀ2ÔF€Lð# T¨#¡Yð #°4¸¸U¹Ñ3Dó #ð.	/ ð 	/¨¨U©÷ 	/rD   r   c                   ó*  ‡ — e Zd ZU dZdZeed<   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<   	 eZe	ed	<   	 e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 )ÚHuggingFaceInstructEmbeddingsaŒ  Wrapper around sentence_transformers embedding models.

    To use, you should have the ``sentence_transformers``
    and ``InstructorEmbedding`` python packages installed.

    Example:
        .. code-block:: python

            from langchain_community.embeddings import HuggingFaceInstructEmbeddings

            model_name = "hkunlp/instructor-large"
            model_kwargs = {'device': 'cpu'}
            encode_kwargs = {'normalize_embeddings': True}
            hf = HuggingFaceInstructEmbeddings(
                model_name=model_name,
                model_kwargs=model_kwargs,
                encode_kwargs=encode_kwargs
            )
    Nr   r   r   r   r   r   Úembed_instructionÚquery_instructionFr   r   c                 ób  •— t        ‰| �  di |¤Ž d|vrSd}d}t        ||d| j                  j                  › d�d|› d�z   d|› d	�z   d| j                  j                  › d
�z   ¬«       	 ddlm}  || j                  fd| j                  i| j                  ¤Ž| _
        d| j                  v rht        dddd| j                  j                  › �¬«       | j                  rt        j                  d«       | j                  j!                  d«      | _        yy# t        $ r}t        d«      |‚d}~ww xY w)r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r   )Ú
INSTRUCTORr   z/Dependencies for InstructorEmbedding not found.NrE   ú0.2.5r   ú"encode_kwargs['show_progress_bar']úthe show_progress method on ©r   r   ÚnameÚalternativeúuBoth encode_kwargs['show_progress_bar'] and show_progress are set;encode_kwargs['show_progress_bar'] takes precedencer,   )r-   r.   r   r/   r0   ÚInstructorEmbeddingri   r   r   r   r   r2   r   r   ÚwarningsÚwarnÚpop)r4   r   r   r   ri   Úer/   s         €r6   r.   z&HuggingFaceInstructEmbeddings.__init__°   s_  ø€ ä‰ÑÑ"˜6Ò"à˜vÑ%ØˆEØˆGÜØØØ-¨d¯n©n×.EÑ.EÐ-FÀkÐRØ2°5°'Ð9PÐQñRà�g�YÐCÐDñEð �d—n‘n×-Ñ-Ð.Ð.CÐDñEõð	XÝ6á$Ø—‘ñØ.2×.?Ñ.?ðØCG×CTÑCTñˆDŒKð  $×"4Ñ"4Ñ4ÜØØØ9Ø:¸4¿>¹>×;RÑ;RÐ:SÐTõ	ð ×!Ò!Ü—‘ðJôð "&×!3Ñ!3×!7Ñ!7Ð8KÓ!LˆDÕð 5øô ò 	XÜÐOÓPÐVWÐWûð	Xús   Á)4D Ä	D.ÄD)Ä)D.r7   r,   r8   r;   r<   c                 óÈ   — |D �cg c]  }| j                   |g‘Œ }} | j                  j                  |fd| j                  i| j                  ¤Ž}|j                  «       S c c}w )zÆCompute doc embeddings using a HuggingFace instruct model.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        rE   )rf   r   rK   r   r   rL   )r4   r;   rP   Úinstruction_pairsrN   s        r6   rO   z-HuggingFaceInstructEmbeddings.embed_documentsÙ   st   € ñ INÓNÉÀ˜d×4Ñ4°dÒ;ÈÐÐNØ'�T—[‘[×'Ñ'Øñ
à"×0Ñ0ð
ð × Ñ ñ
ˆ
ð
 × Ñ Ó"Ð"ùò Os   …ArP   c                 ó¬   — | j                   |g} | j                  j                  |gfd| j                  i| j                  ¤Žd   }|j                  «       S )z°Compute query embeddings using a HuggingFace instruct model.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        rE   r   )rg   r   rK   r   r   rL   )r4   rP   Úinstruction_pairÚ	embeddings       r6   rV   z)HuggingFaceInstructEmbeddings.embed_queryê   sj   € ð !×2Ñ2°DÐ9ÐØ&�D—K‘K×&Ñ&ØÐñ
à"×0Ñ0ð
ð × Ñ ñ
ð ñ	ˆ	ð
 ×ÑÓ!Ð!rD   )r0   rX   rY   rZ   r   r   r[   ÚDEFAULT_INSTRUCT_MODELr   r]   r   r   r   r^   r   r   r   ÚDEFAULT_EMBED_INSTRUCTIONrf   ÚDEFAULT_QUERY_INSTRUCTIONrg   r   r_   r.   r   r`   r   ra   rO   rV   rb   rc   s   @r6   re   re   …   sæ   ø… ñð( €FˆCÓØ,€J�Ó,ØØ"&€L�(˜3‘-Ó&ðKá#(¸Ô#>€L�$�s˜C�x‘.Ó>Ø1Ù$)¸$Ô$?€M�4˜˜S˜‘>Ó?ØRØ6Ð�sÓ6Ø5Ø6Ð�sÓ6Ø1Ø€M�4ÓØ)ð%M õ %MñN  HÀ2ÔF€Lð# T¨#¡Yð #°4¸¸U¹Ñ3Dó #ð"" ð "¨¨U©÷ "rD   re   c                   ó*  ‡ — e Zd ZU dZdZeed<   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<   	 eZe	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 )ÚHuggingFaceBgeEmbeddingsaE  HuggingFace sentence_transformers embedding models.

    To use, you should have the ``sentence_transformers`` python package installed.
    To use Nomic, make sure the version of ``sentence_transformers`` >= 2.3.0.

    Bge Example:
        .. code-block:: python

            from langchain_community.embeddings import HuggingFaceBgeEmbeddings

            model_name = "BAAI/bge-large-en-v1.5"
            model_kwargs = {'device': 'cpu'}
            encode_kwargs = {'normalize_embeddings': True}
            hf = HuggingFaceBgeEmbeddings(
                model_name=model_name,
                model_kwargs=model_kwargs,
                encode_kwargs=encode_kwargs
            )
     Nomic Example:
        .. code-block:: python

            from langchain_community.embeddings import HuggingFaceBgeEmbeddings

            model_name = "nomic-ai/nomic-embed-text-v1"
            model_kwargs = {
                'device': 'cpu',
                'trust_remote_code':True
                }
            encode_kwargs = {'normalize_embeddings': True}
            hf = HuggingFaceBgeEmbeddings(
                model_name=model_name,
                model_kwargs=model_kwargs,
                encode_kwargs=encode_kwargs,
                query_instruction = "search_query:",
                embed_instruction = "search_document:"
            )
    Nr   r   r   r   r   r   rg   Ú rf   Fr   r   c                 ó,  •— t        ‰	| �  di |¤Ž d|vrSd}d}t        ||d| j                  j                  › d�d|› d�z   d|› d	�z   d| j                  j                  › d
�z   ¬«       	 ddl}g d¢}|D �ci c],  }|| j                  v r|| j                  j                  |«      “Œ. }} |j                  | j                  fd| j                  i| j                  ¤d|i¤Ž| _        d| j                  v rt        | _        d| j                  v rht        dddd| j                  j                  › �¬«       | j                   rt#        j$                  d«       | j                  j                  d«      | _        yy# t        $ r}t        d«      |‚d}~ww xY wc c}w )r   r   rj   r!   r"   r#   r$   r%   r&   r'   r(   r)   r   Nr+   )Útorch_dtypeÚattn_implementationÚproviderÚ	file_nameÚexportr   r   z-zhrE   r   rk   rl   rm   rp   r,   )r-   r.   r   r/   r0   r1   r2   r   rt   r3   r   r   r   Ú DEFAULT_QUERY_BGE_INSTRUCTION_ZHrg   r   r   rr   rs   )
r4   r   r   r   r1   r5   Úextra_model_kwargsÚkÚextra_model_kwargs_dictr/   s
            €r6   r.   z!HuggingFaceBgeEmbeddings.__init__9  sã  ø€ ä‰ÑÑ"˜6Ò"à˜vÑ%ØˆEØˆGÜØØØ-¨d¯n©n×.EÑ.EÐ-FÀkÐRØ2°5°'Ð9PÐQñRà�g�YÐCÐDñEð �d—n‘n×-Ñ-Ð.Ð.CÐDñEõð	Û(ò
Ðñ (ó#
á'�Ø�D×%Ñ%Ñ%ð ˆt× Ñ ×$Ñ$ QÓ'Ñ'Ø'ð 	 ð #
ð
 @Ð+×?Ñ?Ø�O‰Oñ
à×*Ñ*ð
ð ×Ññ
ð 1ò	
ˆŒð �D—O‘OÑ#Ü%EˆDÔ"à $×"4Ñ"4Ñ4ÜØØØ9Ø:¸4¿>¹>×;RÑ;RÐ:SÐTõ	ð ×!Ò!Ü—‘ðJôð "&×!3Ñ!3×!7Ñ!7Ð8KÓ!LˆDÕð 5øô7 ò 	ÜðNóð ðûð	üò#
s   Á)E4 Á51FÅ4	FÅ=F	Æ	Fr7   r,   r8   r;   r<   c                 óê   — |D �cg c]!  }| j                   |j                  dd«      z   ‘Œ# }} | j                  j                  |fd| j                  i| j
                  ¤Ž}|j                  «       S c c}w )r>   r@   r&   rE   )rf   rA   r   rK   r   r   rL   )r4   r;   ÚtrN   s       r6   rO   z(HuggingFaceBgeEmbeddings.embed_documentsw  s|   € ñ INÓNÉÀ1�×'Ñ'¨!¯)©)°D¸#Ó*>Ó>ÈˆÐNØ'�T—[‘[×'Ñ'Øñ
Ø%)×%7Ñ%7ð
Ø;?×;MÑ;Mñ
ˆ
ð × Ñ Ó"Ð"ùò	 Os   …&A0rP   c                 óÆ   — |j                  dd«      } | j                  j                  | j                  |z   fd| j                  i| j
                  ¤Ž}|j                  «       S )rS   r@   r&   rE   )rA   r   rK   rg   r   r   rL   )r4   rP   rz   s      r6   rV   z$HuggingFaceBgeEmbeddings.embed_query†  sg   € ð �|‰|˜D #Ó&ˆØ&�D—K‘K×&Ñ&Ø×"Ñ" TÑ)ñ
à"×0Ñ0ð
ð × Ñ ñ
ˆ	ð
 ×ÑÓ!Ð!rD   )r0   rX   rY   rZ   r   r   r[   ÚDEFAULT_BGE_MODELr   r]   r   r   r   r^   r   r   r   Ú DEFAULT_QUERY_BGE_INSTRUCTION_ENrg   rf   r   r_   r.   r   r`   r   ra   rO   rV   rb   rc   s   @r6   r   r   ü   sç   ø… ñ$ðL €FˆCÓØ'€J�Ó'ØØ"&€L�(˜3‘-Ó&ðKá#(¸Ô#>€L�$�s˜C�x‘.Ó>Ø1Ù$)¸$Ô$?€M�4˜˜S˜‘>Ó?ØRØ=Ð�sÓ=Ø1ØÐ�sÓØ4Ø€M�4ÓØ)ð:M õ :Mñx  HÀ2ÔF€Lð# T¨#¡Yð #°4¸¸U¹Ñ3Dó #ð" ð "¨¨U©÷ "rD   r   z3langchain_huggingface.HuggingFaceEndpointEmbeddingsc                   óì   — e Zd ZU dZeed<   	 dZeed<   	 dZe	e   ed<   	 i Z
eeef   ed<   	  edd	¬
«      Zedefd„«       Zedefd„«       Zedefd„«       Zdee   deee      fd„Zdedee   fd„Zy)Ú!HuggingFaceInferenceAPIEmbeddingszkEmbed texts using the HuggingFace API.

    Requires a HuggingFace Inference API key and a model name.
    Úapi_keyz&sentence-transformers/all-MiniLM-L6-v2r   NÚapi_urlÚadditional_headersr7   r,   r8   r<   c                 ó6   — | j                   xs | j                  S )N)r“   Ú_default_api_url©r4   s    r6   Ú_api_urlz*HuggingFaceInferenceAPIEmbeddings._api_url®  s   € à�|‰|Ò4˜t×4Ñ4Ð4rD   c                 ó    — d| j                   › �S )NzAhttps://api-inference.huggingface.co/pipeline/feature-extraction/)r   r—   s    r6   r–   z2HuggingFaceInferenceAPIEmbeddings._default_api_url²  s   € ðð —‘Ð ð"ð	
rD   c                 óX   — dd| j                   j                  «       › �i| j                  ¥S )NÚAuthorizationzBearer )r’   Úget_secret_valuer”   r—   s    r6   Ú_headersz*HuggingFaceInferenceAPIEmbeddings._headers»  s6   € ð ˜w t§|¡|×'DÑ'DÓ'FÐ&GÐHð
à×%Ñ%ð
ð 	
rD   r;   c                 ó†   — t        j                  | j                  | j                  |dddœdœ¬«      }|j	                  «       S )a  Get the embeddings for a list of texts.

        Args:
            texts (Documents): A list of texts to get embeddings for.

        Returns:
            Embedded texts as List[List[float]], where each inner List[float]
                corresponds to a single input text.

        Example:
            .. code-block:: python

                from langchain_community.embeddings import (
                    HuggingFaceInferenceAPIEmbeddings,
                )

                hf_embeddings = HuggingFaceInferenceAPIEmbeddings(
                    api_key="your_api_key",
                    model_name="sentence-transformers/all-MiniLM-l6-v2"
                )
                texts = ["Hello, world!", "How are you?"]
                hf_embeddings.embed_documents(texts)
        T)Úwait_for_modelÚ	use_cache)ÚinputsÚoptions)ÚheadersÚjson)ÚrequestsÚpostr˜   r�   r¤   )r4   r;   Úresponses      r6   rO   z1HuggingFaceInferenceAPIEmbeddings.embed_documentsÂ  s>   € ô0 —=‘=Ø�M‰MØ—M‘MàØ.2ÀÑFñô
ˆð �}‰}‹ÐrD   rP   c                 ó,   — | j                  |g«      d   S rR   rT   rU   s     r6   rV   z-HuggingFaceInferenceAPIEmbeddings.embed_queryä  rW   rD   )r0   rX   rY   rZ   r   r[   r   r]   r“   r   r”   r   r   r`   Úpropertyr˜   r–   r^   r�   r   ra   rO   rV   r,   rD   r6   r‘   r‘   ˜  sÙ   … ñð
 ÓØ9Ø>€J�Ó>Ø;Ø!€GˆX�c‰]Ó!ØKØ)+Ð˜˜S #˜X™Ó+ØDá HÀ2ÔF€Làð5˜#ò 5ó ð5ð ð
 #ò 
ó ð
ð ð
˜$ò 
ó ð
ð  T¨#¡Yð  °4¸¸U¹Ñ3Dó  ðD	/ ð 	/¨¨U©ô 	/rD   r‘   )rr   Útypingr   r   r   r   r¥   Úlangchain_core._apir   r   Úlangchain_core.embeddingsr	   Úpydanticr
   r   r   r   r\   r{   rŽ   r|   r}   r�   r‡   r   re   r   r‘   r,   rD   r6   Ú<module>r®      s  ðÛ ß ,Ó ,ã ß ;Ý 0ß <Ó <à>Ð Ø2Ð Ø'Ð ØDÐ àBð ð @ð !ð $_Ð  ñ Ø
ØØDôô
g/˜I zó g/óð
g/ñT Ø
ØØDôô
o" I¨zó o"óð
o"ñd Ø
ØØDôô
T"˜y¨*ó T"óð
T"ñn Ø
ØØLôô
P/¨	°:ó P/óñ
P/rD   