Chroma

Chroma

Embeddings-native local DB

Data Infrastructure

What it's used for

Chroma is an open-source, embeddings-native vector database designed for simplicity and developer experience. It runs as an embedded database directly inside your Python process — no server, no Docker, no API keys — making it the fastest way to add vector search to any project.

  • Zero-config setup — install with pip and start using immediately, no external services or configuration needed
  • Auto-embedding — pass raw documents and Chroma generates embeddings automatically using a default model (all-MiniLM-L6-v2), or configure your own embedding function
  • Document storage — stores original documents, embeddings, and metadata together so you can retrieve full content, not just IDs
  • Metadata filtering — filter search results by metadata fields using where clauses
  • Persistent storage — save data to disk with PersistentClient for data that survives across process restarts
  • Client/server mode — scale beyond embedded mode by running Chroma as a standalone server with the same API

Developers prototyping RAG applications, AI hobbyists, and teams building proof-of-concepts choose Chroma because it has the lowest barrier to entry of any vector database. You can go from zero to working semantic search in under 10 lines of Python.

Chroma is the default vector store in LangChain tutorials and many AI courses, making it the most commonly used vector database for learning and prototyping. For production workloads that need scalability and high availability, teams often migrate to Pinecone, Qdrant, or Weaviate — but Chroma is increasingly targeting production use cases with its server mode.

Getting started

  1. Install Chroma:
    pip install chromadb
  2. Create a client and collection:
    import chromadb
    
    # In-memory (ephemeral)
    client = chromadb.Client()
    
    # Or persistent (saves to disk)
    client = chromadb.PersistentClient(path='./chroma_data')
    
    collection = client.create_collection(name='my_docs')
  3. Add documents (embeddings generated automatically):
    collection.add(
        documents=['Machine learning is...', 'Neural networks are...', 'Deep learning involves...'],
        metadatas=[{'source': 'textbook'}, {'source': 'wiki'}, {'source': 'paper'}],
        ids=['doc1', 'doc2', 'doc3']
    )
  4. Query with natural language:
    results = collection.query(
        query_texts=['How do neural networks work?'],
        n_results=2,
        where={'source': 'textbook'}  # Optional metadata filter
    )
    print(results['documents'])  # Returns the most similar documents
  5. Use a custom embedding model (e.g., OpenAI):
    from chromadb.utils import embedding_functions
    ef = embedding_functions.OpenAIEmbeddingFunction(api_key='your-key', model_name='text-embedding-3-small')
    collection = client.create_collection(name='my_docs', embedding_function=ef)

Pricing: Chroma is 100% free and open-source. No cloud account, API key, or payment method required. Chroma Cloud (hosted version) is available for teams that want a managed service.

Tip: For RAG prototyping, Chroma's default embedding model (all-MiniLM-L6-v2) is good enough for testing but not production quality. Switch to OpenAI text-embedding-3-small or Cohere embed-v3 before evaluating retrieval performance. Use PersistentClient from the start to avoid losing data between restarts.

No case studies yet

Be the first to share a Chroma case study and get discovered by clients.

Submit a case study

Thought leaders

AI leaders using Chroma

Follow for insights, tutorials, and thought leadership

Related tools in Data

Need a Chroma expert?

Submit a brief and we'll match you with vetted specialists who have proven Chroma experience.

Submit a brief — it's free