Open Source Chroma

Chroma is the open-source AI application database. Chroma makes it easy to build LLM apps by making knowledge, facts, and skills pluggable for LLMs.

Contributing#

We welcome all contributions, bug reports, bug fixes, documentation improvements, enhancements, and ideas.

Getting Started

Here are some helpful links to get you started with contributing to Chroma

Contributing Code and Ideas

Pull Requests

In order to submit a change to Chroma please submit a Pull Request against Chroma or the documentation. The pull request will be reviewed by the Chroma team and if approved, will be merged into the repository. We will do our best to review pull requests in a timely manner but please be patient as we are a small team. We will work to integrate your proposed changes as quickly as possible if they align with the goals of the project. We ask that you label your pull request with a title prefix that indicates the type of change you are proposing. The following prefixes are used:

ENH: Enhancement, new functionality BUG: Bug fix DOC: Additions/updates to documentation TST: Additions/updates to tests BLD: Updates to the build process/scripts PERF: Performance improvement TYP: Type annotations CLN: Code cleanup CHORE: Maintenance and other tasks that do not modify source or test files

CIPs

Chroma Improvement Proposals or CIPs (pronounced "Chips") are the way to propose new features or large changes to Chroma. If you plan to make a large change to Chroma please submit a CIP first so that the core Chroma team as well as the community can discuss the proposed change and provide feedback. A CIP should provide a concise technical specification of the feature and a rationale for why it is needed. The CIP should be submitted as a pull request to the CIPs folder. The CIP will be reviewed by the Chroma team and if approved will be merged into the repository. To learn more about writing a CIP you can read the guide. CIPs are not required for small changes such as bug fixes or documentation updates.

A CIP starts in the "Proposed" state, then moves to "Under Review" once the Chroma team has reviewed it and is considering it for implementation. Once the CIP is approved it will move to the "Accepted" state and the implementation can begin. Once the implementation is complete the CIP will move to the "Implemented" state. If the CIP is not approved it will move to the "Rejected" state. If the CIP is withdrawn by the author it will move to the "Withdrawn" state.

Discord

For less fleshed out ideas you want to discuss with the community, you can join our Discord and chat with us in the #feature-ideas channel. We are always happy to discuss new ideas and features with the community.

Telemetry#

Chroma contains a telemetry feature that collects anonymous usage information.

Why?

We use this information to help us understand how Chroma is used, to help us prioritize work on new features and bug fixes, and to help us improve Chroma’s performance and stability.

Opting out

If you prefer to opt out of telemetry, you can do this in two ways.

In Client Code

Set anonymized_telemetry to False in your client's settings:

Python
from chromadb.config import Settings client = chromadb.Client(Settings(anonymized_telemetry=False)) # or if using PersistentClient client = chromadb.PersistentClient(path="/path/to/save/to", settings=Settings(anonymized_telemetry=False))

In Chroma's Backend Server Using Environment Variables

Set ANONYMIZED_TELEMETRY to False in your shell or server environment.

If you are running Chroma on your local computer with docker-compose you can set this value in an .env file placed in the same directory as the docker-compose.yml file:

ANONYMIZED_TELEMETRY=False

What do you track?

We will only track usage details that help us make product decisions, specifically:

  • Chroma version and environment details (e.g. OS, Python version, is it running in a container, or in a jupyter notebook)
  • Usage of embedding functions that ship with Chroma and aggregated usage of custom embeddings (we collect no information about the custom embeddings themselves)
  • Client interactions with our hosted Chroma Cloud service.
  • Collection commands. We track the anonymized uuid of a collection as well as the number of items
    • add
    • update
    • query
    • get
    • delete

We do not collect personally-identifiable or sensitive information, such as: usernames, hostnames, file names, environment variables, or hostnames of systems being tested.

To view the list of events we track, you may reference the code

Where is telemetry information stored?

We use Posthog to store and visualize telemetry data.

Posthog is an open source platform for product analytics. Learn more about Posthog on posthog.com or github.com/posthog