How to beginner · 3 min read

How to use Chroma with LangChain

Quick answer
Use Chroma from langchain_community.vectorstores to create a vector store with document embeddings generated by OpenAIEmbeddings. Load documents, embed them, and query with LangChain's retrieval tools for semantic search.

PREREQUISITES

  • Python 3.8+
  • OpenAI API key (free tier works)
  • pip install langchain_openai langchain_community chromadb openai

Setup

Install the required packages and set your OpenAI API key in the environment variables.

  • Install packages: pip install langchain_openai langchain_community chromadb openai
  • Set environment variable: export OPENAI_API_KEY='your_api_key' (Linux/macOS) or setx OPENAI_API_KEY "your_api_key" (Windows)
bash
pip install langchain_openai langchain_community chromadb openai

Step by step

This example loads text documents, creates embeddings with OpenAI, stores them in Chroma, and performs a semantic search query.

python
import os
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from langchain_community.document_loaders import TextLoader

# Load documents from local text files
loader = TextLoader("example_doc.txt")
docs = loader.load()

# Initialize OpenAI embeddings
embeddings = OpenAIEmbeddings(api_key=os.environ["OPENAI_API_KEY"])

# Create Chroma vector store from documents
vectordb = Chroma.from_documents(documents=docs, embedding=embeddings, collection_name="example_collection")

# Query the vector store
query = "What is the main topic of the document?"
results = vectordb.similarity_search(query, k=3)

for i, doc in enumerate(results):
    print(f"Result {i+1}: {doc.page_content}")
output
Result 1: <relevant text snippet from example_doc.txt>
Result 2: <relevant text snippet from example_doc.txt>
Result 3: <relevant text snippet from example_doc.txt>

Common variations

  • Use Chroma asynchronously with async methods if your environment supports it.
  • Switch embeddings to other providers like HuggingFaceEmbeddings by changing the embedding class.
  • Use different models for embeddings by configuring OpenAIEmbeddings with a specific model parameter.

Troubleshooting

  • If you get authentication errors, verify your OPENAI_API_KEY environment variable is set correctly.
  • If documents do not return relevant results, check that the documents are loaded properly and embeddings are generated without errors.
  • For connection issues with Chroma, ensure the chromadb package is installed and compatible with your Python version.

Key Takeaways

  • Use Chroma.from_documents with OpenAIEmbeddings to create a vector store for semantic search.
  • Load documents with TextLoader or other LangChain loaders before embedding.
  • Set your OpenAI API key in os.environ to authenticate embedding requests.
  • Chroma supports fast similarity search and integrates seamlessly with LangChain's retrieval interface.
  • You can customize embeddings and vector store parameters for different use cases.
Verified 2026-04 · gpt-4o, OpenAIEmbeddings
Verify ↗