Source code for langchain_elasticsearch.vectorstores

from typing import Any, Optional

from langchain_elasticsearch._async.vectorstores import (
    AsyncBM25Strategy as _AsyncBM25Strategy,
)
from langchain_elasticsearch._async.vectorstores import (
    AsyncDenseVectorScriptScoreStrategy as _AsyncDenseVectorScriptScoreStrategy,
)
from langchain_elasticsearch._async.vectorstores import (
    AsyncDenseVectorStrategy as _AsyncDenseVectorStrategy,
)
from langchain_elasticsearch._async.vectorstores import (
    AsyncElasticsearchStore as _AsyncElasticsearchStore,
)
from langchain_elasticsearch._async.vectorstores import (
    AsyncRetrievalStrategy as _AsyncRetrievalStrategy,
)
from langchain_elasticsearch._async.vectorstores import (
    AsyncSparseVectorStrategy as _AsyncSparseVectorStrategy,
)
from langchain_elasticsearch._async.vectorstores import (
    DistanceMetric,  # noqa: F401
    Document,
    Embeddings,
)
from langchain_elasticsearch._sync.vectorstores import (
    BM25Strategy as _BM25Strategy,
)
from langchain_elasticsearch._sync.vectorstores import (
    DenseVectorScriptScoreStrategy as _DenseVectorScriptScoreStrategy,
)
from langchain_elasticsearch._sync.vectorstores import (
    DenseVectorStrategy as _DenseVectorStrategy,
)
from langchain_elasticsearch._sync.vectorstores import (
    ElasticsearchStore as _ElasticsearchStore,
)
from langchain_elasticsearch._sync.vectorstores import (
    RetrievalStrategy as _RetrievalStrategy,
)
from langchain_elasticsearch._sync.vectorstores import (
    SparseVectorStrategy as _SparseVectorStrategy,
)

# deprecated strategy classes
from langchain_elasticsearch._utilities import (  # noqa: F401
    ApproxRetrievalStrategy,
    BaseRetrievalStrategy,
    BM25RetrievalStrategy,
    DistanceStrategy,
    ExactRetrievalStrategy,
    SparseRetrievalStrategy,
)


# 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 AsyncElasticsearchStore(_AsyncElasticsearchStore):
[docs] @classmethod def from_texts( cls, texts: list[str], embedding: Embeddings, metadatas: Optional[list[dict]] = None, *, ids: Optional[list[str]] = None, **kwargs: Any, ) -> "AsyncElasticsearchStore": raise NotImplementedError("This class is asynchronous, use afrom_texts()")
# these are only defined here so that they are picked up by Langchain's docs generator
[docs] class ElasticsearchStore(_ElasticsearchStore): pass
[docs] class BM25Strategy(_BM25Strategy): pass
[docs] class DenseVectorScriptScoreStrategy(_DenseVectorScriptScoreStrategy): pass
[docs] class DenseVectorStrategy(_DenseVectorStrategy): pass
[docs] class RetrievalStrategy(_RetrievalStrategy): pass
[docs] class SparseVectorStrategy(_SparseVectorStrategy): pass
[docs] class AsyncBM25Strategy(_AsyncBM25Strategy): pass
[docs] class AsyncDenseVectorScriptScoreStrategy(_AsyncDenseVectorScriptScoreStrategy): pass
[docs] class AsyncDenseVectorStrategy(_AsyncDenseVectorStrategy): pass
[docs] class AsyncRetrievalStrategy(_AsyncRetrievalStrategy): pass
[docs] class AsyncSparseVectorStrategy(_AsyncSparseVectorStrategy): pass