o
    Zh                     @   s\   d dl Z d dlmZ d dlZd dlmZ d dlmZ G dd deeZ	G dd deeZ
dS )	    N)List)
Embeddings)	BaseModelc                   @   sb   e Zd ZU dZeed< 	 dee fddZdee	 deee  fddZ
d	e	dee fd
dZdS )FakeEmbeddingszFake embedding model.sizereturnc                 C   s   t tjj| jdS N)r   )listnprandomnormalr   self r   Z/var/www/html/lang_env/lib/python3.10/site-packages/langchain_community/embeddings/fake.py_get_embedding   s   zFakeEmbeddings._get_embeddingtextsc                        fdd|D S )Nc                    s   g | ]}   qS r   r   .0_r   r   r   
<listcomp>   s    z2FakeEmbeddings.embed_documents.<locals>.<listcomp>r   r   r   r   r   r   embed_documents      zFakeEmbeddings.embed_documentstextc                 C   s   |   S )Nr   r   r   r   r   r   embed_query   s   zFakeEmbeddings.embed_queryN)__name__
__module____qualname____doc__int__annotations__r   floatr   strr   r   r   r   r   r   r   	   s   
 r   c                   @   s|   e Zd ZU dZeed< 	 dedee fddZe	de
defdd	Zd
ee
 deee  fddZde
dee fddZdS )DeterministicFakeEmbeddingzc
    Fake embedding model that always returns
    the same embedding vector for the same text.
    r   seedr   c                 C   s    t j| tt jj| jdS r   )r
   r   r(   r	   r   r   )r   r(   r   r   r   r   "   s   z)DeterministicFakeEmbedding._get_embeddingr   c                 C   s   t t| d dd S )zR
        Get a seed for the random generator, using the hash of the text.
        zutf-8   i )r#   hashlibsha256encode	hexdigest)r   r   r   r   	_get_seed'   s   z$DeterministicFakeEmbedding._get_seedr   c                    r   )Nc                    s   g | ]} j  |d qS )r(   r   r.   r   r   r   r   r   /   s    z>DeterministicFakeEmbedding.embed_documents.<locals>.<listcomp>r   r   r   r   r   r   .   r   z*DeterministicFakeEmbedding.embed_documentsc                 C   s   | j | |dS )Nr/   r0   r   r   r   r   r   1   r   z&DeterministicFakeEmbedding.embed_queryN)r   r    r!   r"   r#   r$   r   r%   r   staticmethodr&   r.   r   r   r   r   r   r   r'      s   
 r'   )r*   typingr   numpyr
   Zlangchain_core.embeddingsr   Zpydanticr   r   r'   r   r   r   r   <module>   s    