
    Ng                     |    U d dl mZmZmZmZ d dlZd dlmZ d dl	m
Z
 d dlmZmZ dZeed<    G d d	ee          ZdS )
    )AnyDictListOptionalN)
Embeddings)pre_init)	BaseModel
ConfigDictlaser2LASER_MULTILINGUAL_MODELc                       e Zd ZU dZdZee         ed<   	 dZe	ed<    e
d          Zededefd	            Zd
ee         deee                  fdZdedee         fdZdS )LaserEmbeddingsa  LASER Language-Agnostic SEntence Representations.
    LASER is a Python library developed by the Meta AI Research team
    and used for creating multilingual sentence embeddings for over 147 languages
    as of 2/25/2024
    See more documentation at:
    * https://github.com/facebookresearch/LASER/
    * https://github.com/facebookresearch/LASER/tree/main/laser_encoders
    * https://arxiv.org/abs/2205.12654

    To use this class, you must install the `laser_encoders` Python package.

    `pip install laser_encoders`
    Example:
        from laser_encoders import LaserEncoderPipeline
        encoder = LaserEncoderPipeline(lang="eng_Latn")
        embeddings = encoder.encode_sentences(["Hello", "World"])
    Nlang_encoder_pipelineforbid)extravaluesreturnc                     	 ddl m} |                    d          }|r ||          }n |t                    }||d<   n"# t          $ r}t	          d          |d}~ww xY w|S )	z0Validate that laser_encoders has been installed.r   )LaserEncoderPipeliner   )r   )laserr   zfCould not import 'laser_encoders' Python package. Please install it with `pip install laser_encoders`.N)laser_encodersr   getr   ImportError)clsr   r   r   encoder_pipelinees         `/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/embeddings/laser.pyvalidate_environmentz$LaserEmbeddings.validate_environment,   s    	;;;;;;::f%%D X#7#7T#B#B#B  #7#7>V#W#W#W *:F&'' 	 	 	G  	
 s   A A 
A"AA"textsc                 ^    | j                             |          }|                                S )zGenerate embeddings for documents using LASER.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        r   encode_sentencestolist)selfr    
embeddingss      r   embed_documentszLaserEmbeddings.embed_documents@   s,     +<<UCC
  """    textc                 l    | j                             |g          }|                                d         S )zGenerate single query text embeddings using LASER.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r   r"   )r%   r)   query_embeddingss      r   embed_queryzLaserEmbeddings.embed_queryN   s4      1BBD6JJ&&((++r(   )__name__
__module____qualname____doc__r   r   str__annotations__r   r   r
   model_configr   r   r   r   floatr'   r,    r(   r   r   r      s          $ D(3- "s!!!:  L $ 4    X&#T#Y #4U3D # # # #, ,U , , , , , ,r(   r   )typingr   r   r   r   numpynplangchain_core.embeddingsr   langchain_core.utilsr   pydanticr	   r
   r   r1   r2   r   r5   r(   r   <module>r<      s    , , , , , , , , , , , , ,     0 0 0 0 0 0 ) ) ) ) ) ) * * * * * * * * ( # ( ( (N, N, N, N, N,i N, N, N, N, N,r(   