
    7|h                     x    U d dl mZ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y)
    )AnyDictListOptionalcastN)
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y)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} |j                  d      }|r
 ||      }n |t              }||d<   |S # t        $ r}t	        d      |d}~ww xY w)	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         c/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/embeddings/laser.pyvalidate_environmentz$LaserEmbeddings.validate_environment,   sn    	;::f%D#7T#B #7>V#W *:F&'   	G 	s   59 	AAAtextsc                     | j                   j                  |      }t        t        t        t              |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_sentencesr   r   floattolist)selfr!   
embeddingss      r   embed_documentszLaserEmbeddings.embed_documents@   s9     ++<<UC
De%z'8'8':;;    textc                     | j                   j                  |g      }t        t        t        t              |j                               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   sB      11BBD6JDe%'7'>'>'@A!DDr*   )__name__
__module____qualname____doc__r   r   str__annotations__r   r   r   model_configr	   r   r    r   r%   r)   r.    r*   r   r   r      s    $ D(3- "s!L $ 4  &<T#Y <4U3D <E EU Er*   r   )typingr   r   r   r   r   numpynplangchain_core.embeddingsr   langchain_core.utilsr	   pydanticr
   r   r   r3   r4   r   r6   r*   r   <module>r=      s4    2 2  0 ) * ( # (NEi NEr*   