a
    bg
                     @   s\   d Z ddlmZmZmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ G dd de
Zd	S )
zWrapper around Dria Retriever.    )AnyListOptional)CallbackManagerForRetrieverRunDocument)BaseRetriever)DriaAPIWrapperc                       sx   e Zd ZU dZeed< deee ed fddZ	deeeeed	d
dZ
eddddZeeee dddZ  ZS )DriaRetrieverz*`Dria` retriever using the DriaAPIWrapper.api_wrapperN)api_keycontract_idkwargsc                    s&   t ||d}t jf d|i| dS )z
        Initialize the DriaRetriever with a DriaAPIWrapper instance.

        Args:
            api_key: The API key for Dria.
            contract_id: The contract ID of the knowledge base to interact with.
        )r   r   r   N)r	   super__init__)selfr   r   r   r   	__class__ w/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/retrievers/dria_index.pyr      s    zDriaRetriever.__init__Unspecifiedjina)namedescriptioncategory	embeddingreturnc                 C   s   | j ||||}|S )aw  Create a new knowledge base in Dria.

        Args:
            name: The name of the knowledge base.
            description: The description of the knowledge base.
            category: The category of the knowledge base.
            embedding: The embedding model to use for the knowledge base.


        Returns:
            The ID of the created knowledge base.
        )r   create_knowledge_base)r   r   r   r   r   responser   r   r   r      s    z#DriaRetriever.create_knowledge_base)textsr   c                 C   s   dd |D }| j | dS )zAdd texts to the Dria knowledge base.

        Args:
            texts: An iterable of texts and metadatas to add to the knowledge base.

        Returns:
            List of IDs representing the added texts.
        c                 S   s   g | ]}|d  |d dqS )textmetadata)r    r!   r   ).0r    r   r   r   
<listcomp>@       z+DriaRetriever.add_texts.<locals>.<listcomp>N)r   Zinsert_data)r   r   datar   r   r   	add_texts4   s    zDriaRetriever.add_texts)queryrun_managerr   c                C   s   | j |}dd |D }|S )a*  Retrieve relevant documents from Dria based on a query.

        Args:
            query: The query string to search for in the knowledge base.
            run_manager: Callback manager for the retriever run.

        Returns:
            A list of Documents containing the search results.
        c                 S   s*   g | ]"}t |d  |d |d ddqS )r!   idscore)r)   r*   )Zpage_contentr!   r   )r"   resultr   r   r   r#   P   s
   z9DriaRetriever._get_relevant_documents.<locals>.<listcomp>)r   search)r   r'   r(   resultsdocsr   r   r   _get_relevant_documentsC   s
    z%DriaRetriever._get_relevant_documents)N)r   r   )__name__
__module____qualname____doc__r	   __annotations__strr   r   r   r   r   r&   r   r   r/   __classcell__r   r   r   r   r
      s$   
  r
   N)r3   typingr   r   r   Zlangchain_core.callbacksr   Zlangchain_core.documentsr   Zlangchain_core.retrieversr   Zlangchain_community.utilitiesr	   r
   r   r   r   r   <module>   s   