
    7|h~                         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y)	    N)AnyDictListLiteralOptionalSequencecast)
Embeddings)pre_init)	BaseModel
ConfigDictz0.2.0c                   *   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y)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                    |j                  d      }|j                  d      }|j                  d      }|j                  d      }|j                  d      }|rd|v rdnd}	 t        j                  d      }t        j
                  j                  |      t        k  rt	        d| dt         d      |j                  |||||      |d<   |S # t        $ r t	        d	| d
      w xY w)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	            g/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/embeddings/fastembed.pyvalidate_environmentz(FastEmbedEmbeddings.validate_environmentP   s    ZZ-
ZZ-
JJ{+	**Y'JJ{+	 4	A  		!//<I %%n5C$$2#32k]#G 
 $11!! 2 
w ' # 	77E6FbJ 	s   !C C&textsc                 Z   | j                   dk(  r3| j                  j                  || j                  | j                        }n2| j                  j                  || j                  | j                        }|D cg c]'  }t        t        t           |j                               ) c}S c c}w )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   )
r   r   passage_embedr   r   embedr	   r   floattolist)selfr2   
embeddingses       r0   embed_documentsz#FastEmbedEmbeddings.embed_documentsv   s     )+11$//DMM 2 J ))$//DMM * J 8BB!T%[!((*-BBBs   9,B(textc                     t        | j                  j                  || j                  | j                              }t        t        t           |j                               S )zGenerate query embeddings using FastEmbed.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r4   )	nextr   query_embedr   r   r	   r   r7   r8   )r9   r=   query_embeddingss      r0   embed_queryzFastEmbedEmbeddings.embed_query   sR     (,JJ""4== # (

 DK!1!8!8!:;;    )__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   r7   r<   rB   r   rC   r0   r   r      s    /J. J  $Ix}# "GXc]! 5>NG01= J #Hhsm" *.Ix&- E3G"EL#$ #4 # #JCT#Y C4U3D C(< <U <rC   r   )r&   importlib.metadatatypingr   r   r   r   r   r   r	   numpynplangchain_core.embeddingsr
   langchain_core.utilsr   pydanticr   r   r,   r   r   rC   r0   <module>rS      s5      E E E  0 ) *K<)Z K<rC   