
    Ig                     |    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y)	    N)AnyDictListLiteralOptional)
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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modelallow )extraprotected_namespacesvaluesreturnc                 |   |j                  d      }|j                  d      }|j                  d      }|j                  d      }	 t        j                  d      }t        j
                  j                  d      t        k  rt	        d      |j                  ||||      |d	<   |S # t        $ r t	        d      w xY w)
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          e/var/www/html/answerous/venv/lib/python3.12/site-packages/langchain_community/embeddings/fastembed.pyvalidate_environmentz(FastEmbedEmbeddings.validate_environmentH   s     ZZ-
ZZ-
JJ{+	**Y'	!//<I %%k2[@S  $11!!	 2 
w # # 	B 	s   B& &B;textsc                 0   | j                   dk(  r3| j                  j                  || j                  | j                        }n2| j                  j                  || j                  | j                        }|D cg c]  }|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   embedtolist)selfr-   
embeddingses       r+   embed_documentsz#FastEmbedEmbeddings.embed_documentsf   s     )+11$//DMM 2 J ))$//DMM * J %//q
///s   9Btextc                     t        | j                  j                  || 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   r2   )r3   r7   query_embeddingss      r+   embed_queryzFastEmbedEmbeddings.embed_queryz   sF     (,JJ""4== # (

  &&((    )__name__
__module____qualname____doc__r   str__annotations__r   intr   r   r   r   r   r   r   r   r   r   model_configr	   r   r,   r   floatr6   r<   r   r=   r+   r   r      s     /J. J  $Ix}# "GXc]! 5>NG01= J #Hhsm" E3G"EL$ 4  :0T#Y 04U3D 0() )U )r=   r   )r"   importlib.metadatatypingr   r   r   r   r   numpynplangchain_core.embeddingsr   langchain_core.utilsr	   pydanticr
   r   r(   r   r   r=   r+   <module>rN      s2      5 5  0 ) *{))Z {)r=   