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
Extends
Source
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