Home / Class/ RetrieversIntegrationTests Class — langchain Architecture

RetrieversIntegrationTests Class — langchain Architecture

Architecture documentation for the RetrieversIntegrationTests class in retrievers.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  832b9ba1_75e8_ad0c_71b4_3f5c6d4c0825["RetrieversIntegrationTests"]
  16d6f571_58aa_6b96_bef7_b3936b2b5e8e["BaseStandardTests"]
  832b9ba1_75e8_ad0c_71b4_3f5c6d4c0825 -->|extends| 16d6f571_58aa_6b96_bef7_b3936b2b5e8e
  38b769c4_c07d_3256_6870_9c6ee6931708["Document"]
  832b9ba1_75e8_ad0c_71b4_3f5c6d4c0825 -->|extends| 38b769c4_c07d_3256_6870_9c6ee6931708
  59f967db_9955_5bd5_8903_5fa19fb4ac25["retrievers.py"]
  832b9ba1_75e8_ad0c_71b4_3f5c6d4c0825 -->|defined in| 59f967db_9955_5bd5_8903_5fa19fb4ac25
  adeb6914_7bba_a87e_a89d_2a30f011db48["retriever_constructor()"]
  832b9ba1_75e8_ad0c_71b4_3f5c6d4c0825 -->|method| adeb6914_7bba_a87e_a89d_2a30f011db48
  062e47ae_cc2e_5c0f_a638_ad275a330961["retriever_constructor_params()"]
  832b9ba1_75e8_ad0c_71b4_3f5c6d4c0825 -->|method| 062e47ae_cc2e_5c0f_a638_ad275a330961
  de2c2fbe_6cdd_87c5_3ccd_7101aa4d5ee0["retriever_query_example()"]
  832b9ba1_75e8_ad0c_71b4_3f5c6d4c0825 -->|method| de2c2fbe_6cdd_87c5_3ccd_7101aa4d5ee0
  5b35e19e_9b3e_d1c6_aaa8_cc0ac8aa3ea2["num_results_arg_name()"]
  832b9ba1_75e8_ad0c_71b4_3f5c6d4c0825 -->|method| 5b35e19e_9b3e_d1c6_aaa8_cc0ac8aa3ea2
  2fe826f8_afb9_94d0_049e_ba8fab6d94f8["retriever()"]
  832b9ba1_75e8_ad0c_71b4_3f5c6d4c0825 -->|method| 2fe826f8_afb9_94d0_049e_ba8fab6d94f8
  80c8db8c_8df3_1aaf_56b0_287bde684eda["test_k_constructor_param()"]
  832b9ba1_75e8_ad0c_71b4_3f5c6d4c0825 -->|method| 80c8db8c_8df3_1aaf_56b0_287bde684eda
  d2c2c5dd_4f95_a639_ec1d_0d837291f8ad["test_invoke_with_k_kwarg()"]
  832b9ba1_75e8_ad0c_71b4_3f5c6d4c0825 -->|method| d2c2c5dd_4f95_a639_ec1d_0d837291f8ad
  b92f403e_0965_3fa6_8d00_cb059ae4ee97["test_invoke_returns_documents()"]
  832b9ba1_75e8_ad0c_71b4_3f5c6d4c0825 -->|method| b92f403e_0965_3fa6_8d00_cb059ae4ee97
  1a0dc84e_6261_4328_12f3_b49b658a3589["test_ainvoke_returns_documents()"]
  832b9ba1_75e8_ad0c_71b4_3f5c6d4c0825 -->|method| 1a0dc84e_6261_4328_12f3_b49b658a3589

Relationship Graph

Source Code

libs/standard-tests/langchain_tests/integration_tests/retrievers.py lines 13–182

class RetrieversIntegrationTests(BaseStandardTests):
    """Base class for retrievers integration tests."""

    @property
    @abstractmethod
    def retriever_constructor(self) -> type[BaseRetriever]:
        """A `BaseRetriever` subclass to be tested."""
        ...

    @property
    def retriever_constructor_params(self) -> dict[str, Any]:
        """Returns a dictionary of parameters to pass to the retriever constructor."""
        return {}

    @property
    @abstractmethod
    def retriever_query_example(self) -> str:
        """Returns a str representing the `query` of an example retriever call."""

    @property
    def num_results_arg_name(self) -> str:
        """Returns the name of the parameter for the number of results returned.

        Usually something like `k` or `top_k`.

        """
        return "k"

    @pytest.fixture
    def retriever(self) -> BaseRetriever:
        """Return retriever fixture."""
        return self.retriever_constructor(**self.retriever_constructor_params)

    def test_k_constructor_param(self) -> None:
        """Test the number of results constructor parameter.

        Test that the retriever constructor accepts a parameter representing
        the number of documents to return.

        By default, the parameter tested is named `k`, but it can be overridden by
        setting the `num_results_arg_name` property.

        !!! note
            If the retriever doesn't support configuring the number of results returned
            via the constructor, this test can be skipped using a pytest `xfail` on
            the test class:

            ```python
            @pytest.mark.xfail(
                reason="This retriever doesn't support setting "
                "the number of results via the constructor."
            )
            def test_k_constructor_param(self) -> None:
                raise NotImplementedError
            ```

        ??? note "Troubleshooting"

            If this test fails, the retriever constructor does not accept a number
            of results parameter, or the retriever does not return the correct number
            of documents ( of the one set in `num_results_arg_name`) when it is
            set.

            For example, a retriever like...

            ```python
            MyRetriever(k=3).invoke("query")
            ```

            ...should return 3 documents when invoked with a query.

        """
        params = {
            k: v
            for k, v in self.retriever_constructor_params.items()
            if k != self.num_results_arg_name
        }
        params_3 = {**params, self.num_results_arg_name: 3}
        retriever_3 = self.retriever_constructor(**params_3)
        result_3 = retriever_3.invoke(self.retriever_query_example)
        assert len(result_3) == 3

Frequently Asked Questions

What is the RetrieversIntegrationTests class?
RetrieversIntegrationTests is a class in the langchain codebase, defined in libs/standard-tests/langchain_tests/integration_tests/retrievers.py.
Where is RetrieversIntegrationTests defined?
RetrieversIntegrationTests is defined in libs/standard-tests/langchain_tests/integration_tests/retrievers.py at line 13.
What does RetrieversIntegrationTests extend?
RetrieversIntegrationTests extends BaseStandardTests, Document.

Analyze Your Own Codebase

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

Try Supermodel Free