LangChain Elasticsearch Integration

1.0.0 · active · verified Thu Apr 16

LangChain Elasticsearch is an integration package that connects LangChain with Elasticsearch. It provides components for vector storage (`ElasticsearchStore`), chat message history (`ElasticsearchChatMessageHistory`), and embedding caching (`ElasticsearchEmbeddingsCache`). The current version is 1.0.0, and it follows a frequent release cadence, often aligning with LangChain Core updates.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to initialize `ElasticsearchStore` with OpenAI embeddings, add documents, and perform a similarity search. Ensure you have Elasticsearch running and the `ELASTICSEARCH_URL` and `OPENAI_API_KEY` environment variables set. Install `langchain-openai` for OpenAI embeddings.

import os
from langchain_elasticsearch import ElasticsearchStore
from langchain_openai import OpenAIEmbeddings # Or any other Embedding class
from langchain_core.documents import Document

# Set up Elasticsearch client URL and OpenAI API Key
ELASTICSEARCH_URL = os.environ.get("ELASTICSEARCH_URL", "http://localhost:9200")
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY", "")

if not OPENAI_API_KEY:
    print("Warning: OPENAI_API_KEY not set. Using a placeholder for demonstration.")
    # In a real application, you would ensure this is set or use a mock.
    embeddings = None # Prevent actual API calls
else:
    embeddings = OpenAIEmbeddings(openai_api_key=OPENAI_API_KEY)

if embeddings:
    # Initialize ElasticsearchStore
    # Ensure Elasticsearch is running and accessible at ELASTICSEARCH_URL
    vectorstore = ElasticsearchStore(
        es_url=ELASTICSEARCH_URL,
        index_name="langchain-test-index",
        embedding=embeddings,
        # num_dimensions is crucial for correct vector mapping
        num_dimensions=1536 # For OpenAI embeddings
    )

    # Add documents
    docs = [
        Document(page_content="The quick brown fox jumps over the lazy dog", metadata={"source": "lorem"}),
        Document(page_content="A dog barks at the moon", metadata={"source": "nature"}),
    ]
    vectorstore.add_documents(docs)

    # Perform a similarity search
    query = "What is a fox?"
    results = vectorstore.similarity_search(query, k=1)

    print(f"\nSimilarity search results for '{query}':")
    for doc in results:
        print(f"- Content: {doc.page_content}, Metadata: {doc.metadata}")
else:
    print("Embeddings not initialized due to missing API key. Skipping vector store example.")

view raw JSON →