Home / Class/ ContextualCompressionRetriever Class — langchain Architecture

ContextualCompressionRetriever Class — langchain Architecture

Architecture documentation for the ContextualCompressionRetriever class in contextual_compression.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  a72ed538_14ed_ca72_449e_79f0b4ec0262["ContextualCompressionRetriever"]
  3a20478a_3692_141f_433b_a32429b00020["BaseRetriever"]
  a72ed538_14ed_ca72_449e_79f0b4ec0262 -->|extends| 3a20478a_3692_141f_433b_a32429b00020
  90a392be_990f_c062_428a_77d9ff956b44["contextual_compression.py"]
  a72ed538_14ed_ca72_449e_79f0b4ec0262 -->|defined in| 90a392be_990f_c062_428a_77d9ff956b44
  3512fa71_906e_cd7a_f242_4073e815d9ed["_get_relevant_documents()"]
  a72ed538_14ed_ca72_449e_79f0b4ec0262 -->|method| 3512fa71_906e_cd7a_f242_4073e815d9ed
  118a8bdb_e78f_28b2_4f17_28fa0abbb067["_aget_relevant_documents()"]
  a72ed538_14ed_ca72_449e_79f0b4ec0262 -->|method| 118a8bdb_e78f_28b2_4f17_28fa0abbb067

Relationship Graph

Source Code

libs/langchain/langchain_classic/retrievers/contextual_compression.py lines 13–68

class ContextualCompressionRetriever(BaseRetriever):
    """Retriever that wraps a base retriever and compresses the results."""

    base_compressor: BaseDocumentCompressor
    """Compressor for compressing retrieved documents."""

    base_retriever: RetrieverLike
    """Base Retriever to use for getting relevant documents."""

    model_config = ConfigDict(
        arbitrary_types_allowed=True,
    )

    @override
    def _get_relevant_documents(
        self,
        query: str,
        *,
        run_manager: CallbackManagerForRetrieverRun,
        **kwargs: Any,
    ) -> list[Document]:
        docs = self.base_retriever.invoke(
            query,
            config={"callbacks": run_manager.get_child()},
            **kwargs,
        )
        if docs:
            compressed_docs = self.base_compressor.compress_documents(
                docs,
                query,
                callbacks=run_manager.get_child(),
            )
            return list(compressed_docs)
        return []

    @override
    async def _aget_relevant_documents(
        self,
        query: str,
        *,
        run_manager: AsyncCallbackManagerForRetrieverRun,
        **kwargs: Any,
    ) -> list[Document]:
        docs = await self.base_retriever.ainvoke(
            query,
            config={"callbacks": run_manager.get_child()},
            **kwargs,
        )
        if docs:
            compressed_docs = await self.base_compressor.acompress_documents(
                docs,
                query,
                callbacks=run_manager.get_child(),
            )
            return list(compressed_docs)
        return []

Extends

Frequently Asked Questions

What is the ContextualCompressionRetriever class?
ContextualCompressionRetriever is a class in the langchain codebase, defined in libs/langchain/langchain_classic/retrievers/contextual_compression.py.
Where is ContextualCompressionRetriever defined?
ContextualCompressionRetriever is defined in libs/langchain/langchain_classic/retrievers/contextual_compression.py at line 13.
What does ContextualCompressionRetriever extend?
ContextualCompressionRetriever extends BaseRetriever.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free