
    Ng                         d dl Z d dlZ 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 G d dee          ZdS )	    N)AnyDictListLiteralOptional)
Embeddings)pre_init)	BaseModel
ConfigDictz0.2.0c                   L   e Zd ZU dZdZeed<   	 dZeed<   	 dZ	e
e         ed<   	 dZe
e         ed<   	 d	Zed
         ed<   	 dZeed<   	 dZe
e         ed<   	 dZeed<    ed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 )FastEmbedEmbeddingsa  Qdrant FastEmbedding models.

    FastEmbed is a lightweight, fast, Python library built for embedding generation.
    See more documentation at:
    * https://github.com/qdrant/fastembed/
    * https://qdrant.github.io/fastembed/

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

    `pip install fastembed`
    Example:
        from langchain_community.embeddings import FastEmbedEmbeddings
        fastembed = FastEmbedEmbeddings()
    zBAAI/bge-small-en-v1.5
model_namei   
max_lengthN	cache_dirthreadsdefault)r   passagedoc_embed_type   
batch_sizeparallelmodelallow )extraprotected_namespacesvaluesreturnc                    |                     d          }|                     d          }|                     d          }|                     d          }	 t          j        d          }n# t          $ r t	          d          w xY wt          j                            d          t          k     rt	          d          |                    ||||          |d	<   |S )
z+Validate that FastEmbed has been installed.r   r   r   r   	fastembedz\Could not import 'fastembed' Python package. Please install it with `pip install fastembed`.zAFastEmbedEmbeddings requires `pip install -U "fastembed>=0.2.0"`.)r   r   r   r   r   )	get	importlibimport_moduleModuleNotFoundErrorImportErrormetadataversionMIN_VERSIONTextEmbedding)clsr   r   r   r   r   r    s          d/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/embeddings/fastembed.pyvalidate_environmentz(FastEmbedEmbeddings.validate_environmentH   s     ZZ--
ZZ--
JJ{++	**Y''	!/<<II" 	 	 	B  	 %%k22[@@S   $11!!	 2 
 
w s   A+ +Btextsc                     | j         dk    r(| j                            || j        | j                  }n'| j                            || j        | j                  }d |D             S )zGenerate embeddings for documents using FastEmbed.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        r   r   r   c                 6    g | ]}|                                 S r   )tolist).0es     r+   
<listcomp>z7FastEmbedEmbeddings.embed_documents.<locals>.<listcomp>x   s     ///q

///    )r   r   passage_embedr   r   embed)selfr-   
embeddingss      r+   embed_documentsz#FastEmbedEmbeddings.embed_documentsf   sz     )++11$/DM 2  JJ ))$/DM *  J 0/J////r5   textc                     t          | j                            || j        | j                            }|                                S )zGenerate query embeddings using FastEmbed.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r/   )nextr   query_embedr   r   r1   )r8   r;   query_embeddingss      r+   embed_queryzFastEmbedEmbeddings.embed_queryz   sM     (,J""4= #  (
 (

  &&(((r5   )__name__
__module____qualname____doc__r   str__annotations__r   intr   r   r   r   r   r   r   r   r   r   model_configr	   r   r,   r   floatr:   r@   r   r5   r+   r   r      sz          /J... J  $Ix}### "GXc]!!! 5>NG01=== J #Hhsm""" E3:G"EEEL$ 4    X:0T#Y 04U3D 0 0 0 0() )U ) ) ) ) ) )r5   r   )r"   importlib.metadatatypingr   r   r   r   r   numpynplangchain_core.embeddingsr   langchain_core.utilsr	   pydanticr
   r   r(   r   r   r5   r+   <module>rQ      s            5 5 5 5 5 5 5 5 5 5 5 5 5 5     0 0 0 0 0 0 ) ) ) ) ) ) * * * * * * * *{) {) {) {) {))Z {) {) {) {) {)r5   