§
    šŠtjj  ã                   óŒ   — 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	            úf/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/embeddings/fastembed.pyÚvalidate_environmentz(FastEmbedEmbeddings.validate_environmentP   sl  € ð —Z’Z Ñ-Ô-ˆ
Ø—Z’Z Ñ-Ô-ˆ
Ø—J’J˜{Ñ+Ô+ˆ	Ø—*’*˜YÑ'Ô'ˆØ—J’J˜{Ñ+Ô+ˆ	ð ðØ4¸	ÐAÐAð ˆOàð 	ð	Ý!Ô/°Ñ<Ô<ˆIˆIøå"ð 	ð 	ð 	Ýð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 )z¾Generate 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Ø $¤/¸D¼Mð 2ñ ô ˆJˆJð œ×)Ò)Ø $¤/¸D¼Mð *ñ ô ˆJð CÐB°zÐBÑBÔBÐBr;   Útextc                 óÎ   — t          | j                             || j        | j        ¬¦  «        ¦  «        }t          t          t                   |                     ¦   «         ¦  «        S )zžGenerate 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�ÐÐÑðð  $€Iˆx˜Œ}Ð#Ð#Ñ#ðð "€GˆX�cŒ]Ð!Ð!Ñ!ðð 5>€N�GÐ0Ô1Ð=Ð=Ñ=ðð €J�ÐÐÑðð #€Hˆh�sŒmÐ"Ð"Ñ"ðð *.€Iˆx˜ œÔ&Ð-Ð-Ñ-ðð €Eˆ3ÐÐÑà�: GÀ"ÐEÑEÔE€Làð#¨$ð #°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;   