How to use OpenAI embeddings in LangChain
OpenAIEmbeddings class from langchain_openai to generate embeddings with OpenAI models like o1-mini. Instantiate it with your API key from os.environ, then embed text by calling embed_documents or embed_query. This integrates seamlessly with LangChain vectorstores for semantic search.PREREQUISITES
Python 3.8+OpenAI API key (free tier works)pip install langchain_openai openai>=1.0
Setup
Install the required packages and set your OpenAI API key as an environment variable.
- Install LangChain OpenAI bindings and OpenAI SDK:
pip install langchain_openai openai - Set your API key in your shell:
export OPENAI_API_KEY='your_api_key_here'(Linux/macOS) orsetx OPENAI_API_KEY "your_api_key_here"(Windows)
pip install langchain_openai openai Step by step
This example shows how to create an OpenAIEmbeddings instance, embed a list of documents, and embed a query string.
import os
from langchain_openai import OpenAIEmbeddings
# Initialize embeddings client with API key from environment
embeddings = OpenAIEmbeddings(openai_api_key=os.environ["OPENAI_API_KEY"], model_name="o1-mini")
# Example documents to embed
texts = [
"LangChain makes working with LLMs easier.",
"OpenAI provides powerful embedding models.",
"Embeddings convert text into vectors for similarity search."
]
# Generate embeddings for documents
vector_representations = embeddings.embed_documents(texts)
print("Document embeddings shape:", len(vector_representations), "vectors")
# Generate embedding for a query
query = "How to use embeddings with LangChain?"
query_vector = embeddings.embed_query(query)
print("Query embedding vector length:", len(query_vector)) Document embeddings shape: 3 vectors Query embedding vector length: 1536
Common variations
You can use different OpenAI embedding models by changing the model_name parameter, such as o1 or o1-mini. For asynchronous usage, LangChain currently does not support async embeddings directly, so run embedding calls in a thread or process pool. You can also combine OpenAIEmbeddings with vectorstores like FAISS or Chroma for semantic search.
| Model name | Description |
|---|---|
| o1-mini | Smaller, faster embedding model with good quality |
| o1 | Larger embedding model with higher accuracy |
Troubleshooting
If you get authentication errors, verify your OPENAI_API_KEY environment variable is set correctly. If embeddings return empty or all zeros, check your network connection and API usage limits. For unexpected vector sizes, confirm you are using a supported model name. Use print statements to debug returned embeddings shapes.
Key Takeaways
- Use
OpenAIEmbeddingsfromlangchain_openaiwith your API key fromos.environ. - Call
embed_documentsfor batch text andembed_queryfor single queries to get vector embeddings. - Change
model_nameto switch between embedding models likeo1-minioro1. - Combine embeddings with LangChain vectorstores for semantic search and retrieval.
- Check environment variables and model names carefully to avoid common errors.