ElasticsearchStore(
self,
index_name: str,
*,
embedding: Optional[Embeddings| Name | Type | Description |
|---|---|---|
index_name* | str | Name of the Elasticsearch index to create. |
es_url | Optional[str] | Default: NoneURL of the Elasticsearch instance to connect to. |
cloud_id* | unknown | Cloud ID of the Elasticsearch instance to connect to. |
es_user | Optional[str] | Default: None |
es_password | Optional[str] | Default: None |
es_api_key | Optional[str] | Default: None |
es_connection | Optional[Elasticsearch] | Default: None |
vector_query_field | str | Default: 'vector' |
query_field | str | Default: 'text' |
strategy | BaseRetrievalStrategy | Default: ApproxRetrievalStrategy() |
distance_strategy | Optional[Literal[DistanceStrategy.COSINE, DistanceStrategy.DOT_PRODUCT, DistanceStrategy.EUCLIDEAN_DISTANCE, DistanceStrategy |
| Name | Type |
|---|---|
| index_name | str |
| embedding | Optional[Embeddings] |
| es_connection | Optional[Elasticsearch] |
| es_url | Optional[str] |
| es_cloud_id | Optional[str] |
| es_user | Optional[str] |
| es_api_key | Optional[str] |
| es_password | Optional[str] |
| vector_query_field | str |
| query_field | str |
| distance_strategy | Optional[Literal[DistanceStrategy.COSINE, DistanceStrategy.DOT_PRODUCT, DistanceStrategy.EUCLIDEAN_DISTANCE, DistanceStrategy.MAX_INNER_PRODUCT |
| strategy | BaseRetrievalStrategy |
| es_params | Optional[Dict[str, Any]] |
Elasticsearch vector store.
Example:
.. code-block:: python
from langchain_community.vectorstores import ElasticsearchStore from langchain_community.embeddings.openai import OpenAIEmbeddings
vectorstore = ElasticsearchStore( embedding=OpenAIEmbeddings(), index_name="langchain-demo", es_url="http://localhost:9200" )
If you want to use a cloud hosted Elasticsearch instance, you can pass in the cloud_id argument instead of the es_url argument.
Example:
.. code-block:: python
from langchain_community.vectorstores import ElasticsearchStore from langchain_community.embeddings.openai import OpenAIEmbeddings
vectorstore = ElasticsearchStore(
embedding=OpenAIEmbeddings(),
index_name="langchain-demo",
es_cloud_id="<cloud_id>"
es_user="elastic",
es_password="
You can also connect to an existing Elasticsearch instance by passing in a pre-existing Elasticsearch connection via the es_connection argument.
Example:
.. code-block:: python
from langchain_community.vectorstores import ElasticsearchStore from langchain_community.embeddings.openai import OpenAIEmbeddings
from elasticsearch import Elasticsearch
es_connection = Elasticsearch("http://localhost:9200")
vectorstore = ElasticsearchStore( embedding=OpenAIEmbeddings(), index_name="langchain-demo", es_connection=es_connection )
ElasticsearchStore by default uses the ApproxRetrievalStrategy, which uses the HNSW algorithm to perform approximate nearest neighbor search. This is the fastest and most memory efficient algorithm.
If you want to use the Brute force / Exact strategy for searching vectors, you can pass in the ExactRetrievalStrategy to the ElasticsearchStore constructor.
Example:
.. code-block:: python
from langchain_community.vectorstores import ElasticsearchStore from langchain_community.embeddings.openai import OpenAIEmbeddings
vectorstore = ElasticsearchStore( embedding=OpenAIEmbeddings(), index_name="langchain-demo", es_url="http://localhost:9200", strategy=ElasticsearchStore.ExactRetrievalStrategy() )
Both strategies require that you know the similarity metric you want to use when creating the index. The default is cosine similarity, but you can also use dot product or euclidean distance.
Example:
.. code-block:: python
from langchain_community.vectorstores import ElasticsearchStore from langchain_community.embeddings.openai import OpenAIEmbeddings from langchain_community.vectorstores.utils import DistanceStrategy
vectorstore = ElasticsearchStore( "langchain-demo", embedding=OpenAIEmbeddings(), es_url="http://localhost:9200", distance_strategy="DOT_PRODUCT" )
Default: None |
Username to use when connecting to Elasticsearch.
Password to use when connecting to Elasticsearch.
API key to use when connecting to Elasticsearch.
Optional pre-existing Elasticsearch connection.
Optional. Name of the field to store the embedding vectors in.
Optional. Name of the field to store the texts in.
Optional. Retrieval strategy to use when searching the index. Defaults to ApproxRetrievalStrategy. Can be one of ExactRetrievalStrategy, ApproxRetrievalStrategy, or SparseRetrievalStrategy.
Optional. Distance strategy to use when searching the index. Defaults to COSINE. Can be one of COSINE, EUCLIDEAN_DISTANCE, MAX_INNER_PRODUCT or DOT_PRODUCT.