§
    šŠtj#  ã                   óh   — 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d	S )
é    )ÚAnyÚDictÚListÚOptional)Ú
Embeddings)Ú	BaseModelÚ
ConfigDictÚFieldzBAAI/bge-small-en-v1.5z9Represent this question for searching relevant passages: u9   ä¸ºè¿™ä¸ªå�¥å­�ç”Ÿæˆ�è¡¨ç¤ºä»¥ç”¨äºŽæ£€ç´¢ç›¸å…³æ–‡ç« ï¼šc                   óV  ‡ — 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                 óz  •—  t          ¦   «         j        di |¤Ž 	 ddl}ddlm}m} n+# t          $ r}d}t          d|› d|› d�¦  «        |‚d}~ww xY w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    r1| j                             ¦   «                              d¦  «        | _        d| j
        v rt          | _        dS dS )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          €úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/embeddings/ipex_llm.pyr    zIpexLLMBgeEmbeddings.__init__C   sÒ  ø€ à�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ð	Ø(Ð(Ð(Ð(ØSÐSÐSÐSÐSÐSÐSÐSÐSøåð 
	ð 
	ð 
	àUð õ ð?Ø#+ð?ð ?ð !)ð?ð ?ð ?ñô ð ðøøøøð	
	øøøð ˜4Ô,Ð,Ð,Ø*/ˆDÔ˜hÑ'àÔ˜XÔ&¨nÐ<Ð<ÝðPØ15Ô1BÀ8Ô1LðPð Pð Pñô ð ð
 @Ð+Ô?ØŒOð
ð 
Ø*.Ô*;ð
Ø?CÔ?Pð
ð 
ˆŒð
 $�m D¤KÑ0Ô0ˆŒØ$�n T¤[Ñ1Ô1ˆŒØÔ˜XÔ&¨%Ò/Ð/Øœ+×*Ò*Ñ,Ô,×/Ò/°Ñ6Ô6ˆDŒKà�D”OÐ#Ð#Ý%EˆDÔ"Ð"Ð"ð $Ð#s   œ) ©
A³AÁAÚforbidr   )ÚextraÚprotected_namespacesÚtextsÚreturnc                 óx   ‡ — ˆ fd„|D ¦   «         } ‰ j         j        |fi ‰ j        ¤Ž}|                     ¦   «         S )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.
        c                 óL   •— g | ] }‰j         |                     d d¦  «        z   ‘Œ!S )ú
ú )r   Úreplace)Ú.0Útr)   s     €r-   ú
<listcomp>z8IpexLLMBgeEmbeddings.embed_documents.<locals>.<listcomp>x   s/   ø€ ÐNÐNÐNÀ1�Ô'¨!¯)ª)°D¸#Ñ*>Ô*>Ñ>ÐNÐNÐNó    )r   Úencoder   Útolist)r)   r1   Ú
embeddingss   `  r-   Úembed_documentsz$IpexLLMBgeEmbeddings.embed_documentso   sP   ø€ ð OÐNÐNÐNÈÐNÑNÔNˆØ'�T”[Ô'¨ÐDÐD°Ô1CÐDÐDˆ
Ø× Ò Ñ"Ô"Ð"r;   Útextc                 ó–   — |                      dd¦  «        } | j        j        | j        |z   fi | j        ¤Ž}|                     ¦   «         S )z³Compute query embeddings using a HuggingFace transformer model.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r5   r6   )r7   r   r<   r   r   r=   )r)   r@   Ú	embeddings      r-   Úembed_queryz IpexLLMBgeEmbeddings.embed_query|   s\   € ð �|Š|˜D #Ñ&Ô&ˆØ&�D”KÔ&ØÔ" TÑ)ð
ð 
Ø-1Ô-?ð
ð 
ˆ	ð ×ÒÑ!Ô!Ð!r;   )Ú__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?   rC   Ú__classcell__)r,   s   @r-   r   r      s{  ø€ € € € € € ð!ð !ðF €FˆCÐÐÑØ'€J�Ð'Ð'Ñ'ØØ"&€L�(˜3”-Ð&Ð&Ñ&ðKà#( 5¸Ð#>Ñ#>Ô#>€L�$�s˜C�x”.Ð>Ð>Ñ>Ø1Ø$) E¸$Ð$?Ñ$?Ô$?€M�4˜˜S˜”>Ð?Ð?Ñ?ØRØ=Ð�sÐ=Ð=Ñ=Ø1ØÐ�sÐÐÑØ4ð(F ð (Fð (Fð (Fð (Fð (Fð (FðT �: HÀ2ÐFÑFÔF€Lð# T¨#¤Yð #°4¸¸U¼Ô3Dð #ð #ð #ð #ð" ð "¨¨U¬ð "ð "ð "ð "ð "ð "ð "ð "r;   r   N)Útypingr   r   r   r   Úlangchain_core.embeddingsr   Úpydanticr   r	   r
   rI   rL   r(   r   r   r;   r-   ú<module>rS      s²   ðð -Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1à,Ð à?ð !ð $_Ð  ðy"ð y"ð y"ð y"ð y"˜9 jñ y"ô y"ð y"ð y"ð y"r;   