How to use Weaviate with LangChain
Quick answer
Use the
Weaviate vector store from langchain_community.vectorstores to connect LangChain with a Weaviate instance. Initialize the Weaviate client with your Weaviate URL and API key, then use it to add and query embeddings seamlessly within LangChain workflows.PREREQUISITES
Python 3.8+Weaviate instance running (cloud or local)Weaviate API key (if applicable)pip install langchain langchain_community weaviate-client openaiOpenAI API key (for embeddings)
Setup
Install the required Python packages and set environment variables for your OpenAI and Weaviate API keys. Ensure your Weaviate instance is accessible.
pip install langchain langchain_community weaviate-client openai Step by step
This example shows how to connect LangChain to Weaviate, add documents with OpenAI embeddings, and perform a similarity search.
import os
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Weaviate
# Set environment variables before running:
# export OPENAI_API_KEY="your_openai_api_key"
# export WEAVIATE_URL="https://your-weaviate-instance.com"
# export WEAVIATE_API_KEY="your_weaviate_api_key" # if needed
# Initialize OpenAI embeddings
embeddings = OpenAIEmbeddings(openai_api_key=os.environ["OPENAI_API_KEY"])
# Connect to Weaviate
weaviate_url = os.environ["WEAVIATE_URL"]
weaviate_api_key = os.environ.get("WEAVIATE_API_KEY")
# Create Weaviate vector store client
vectorstore = Weaviate(
url=weaviate_url,
api_key=weaviate_api_key,
index_name="LangChainDemo",
embedding=embeddings
)
# Add documents to Weaviate
texts = ["LangChain integrates with Weaviate.", "Weaviate is a vector database.", "OpenAI embeddings power semantic search."]
vectorstore.add_texts(texts)
# Query Weaviate with a similarity search
query = "How to connect LangChain with Weaviate?"
results = vectorstore.similarity_search(query, k=2)
for i, doc in enumerate(results, 1):
print(f"Result {i}: {doc.page_content}") output
Result 1: LangChain integrates with Weaviate. Result 2: Weaviate is a vector database.
Common variations
- Use different embedding models by swapping
OpenAIEmbeddingswith other LangChain embeddings. - Run Weaviate locally or use managed cloud instances.
- Use async LangChain calls with Weaviate by adapting to async clients.
- Customize
index_nameto organize multiple vector collections.
Troubleshooting
- If you get connection errors, verify your
WEAVIATE_URLand network access. - Authentication failures mean your
WEAVIATE_API_KEYis missing or invalid. - Ensure your Weaviate schema supports the vector index name you use.
- Check that your OpenAI API key is set correctly for embeddings.
Key Takeaways
- Use
Weaviatefromlangchain_community.vectorstoresto integrate Weaviate with LangChain. - Initialize
OpenAIEmbeddingsfor generating embeddings compatible with Weaviate. - Add documents and perform similarity search with simple LangChain vectorstore methods.
- Set environment variables for API keys to keep credentials secure and reusable.
- Verify Weaviate schema and network access to avoid common connection issues.