Ë
    µŒj6  ã                   ó`   — 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dZdZ G d„ dee«      Zy	)
é    )ÚAnyÚDictÚListÚOptional)Ú
Embeddings)Ú	BaseModelÚ
ConfigDictÚFieldzBAAI/bge-small-en-v1.5z9Represent this question for searching relevant passages: u9   ä¸ºè¿™ä¸ªå�¥å­�ç”Ÿæˆ�è¡¨ç¤ºä»¥ç”¨äºŽæ£€ç´¢ç›¸å…³æ–‡ç« ï¼š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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 )ÚIpexLLMBgeEmbeddingsa¨  Wrapper around the BGE embedding model
    with IPEX-LLM optimizations on Intel CPUs and GPUs.

    To use, you should have the ``ipex-llm``
    and ``sentence_transformers`` package installed. Refer to
    `here <https://python.langchain.com/v0.1/docs/integrations/text_embedding/ipex_llm/>`_
    for installation on Intel CPU.

    Example on Intel CPU:
        .. code-block:: python

            from langchain_community.embeddings import IpexLLMBgeEmbeddings

            embedding_model = IpexLLMBgeEmbeddings(
                model_name="BAAI/bge-large-en-v1.5",
                model_kwargs={},
                encode_kwargs={"normalize_embeddings": True},
            )

    Refer to
    `here <https://python.langchain.com/v0.1/docs/integrations/text_embedding/ipex_llm_gpu/>`_
    for installation on Intel GPU.

    Example on Intel GPU:
        .. code-block:: python

            from langchain_community.embeddings import IpexLLMBgeEmbeddings

            embedding_model = IpexLLMBgeEmbeddings(
                model_name="BAAI/bge-large-en-v1.5",
                model_kwargs={"device": "xpu"},
                encode_kwargs={"normalize_embeddings": True},
            )
    NÚclientÚ
model_nameÚcache_folder)Údefault_factoryÚmodel_kwargsÚencode_kwargsÚquery_instructionÚ Úembed_instructionÚkwargsc                 óž  •— t        ‰| �  di |¤Ž 	 ddl}ddlm}m} d| j                  vrd	| j                  d<   | j                  d   d
vrt        d| j                  d   › d�«      ‚ |j                  | j                  fd| j                  i| j                  ¤Ž| _         || j                  «      | _         || j                  «      | _        | j                  d   dk(  r.| j                  j                  «       j                  d«      | _        d| j                  v rt        | _        yy# t        $ r}d}t        d|› d|› d�«      |‚d}~ww xY w)z$Initialize the sentence_transformer.r   N)Ú_optimize_postÚ_optimize_prezChttps://python.langchain.com/v0.1/docs/integrations/text_embedding/zDCould not import ipex_llm or sentence_transformers. Please refer to zD/ipex_llm/ for install required packages on Intel CPU. And refer to z;/ipex_llm_gpu/ for install required packages on Intel GPU. ÚdeviceÚcpu)r   ÚxpuzXIpexLLMBgeEmbeddings currently only supports device to be 'cpu' or 'xpu', but you have: Ú.r   r   z-zh© )ÚsuperÚ__init__Úsentence_transformersÚipex_llm.transformers.convertr   r   ÚImportErrorr   Ú
ValueErrorÚSentenceTransformerr   r   r   ÚhalfÚtoÚ DEFAULT_QUERY_BGE_INSTRUCTION_ZHr   )Úselfr   r!   r   r   ÚexcÚbase_urlÚ	__class__s          €úq/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/embeddings/ipex_llm.pyr    zIpexLLMBgeEmbeddings.__init__C   sq  ø€ ä‰ÑÑ"˜6Ò"ð	Û(ßSð ˜4×,Ñ,Ñ,Ø*/ˆD×Ñ˜hÑ'à×Ñ˜XÑ&¨nÑ<Üð1Ø15×1BÑ1BÀ8Ñ1LÐ0MÈQðPóð ð
 @Ð+×?Ñ?Ø�O‰Oñ
Ø*.×*;Ñ*;ð
Ø?C×?PÑ?Pñ
ˆŒñ
 $ D§K¡KÓ0ˆŒÙ$ T§[¡[Ó1ˆŒØ×Ñ˜XÑ&¨%Ò/ØŸ+™+×*Ñ*Ó,×/Ñ/°Ó6ˆDŒKà�D—O‘OÑ#Ü%EˆDÕ"ð $øôA ò 
	àUð ô ð#Ø#+ *ð - à (˜zð *?ð?óð ðûð	
	ús   ’D) Ä)	EÄ2EÅEÚforbidr   )ÚextraÚprotected_namespacesÚtextsÚreturnc                 óÒ   — |D �cg c]!  }| j                   |j                  dd«      z   ‘Œ# }} | j                  j                  |fi | j                  ¤Ž}|j                  «       S c c}w )zÉ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   Úreplacer   Úencoder   Útolist)r)   r1   ÚtÚ
embeddingss       r-   Úembed_documentsz$IpexLLMBgeEmbeddings.embed_documentso   sf   € ñ INÓNÉÀ1�×'Ñ'¨!¯)©)°D¸#Ó*>Ó>ÈˆÐNØ'�T—[‘[×'Ñ'¨ÑD°×1CÑ1CÑDˆ
Ø× Ñ Ó"Ð"ùò Os   …&A$Útextc                 ó®   — |j                  dd«      } | j                  j                  | j                  |z   fi | j                  ¤Ž}|j                  «       S )z³Compute query embeddings using a HuggingFace transformer model.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r4   r5   )r6   r   r7   r   r   r8   )r)   r<   Ú	embeddings      r-   Úembed_queryz IpexLLMBgeEmbeddings.embed_query|   sW   € ð �|‰|˜D #Ó&ˆØ&�D—K‘K×&Ñ&Ø×"Ñ" TÑ)ñ
Ø-1×-?Ñ-?ñ
ˆ	ð ×ÑÓ!Ð!ó    )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__annotations__ÚDEFAULT_BGE_MODELr   Ústrr   r   r
   Údictr   r   r   Ú DEFAULT_QUERY_BGE_INSTRUCTION_ENr   r   r    r	   Úmodel_configr   Úfloatr;   r?   Ú__classcell__)r,   s   @r-   r   r      sÚ   ø… ñ!ðF €FˆCÓØ'€J�Ó'ØØ"&€L�(˜3‘-Ó&ðKá#(¸Ô#>€L�$�s˜C�x‘.Ó>Ø1Ù$)¸$Ô$?€M�4˜˜S˜‘>Ó?ØRØ=Ð�sÓ=Ø1ØÐ�sÓØ4ð(F õ (FñT  HÀ2ÔF€Lð# T¨#¡Yð #°4¸¸U¹Ñ3Dó #ð" ð "¨¨U©÷ "r@   r   N)Útypingr   r   r   r   Úlangchain_core.embeddingsr   Úpydanticr   r	   r
   rF   rI   r(   r   r   r@   r-   Ú<module>rP      s=   ð÷ -Ó ,å 0ß 1Ñ 1à,Ð à?ð !ð $_Ð  ôy"˜9 jõ y"r@   