RetrieversIntegrationTests#

class langchain_tests.integration_tests.retrievers.RetrieversIntegrationTests[source]#

Base class for retrievers integration tests.

Attributes

num_results_arg_name

Returns the name of the parameter for the number of results returned.

retriever_constructor

A BaseRetriever subclass to be tested.

retriever_constructor_params

Returns a dictionary of parameters to pass to the retriever constructor.

retriever_query_example

Returns a str representing the query of an example retriever call.

Methods

test_ainvoke_returns_documents(retriever)

Test ainvoke returns documents.

test_invoke_returns_documents(retriever)

Test invoke returns documents.

test_invoke_with_k_kwarg(retriever)

Test the number of results parameter in invoke().

test_k_constructor_param()

Test the number of results constructor parameter.

async test_ainvoke_returns_documents(
retriever: BaseRetriever,
) None[source]#

Test ainvoke returns documents.

If ainvoked with the example params, the retriever should return a list of Documents.

See test_invoke_returns_documents() for more information on troubleshooting.

Parameters:

retriever (BaseRetriever)

Return type:

None

test_invoke_returns_documents(
retriever: BaseRetriever,
) None[source]#

Test invoke returns documents.

If invoked with the example params, the retriever should return a list of Documents.

Troubleshooting

If this test fails, the retriever’s invoke method does not return a list of langchain_core.document.Document objects. Please confirm that your _get_relevant_documents method returns a list of Document objects.

Parameters:

retriever (BaseRetriever)

Return type:

None

test_invoke_with_k_kwarg(
retriever: BaseRetriever,
) None[source]#

Test the number of results parameter in invoke().

Test that the invoke method accepts a parameter representing the number of documents to return.

By default, the parameter is named , 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 invoke method, this test can be skipped using a pytest xfail on the test class:

@pytest.mark.xfail(
    reason="This retriever doesn't support setting "
    "the number of results in the invoke method."
)
def test_invoke_with_k_kwarg(self) -> None:
    raise NotImplementedError
Troubleshooting

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

For example, a retriever like

MyRetriever().invoke("query", k=3)

should return 3 documents when invoked with a query.

Parameters:

retriever (BaseRetriever)

Return type:

None

test_k_constructor_param() None[source]#

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:

@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
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

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

should return 3 documents when invoked with a query.

Return type:

None