Skip to content

Add a Chroma provider (CommunityToolkit.VectorData.Chroma) #57

Closed

Description

@Laurianti

Summary

Add a Chroma provider for Microsoft.Extensions.VectorData as CommunityToolkit.VectorData.Chroma, in MEVD/src/Chroma with its unit and conformance tests, like the other providers of this repository.

Chroma is listed as planned for .NET in the vector store tables of Semantic Kernel and Agent Framework.

Background

In microsoft/semantic-kernel#12510, @roji wrote that a Chroma provider first needed an up-to-date low-level .NET client. ChromaDotNet.Client (repository) continues ChromaDB.Client and is tested against Chroma 0.4.10 to 1.5.9 and Chroma Cloud.

The provider

A working provider is at ChromaDotNet/ChromaDB.VectorData, published as ChromaDotNet.VectorData. It started as a copy of the Qdrant provider of this repository and keeps its structure.

  • The Microsoft.Extensions.VectorData conformance tests pass against Chroma 1.5.0, 1.5.9 and the latest release, and on Chroma Cloud, hybrid search included. The test bases for multiple vectors and records without vectors are excluded: Chroma stores exactly one embedding per record.
  • Limits that come from Chroma: metadata has no null values, so filtering on null is not supported; GetAsync with a filter does not support ordering; comparisons work on numbers only.

Change

A pull request that adds MEVD/src/Chroma, MEVD/test/Chroma.UnitTests and MEVD/test/Chroma.ConformanceTests with the namespaces, package metadata and test layout of the other providers. The conformance tests start Chroma with Testcontainers, so the mevd.yml matrix runs them with the other providers.

Once CommunityToolkit.VectorData.Chroma is published, ChromaDotNet.VectorData is deprecated in its favor on NuGet. We keep maintaining the provider here.

Activity

  1. adamsitnik commented on Oct 6, 2026

    @adamsitnik
    Contributor

    Hi @Laurianti

    Big thanks for your proposal. I am supportive of adding the Chroma MEVD provider here. Please send a PR. Thanks!

  2. adamsitnik commented on Oct 9, 2026

    @adamsitnik
    Contributor

    @Laurianti I've initiated the process of releasing the NuGet package to nuget.org

    As soon as somebody with .NET Foundation permissions approves the co-ownership of the package, I am going to publish it.

    Image Image
  3. Laurianti commented on Oct 9, 2026

    @Laurianti
    MemberAuthor

    Thanks a lot, Adam!

  4. adamsitnik commented on Oct 9, 2026

    @adamsitnik
    Contributor
  5. adamsitnik commented on Oct 12, 2026

    @adamsitnik
    Contributor

    @Laurianti I've send PRs to remove the old implementation from Semantic Kernel (microsoft/semantic-kernel#14579) and updated the docs (MicrosoftDocs/semantic-kernel-docs#460).

    I am working on grating you a "triage" role. This will be the first step toward giving you write permissions in a long term. Please expect an invite from Community Toolkit organization.

  6. Laurianti commented on Oct 12, 2026

    @Laurianti
    MemberAuthor

    Thank you, Adam, for the Semantic Kernel cleanup and the docs. The triage role is an honor: I'll accept the invite as soon as it arrives.

    I had opened MicrosoftDocs/semantic-kernel-docs#459 with a C# page for Chroma. MicrosoftDocs/semantic-kernel-docs#460 covers it, so I'm closing mine in favor of yours.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions