{"id":4073,"library":"langchain-chroma","title":"langchain-chroma Integration","description":"langchain-chroma is an integration package connecting Chroma, an AI-native open-source vector database, with the LangChain framework. It enables developers to leverage Chroma for tasks such as semantic search, Retrieval-Augmented Generation (RAG), and other LLM applications. Currently at version 1.1.0, it is actively developed and maintained as part of LangChain's partner integrations, with releases often aligned with the broader LangChain ecosystem.","status":"active","version":"1.1.0","language":"en","source_language":"en","source_url":"https://github.com/langchain-ai/langchain/tree/master/libs/partners/chroma","tags":["langchain","vectorstore","chroma","embeddings","RAG","database","LLM"],"install":[{"cmd":"pip install -qU langchain-chroma chromadb langchain-openai langchain-text-splitters","lang":"bash","label":"Install core and common dependencies"}],"dependencies":[{"reason":"Required for ChromaDB client functionality to interact with the Chroma vector database.","package":"chromadb","optional":false},{"reason":"Provides foundational components and abstractions used across the LangChain ecosystem.","package":"langchain-core","optional":false},{"reason":"Commonly used for OpenAI embedding models, essential for most vector store operations.","package":"langchain-openai","optional":true},{"reason":"Provides utilities for splitting documents into chunks, a common prerequisite for RAG applications.","package":"langchain-text-splitters","optional":true}],"imports":[{"symbol":"Chroma","correct":"from langchain_chroma import Chroma"},{"note":"Used for generating embeddings, commonly paired with Chroma.","symbol":"OpenAIEmbeddings","correct":"from langchain_openai import OpenAIEmbeddings"},{"note":"Used for processing documents before adding them to the vector store.","symbol":"RecursiveCharacterTextSplitter","correct":"from langchain_text_splitters import RecursiveCharacterTextSplitter"},{"note":"Post LangChain v0.1.0, Document moved to langchain_core.documents.","wrong":"from langchain.docstore.document import Document","symbol":"Document","correct":"from langchain_core.documents import Document"}],"quickstart":{"code":"import os\nfrom langchain_chroma import Chroma\nfrom langchain_openai import OpenAIEmbeddings\nfrom langchain_core.documents import Document\nfrom langchain_text_splitters import RecursiveCharacterTextSplitter\n\n# Set your OpenAI API key from environment variables\nos.environ[\"OPENAI_API_KEY\"] = os.environ.get(\"OPENAI_API_KEY\", \"YOUR_OPENAI_API_KEY\")\n\n# Sample documents\nraw_documents = [\n    \"The quick brown fox jumps over the lazy dog.\",\n    \"The cat sat on the mat.\",\n    \"Chroma is an open-source vector database.\",\n    \"LangChain provides tools for building LLM applications.\",\n    \"RAG combines retrieval and generation for better answers.\"\n]\n\n# 1. Split documents (optional but good practice for RAG)\ntext_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)\ndocuments = [Document(page_content=d) for d in raw_documents]\nsplit_documents = text_splitter.split_documents(documents)\n\n# 2. Initialize embeddings\nembeddings = OpenAIEmbeddings()\n\n# 3. Create a Chroma vector store (in-memory for this example)\n# For persistence, pass a 'persist_directory' argument: persist_directory=\"./chroma_db\"\nvector_store = Chroma(\n    collection_name=\"my_documents_collection\",\n    embedding_function=embeddings,\n)\n\n# Add documents to the vector store\nvector_store.add_documents(split_documents)\n\n# 4. Perform a similarity search\nquery = \"What is Chroma?\"\nresults = vector_store.similarity_search(query, k=1)\n\nprint(f\"Query: {query}\")\nfor doc in results:\n    print(f\"- Found document: {doc.page_content}\")\n","lang":"python","description":"This quickstart demonstrates how to set up a Chroma vector store with LangChain, using OpenAI embeddings. It covers document loading, splitting, vector store initialization, and performing a similarity search. For local persistence, uncomment the `persist_directory` argument during Chroma initialization."},"warnings":[{"fix":"Update imports to use the dedicated `langchain_chroma` package: `from langchain_chroma import Chroma`. Similarly, `Document` moved to `langchain_core.documents`.","message":"With the release of LangChain v0.1.0 and subsequent modularization, core components and integrations like Chroma moved to separate packages. Old import paths (e.g., `from langchain.vectorstores import Chroma`) are deprecated and will lead to `ImportError` or unexpected behavior.","severity":"breaking","affected_versions":">=0.1.0"},{"fix":"Consult ChromaDB and `langchain-chroma` documentation for recommended `chromadb` client versions. Upgrade or downgrade `chromadb` as necessary to match your server environment: `pip install chromadb==X.Y.Z`.","message":"When connecting to a remote ChromaDB server, ensure the `chromadb` client version installed (as a dependency of `langchain-chroma`) is compatible with the server's version. Incompatible client/server versions, especially with major updates to ChromaDB (e.g., v1.x based on Rust), can lead to connection errors or unexpected behavior.","severity":"gotcha","affected_versions":"All versions, particularly with `chromadb` server 1.x"},{"fix":"Upgrade `langchain-chroma` to the latest version (`1.1.0` or higher), as dependency constraints are typically relaxed or updated in newer releases to improve compatibility. If conflicts persist, try installing `numpy` first with a broad range, then `langchain-chroma`.","message":"Earlier versions of `langchain-chroma` (e.g., 0.2.2) had strict `numpy` dependency constraints (`numpy>=1.26.2,<2.0.0`) which could conflict with other packages requiring newer `numpy` versions (`>=2.0.0`), causing installation failures.","severity":"gotcha","affected_versions":"0.2.2 and potentially other older minor versions"},{"fix":"Ensure `Document` objects passed to `update_documents` either have a valid `metadata` dictionary or explicitly set `metadata=None` if no metadata is desired. Always test `update_documents` carefully with and without metadata in your specific `langchain-chroma` version.","message":"When using `update_documents` with Chroma, some older versions might have expected explicit metadata, even if optional, leading to `ValueError` if an empty list was internally generated instead of `None`.","severity":"gotcha","affected_versions":"Older versions like 0.2.2 (reported in August 2024), possibly resolved in later updates."}],"env_vars":null,"last_verified":"2026-04-11T00:00:00.000Z","next_check":"2026-07-10T00:00:00.000Z"}