
    Ng+	                     T    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	dS )    )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                      j        di | 	 ddlm} ddlm} n"# t          $ r}t          d          |d}~ww xY w ||j        | j        | j	                  | _
        dS )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        i/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/embeddings/modelscope_hub.pyr   zModelScopeEmbeddings.__init__   s    ""6"""	5555557777777 	 	 	C  	
 X$-.
 
 



s   ) 
AAAforbidr   )extraprotected_namespacestextsreturnc                     t          t          d |                    }d|i}|                     |          d         }|                                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                 .    |                      dd          S )N
 )replace)xs    r   <lambda>z6ModelScopeEmbeddings.embed_documents.<locals>.<lambda>5   s    199T3#7#7     source_sentenceinputtext_embedding)listmapr   tolist)r   r!   inputs
embeddingss       r   embed_documentsz$ModelScopeEmbeddings.embed_documents,   sT     S77??@@#U+ZZfZ--.>?
  """r*   textc                     |                     dd          }d|gi}|                     |          d         d         }|                                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:   sS     ||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DD$(NHSM(((
 
 
 
 
 
 
" :H2FF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 0 0 0 0 0 * * * * * * * *?" ?" ?" ?" ?"9j ?" ?" ?" ?" ?"r*   