U
    h                     @   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                   @   s\   e Zd ZU dZeed< ee dddZee	 eee  dddZ
e	ee d	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   G/tmp/pip-unpacked-wheel-9gdii04g/langchain_community/embeddings/fake.py_get_embedding   s    zFakeEmbeddings._get_embeddingtextsr   c                    s    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   s    zFakeEmbeddings.embed_documentstextr   c                 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                   @   sn   e Zd ZU dZeed< eee dddZe	edddZ
ee	 eee  d	d
dZe	ee d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	hexdigestr   r   r   r   	_get_seed'   s    z$DeterministicFakeEmbedding._get_seedr   c                    s    fdd|D S )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   -   s    z*DeterministicFakeEmbedding.embed_documentsc                 C   s   | j | |dS )Nr/   r0   r   r   r   r   r   0   s    z&DeterministicFakeEmbedding.embed_queryN)r   r    r!   r"   r#   r$   r   r%   r   r&   r.   r   r   r   r   r   r   r'      s   
r'   )r*   typingr   Znumpyr
   Zlangchain_core.embeddingsr   Zlangchain_core.pydantic_v1r   r   r'   r   r   r   r   <module>   s   