
    dh6                     `    S SK JrJrJrJr  S SKJr  S SKJrJ	r	J
r
  SrSrSr " S S\\5      rg	)
    )AnyDictListOptional)
Embeddings)	BaseModel
ConfigDictFieldzBAAI/bge-small-en-v1.5z9Represent this question for searching relevant passages: u9   为这个句子生成表示以用于检索相关文章：c                     ^  \ rS rSr% SrSr\\S'   \r	\
\S'    Sr\\
   \S'    \" \S9r\\
\4   \S'    \" \S9r\\
\4   \S	'    \r\
\S
'    Sr\
\S'    S\4U 4S jjr\" SSS9rS\\
   S\\\      4S jrS\
S\\   4S jrSrU =r$ )IpexLLMBgeEmbeddings   aD  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U ]  " S0 UD6   SSKnSSKJnJn  SU R                  ;  a  S	U R                  S'   U R                  S   S
;  a  [        SU R                  S    S35      eUR                  " U R                  4SU R                  0U R                  D6U l        U" U R                  5      U l        U" U R                  5      U l        U R                  S   S:X  a.  U R                  R                  5       R                  S5      U l        SU R                  ;   a  [        U l        gg! [         a  nSn[        SU SU S35      UeSnAff = f)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          _/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/embeddings/ipex_llm.pyr!   IpexLLMBgeEmbeddings.__init__C   sm   "6"	(S 4,,,*/Dh'X&n<1151B1B81L0MQP 
 ,??OO
*.*;*;
?C?P?P

 $DKK0$T[[1X&%/++**,//6DKDOO#%ED" $A  
	U  ##+* -  (z *?? 	
	s   D1 1
E;EEforbidr   )extraprotected_namespacestextsreturnc                     U Vs/ sH!  o R                   UR                  SS5      -   PM#     nnU R                  R                  " U40 U R                  D6nUR                  5       $ s  snf )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   replacer   encoder   tolist)r*   r3   t
embeddingss       r.   embed_documents$IpexLLMBgeEmbeddings.embed_documentso   sb     INN1''!))D#*>>N[[''D1C1CD
  "" Os   'A%textc                     UR                  SS5      nU R                  R                  " U R                  U-   40 U R                  D6nUR                  5       $ )zCompute query embeddings using a HuggingFace transformer model.

Args:
    text: The text to embed.

Returns:
    Embeddings for the text.
r6   r7   )r8   r   r9   r   r   r:   )r*   r?   	embeddings      r.   embed_query IpexLLMBgeEmbeddings.embed_query|   sU     ||D#&KK&&""T)
-1-?-?
	 !!    )r   r   )__name__
__module____qualname____firstlineno____doc__r   r   __annotations__DEFAULT_BGE_MODELr   strr   r   r
   dictr   r   r    DEFAULT_QUERY_BGE_INSTRUCTION_ENr   r   r!   r	   model_configr   floatr=   rB   __static_attributes____classcell__)r-   s   @r.   r   r      s    !F FC'J'"&L(3-&K#(#>L$sCx.>1$)$$?M4S>?R=s=1s4(F (FT H2FL#T#Y #4U3D #" "U " "rD   r   N)typingr   r   r   r   langchain_core.embeddingsr   pydanticr   r	   r
   rK   rN   r)   r   r   rD   r.   <module>rV      s=    - , 0 1 1, ? ! $_  y"9j y"rD   