[docs]classBaseDocumentCompressor(BaseModel,ABC):"""Base class for document compressors. This abstraction is primarily used for post-processing of retrieved documents. Documents matching a given query are first retrieved. Then the list of documents can be further processed. For example, one could re-rank the retrieved documents using an LLM. **Note** users should favor using a RunnableLambda instead of sub-classing from this interface. """
[docs]@abstractmethoddefcompress_documents(self,documents:Sequence[Document],query:str,callbacks:Optional[Callbacks]=None,)->Sequence[Document]:"""Compress retrieved documents given the query context. Args: documents: The retrieved documents. query: The query context. callbacks: Optional callbacks to run during compression. Returns: The compressed documents. """
[docs]asyncdefacompress_documents(self,documents:Sequence[Document],query:str,callbacks:Optional[Callbacks]=None,)->Sequence[Document]:"""Async compress retrieved documents given the query context. Args: documents: The retrieved documents. query: The query context. callbacks: Optional callbacks to run during compression. Returns: The compressed documents. """returnawaitrun_in_executor(None,self.compress_documents,documents,query,callbacks)