o
    粪g                     @   sh   d dl mZmZ d dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZ G dd de	Zd	S )
    )AnyList)#AsyncCallbackManagerForRetrieverRunCallbackManagerForRetrieverRun)Document)BaseRetrieverRetrieverLike)
ConfigDict)BaseDocumentCompressorc                	   @   sl   e Zd ZU dZeed< 	 eed< 	 eddZde	de
ded	ee fd
dZde	deded	ee fddZdS )ContextualCompressionRetrieverzARetriever that wraps a base retriever and compresses the results.base_compressorbase_retrieverT)arbitrary_types_allowedqueryrun_managerkwargsreturnc                K   sF   | j j|fdd| ii|}|r!| jj||| d}t|S g S )zGet documents relevant for a query.

        Args:
            query: string to find relevant documents for

        Returns:
            Sequence of relevant documents
        config	callbacksr   )r   invoke	get_childr   compress_documentslistselfr   r   r   docscompressed_docs r   g/var/www/html/chatdoc2/venv/lib/python3.10/site-packages/langchain/retrievers/contextual_compression.py_get_relevant_documents   s   

z6ContextualCompressionRetriever._get_relevant_documentsc                   sT   | j j|fdd| ii|I dH }|r(| jj||| dI dH }t|S g S )zGet documents relevant for a query.

        Args:
            query: string to find relevant documents for

        Returns:
            List of relevant documents
        r   r   Nr   )r   ainvoker   r   acompress_documentsr   r   r   r   r   _aget_relevant_documents7   s   

z7ContextualCompressionRetriever._aget_relevant_documentsN)__name__
__module____qualname____doc__r
   __annotations__r   r	   model_configstrr   r   r   r   r    r   r#   r   r   r   r   r      s6   
 
r   N)typingr   r   langchain_core.callbacksr   r   langchain_core.documentsr   langchain_core.retrieversr   r   pydanticr	   .langchain.retrievers.document_compressors.baser
   r   r   r   r   r   <module>   s    