
    ~
i~                         d dl Z d dlZ d dlmZmZ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Sequencecast)
Embeddings)pre_init)	BaseModel
ConfigDictz0.2.0c                   t   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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	providersmodelallow )extraprotected_namespacesvaluesreturnc                    |                     d          }|                     d          }|                     d          }|                     d          }|                     d          }|rd|v rdnd}	 t          j        d          }n!# t          $ r t	          d	| d
          w xY wt          j                            |          t          k     rt	          d| dt           d          |                    |||||          |d<   |S )z+Validate that FastEmbed has been installed.r   r   r   r   r   CUDAExecutionProviderzfastembed-gpu	fastembedzQCould not import 'fastembed' Python package. Please install it with `pip install z`.z.FastEmbedEmbeddings requires `pip install -U "z>=z"`.)r   r   r   r   r   r   )	get	importlibimport_moduleModuleNotFoundErrorImportErrormetadataversionMIN_VERSIONTextEmbedding)	clsr    r   r   r   r   r   pkg_to_installr$   s	            C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\langchain_community/embeddings/fastembed.pyvalidate_environmentz(FastEmbedEmbeddings.validate_environmentP   sl    ZZ--
ZZ--
JJ{++	**Y''JJ{++	 4	AA O 		!/<<II" 	 	 	J7EJ J J  	 %%n55CCG$2G G6AG G G  
 $11!! 2 
 
w s   5B
 
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                 r    g | ]4}t          t          t                   |                                          5S r   )r	   r   floattolist).0es     r0   
<listcomp>z7FastEmbedEmbeddings.embed_documents.<locals>.<listcomp>   s.    BBB!T%[!((**--BBB    )r   r   passage_embedr   r   embed)selfr2   
embeddingss      r0   embed_documentsz#FastEmbedEmbeddings.embed_documentsv   s{     )++11$/DM 2  JJ ))$/DM *  J CBzBBBBr;   textc                     t          | j                            || j        | j                            }t          t          t                   |                                          S )zGenerate query embeddings using FastEmbed.

        Args:
            text: The text to embed.

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