
    7|h+	                     L    d dl mZmZmZ d dlmZ d dlmZmZ  G d dee      Z	y)    )AnyListOptional)
Embeddings)	BaseModel
ConfigDictc                        e Zd ZU dZdZeed<   dZeed<   	 dZ	e
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 )ModelScopeEmbeddingsa  ModelScopeHub embedding models.

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

    Example:
        .. code-block:: python

            from langchain_community.embeddings import ModelScopeEmbeddings
            model_id = "damo/nlp_corom_sentence-embedding_english-base"
            embed = ModelScopeEmbeddings(model_id=model_id, model_revision="v1.0.0")
    Nembedz.damo/nlp_corom_sentence-embedding_english-basemodel_idmodel_revisionkwargsc                     t        |   di | 	 ddlm} ddlm}  ||j                  | j                  | j                        | _
        y# t        $ r}t        d      |d}~ww xY w)zInitialize the modelscoper   )pipeline)TaskszVCould not import some python packages.Please install it with `pip install modelscope`.N)modelr    )super__init__modelscope.pipelinesr   modelscope.utils.constantr   ImportErrorsentence_embeddingr   r   r   )selfr   r   r   e	__class__s        l/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/embeddings/modelscope_hub.pyr   zModelScopeEmbeddings.__init__   so    "6"	57 $$--..

  	C 	s   A 	A'A""A'forbidr   )extraprotected_namespacestextsreturnc                     t        t        d |            }d|i}| j                  |      d   }|j                         S )zCompute doc embeddings using a modelscope embedding model.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        c                 &    | j                  dd      S )N
 )replace)xs    r   <lambda>z6ModelScopeEmbeddings.embed_documents.<locals>.<lambda>5   s    199T3#7     source_sentenceinputtext_embedding)listmapr   tolist)r   r!   inputs
embeddingss       r   embed_documentsz$ModelScopeEmbeddings.embed_documents,   sE     S7?@#U+ZZfZ-.>?
  ""r*   textc                     |j                  dd      }d|gi}| j                  |      d   d   }|j                         S )zCompute query embeddings using a modelscope embedding model.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r%   r&   r+   r,   r.   r   )r'   r   r1   )r   r5   r2   	embeddings       r   embed_queryz ModelScopeEmbeddings.embed_query:   sJ     ||D#&#dV,JJVJ,-=>qA	!!r*   )__name__
__module____qualname____doc__r   r   __annotations__r   strr   r   r   r   model_configr   floatr4   r8   __classcell__)r   s   @r   r
   r
      s    
 E3DHcD$(NHSM(
 
" H2FL#T#Y #4U3D #" "U "r*   r
   N)
typingr   r   r   langchain_core.embeddingsr   pydanticr   r   r
   r   r*   r   <module>rE      s    & & 0 *?"9j ?"r*   