Source code for langchain_elasticsearch.embeddings

from typing import List

from langchain_core.embeddings import Embeddings  # noqa: F401

from langchain_elasticsearch._async.embeddings import (
    AsyncElasticsearchEmbeddings as _AsyncElasticsearchEmbeddings,
)
from langchain_elasticsearch._async.embeddings import (
    AsyncEmbeddingService as _AsyncEmbeddingService,
)
from langchain_elasticsearch._async.embeddings import (
    AsyncEmbeddingServiceAdapter as _AsyncEmbeddingServiceAdapter,
)
from langchain_elasticsearch._sync.embeddings import (
    ElasticsearchEmbeddings as _ElasticsearchEmbeddings,
)
from langchain_elasticsearch._sync.embeddings import (
    EmbeddingService as _EmbeddingService,
)
from langchain_elasticsearch._sync.embeddings import (
    EmbeddingServiceAdapter as _EmbeddingServiceAdapter,
)


# langchain defines some sync methods as abstract in its base class
# so we have to add dummy methods for them, even though we only use the async versions
[docs] class AsyncElasticsearchEmbeddings(_AsyncElasticsearchEmbeddings):
[docs] def embed_documents(self, texts: List[str]) -> List[List[float]]: raise NotImplementedError("This class is asynchronous, use aembed_documents()")
[docs] def embed_query(self, text: str) -> List[float]: raise NotImplementedError("This class is asynchronous, use aembed_query()")
# these are only defined here so that they are picked up by Langchain's docs generator
[docs] class ElasticsearchEmbeddings(_ElasticsearchEmbeddings): pass
[docs] class EmbeddingService(_EmbeddingService): pass
[docs] class EmbeddingServiceAdapter(_EmbeddingServiceAdapter): pass
[docs] class AsyncEmbeddingService(_AsyncEmbeddingService): pass
[docs] class AsyncEmbeddingServiceAdapter(_AsyncEmbeddingServiceAdapter): pass