
    Zǻi                    R    d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	  G d de      Z
y)    )annotations)ABCabstractmethod)Optional)DEFAULT_RATE_LIMIT_HANDLERRateLimitHandlerc                  4    e Zd ZdZdddZedd       ZddZy)	Embedderz
    Interface for embedding models.
    An embedder passed into a retriever must implement this interface.

    Args:
        rate_limit_handler (Optional[RateLimitHandler]): Handler for rate limiting. Defaults to retry with exponential backoff.
    Nc                .    ||| _         y t        | _         y N)_rate_limit_handlerr   )selfrate_limit_handlers     \/opt/lhia/marcimex/agent/venv/lib/python3.12/site-packages/neo4j_graphrag/embeddings/base.py__init__zEmbedder.__init__#   s    )'9D$'AD$    c                     y)zEmbed query text.

        Args:
            text (str): Text to convert to vector embedding

        Returns:
            list[float]: A vector embedding.
        N r   texts     r   embed_queryzEmbedder.embed_query)   s    r   c                ,   K   | j                  |      S w)zAsynchronously embed query text.

        Args:
            text (str): Text to convert to vector embedding

        Returns:
            list[float]: A vector embedding.
        )r   r   s     r   async_embed_queryzEmbedder.async_embed_query4   s      %%s   r   )r   zOptional[RateLimitHandler])r   strreturnzlist[float])__name__
__module____qualname____doc__r   r   r   r   r   r   r   r
   r
      s&    B  	&r   r
   N)
__future__r   abcr   r   typingr   neo4j_graphrag.utils.rate_limitr   r   r
   r   r   r   <module>r$      s!    # # #&s #&r   