[docs]classEmbeddingsIntegrationTests(EmbeddingsTests):"""Base class for embeddings integration tests. Test subclasses must implement the ``embeddings_class`` property to specify the embeddings model to be tested. You can also override the ``embedding_model_params`` property to specify initialization parameters. Example: .. code-block:: python from typing import Type from langchain_tests.integration_tests import EmbeddingsIntegrationTests from my_package.embeddings import MyEmbeddingsModel class TestMyEmbeddingsModelIntegration(EmbeddingsIntegrationTests): @property def embeddings_class(self) -> Type[MyEmbeddingsModel]: # Return the embeddings model class to test here return MyEmbeddingsModel @property def embedding_model_params(self) -> dict: # Return initialization parameters for the model. return {"model": "model-001"} .. note:: API references for individual test methods include troubleshooting tips. """
[docs]deftest_embed_query(self,model:Embeddings)->None:"""Test embedding a string query. .. dropdown:: Troubleshooting If this test fails, check that: 1. The model will generate a list of floats when calling ``.embed_query`` on a string. 2. The length of the list is consistent across different inputs. """# noqa: E501embedding_1=model.embed_query("foo")assertisinstance(embedding_1,List)assertisinstance(embedding_1[0],float)embedding_2=model.embed_query("bar")assertlen(embedding_1)>0assertlen(embedding_1)==len(embedding_2)
[docs]deftest_embed_documents(self,model:Embeddings)->None:"""Test embedding a list of strings. .. dropdown:: Troubleshooting If this test fails, check that: 1. The model will generate a list of lists of floats when calling ``.embed_documents`` on a list of strings. 2. The length of each list is the same. """# noqa: E501documents=["foo","bar","baz"]embeddings=model.embed_documents(documents)assertlen(embeddings)==len(documents)assertall(isinstance(embedding,List)forembeddinginembeddings)assertall(isinstance(embedding[0],float)forembeddinginembeddings)assertlen(embeddings[0])>0assertall(len(embedding)==len(embeddings[0])forembeddinginembeddings)
[docs]asyncdeftest_aembed_query(self,model:Embeddings)->None:"""Test embedding a string query async. .. dropdown:: Troubleshooting If this test fails, check that: 1. The model will generate a list of floats when calling ``.aembed_query`` on a string. 2. The length of the list is consistent across different inputs. """# noqa: E501embedding_1=awaitmodel.aembed_query("foo")assertisinstance(embedding_1,List)assertisinstance(embedding_1[0],float)embedding_2=awaitmodel.aembed_query("bar")assertlen(embedding_1)>0assertlen(embedding_1)==len(embedding_2)
[docs]asyncdeftest_aembed_documents(self,model:Embeddings)->None:"""Test embedding a list of strings async. .. dropdown:: Troubleshooting If this test fails, check that: 1. The model will generate a list of lists of floats when calling ``.aembed_documents`` on a list of strings. 2. The length of each list is the same. """# noqa: E501documents=["foo","bar","baz"]embeddings=awaitmodel.aembed_documents(documents)assertlen(embeddings)==len(documents)assertall(isinstance(embedding,List)forembeddinginembeddings)assertall(isinstance(embedding[0],float)forembeddinginembeddings)assertlen(embeddings[0])>0assertall(len(embedding)==len(embeddings[0])forembeddinginembeddings)