The Chroma provider for Microsoft.Extensions.VectorData joins the AI Community Toolkit
Federico Laurianti, 13 October 2026, updated 25 October 2026
Updated on 25 October 2026: the latest version of the package, and the addresses of the examples.
The Chroma provider for Microsoft.Extensions.VectorData is now in the AI Community Toolkit, the .NET Foundation project that brings together the providers for the vector abstractions of .NET. The package is CommunityToolkit.VectorData.Chroma, version 1.0.1-preview.
I wrote it in ChromaDotNet.VectorData and proposed it to the toolkit, where it was accepted after review. Since 9 October it has been developed there.
What the AI Community Toolkit is
The AI Community Toolkit is the .NET Foundation project where the providers of Microsoft.Extensions.VectorData live: the .NET abstractions for vector stores used by Semantic Kernel and Microsoft Agent Framework. With these abstractions the same code stores and searches records on different databases: to change database, you change the provider.
The providers used to be part of Semantic Kernel. They moved to the toolkit to give them a neutral home, not tied to a single product. The toolkit has Qdrant, Redis, PostgreSQL, SQL Server, Azure AI Search, Cosmos DB and the others. Reviews and releases are done by the Microsoft maintainers of Microsoft.Extensions.VectorData.
Now Chroma is there too.
How to use it
Docker starts Chroma:
docker run -p 127.0.0.1:8000:8000 chromadb/chroma:1.5.9Then the package:
dotnet add package CommunityToolkit.VectorData.Chroma --prereleaseA model, a collection, a search with a filter:
using ChromaDB.Client;
using CommunityToolkit.VectorData.Chroma;
using Microsoft.Extensions.VectorData;
using var httpClient = new HttpClient();
var client = new ChromaClient(new ChromaConfigurationOptions("http://127.0.0.1:8000"), httpClient);
using var vectorStore = new ChromaVectorStore(client, ownsClient: false);
var hotels = vectorStore.GetCollection<string, Hotel>("hotels");
await hotels.EnsureCollectionExistsAsync();
await hotels.UpsertAsync(new Hotel { Id = "h1", Name = "Grand", Rating = 5, Embedding = new float[] { 0.1f, 0.2f, 0.3f, 0.4f } });
await foreach (var result in hotels.SearchAsync(new float[] { 0.1f, 0.2f, 0.3f, 0.4f }, top: 3, new() { Filter = h => h.Rating >= 4 }))
{
Console.WriteLine($"{result.Record.Name}: {result.Score}");
}
public sealed class Hotel
{
[VectorStoreKey]
public string Id { get; set; } = "";
[VectorStoreData(IsFullTextIndexed = true)]
public string? Name { get; set; }
[VectorStoreData]
public int Rating { get; set; }
[VectorStoreVector(4)]
public ReadOnlyMemory<float> Embedding { get; set; }
}The embeddings are written by hand to keep the example short. In a real project they come from a model, for example through Microsoft.Extensions.AI.
With dependency injection it takes one line:
services.AddChromaVectorStore("http://127.0.0.1:8000");What is underneath
The provider is built on ChromaDotNet.Client, a client for the whole Chroma v2 API, Chroma Cloud included. The client is tested with Chroma 0.4.10 to 1.5.9 and with Chroma Cloud; the compatibility table shows its results on Chroma 1.5.9 and on Chroma Cloud.
On Chroma Cloud the provider also does hybrid search, vectors and keywords together, with HybridSearchAsync.
In the CI of the toolkit, the provider runs the conformance tests of Microsoft.Extensions.VectorData against a real Chroma, like the other providers.
The client and the other ChromaDotNet libraries are introduced in an earlier article.
Thanks
- Adam Sitnik, for the review and for accepting the provider into the toolkit.
- Jiri Cincura, Nedeljko Savic, Rich Lander and Hamed Hasani, authors of ChromaDB.Client, the client ChromaDotNet started again from.
- Luis Quintanilla, who with Jiri Cincura introduced ChromaDB.Client on the .NET blog in 2025.
- Shay Rojansky, for Microsoft.Extensions.VectorData and its conformance tests, which the provider runs.
- The authors of the Qdrant provider, which gave the Chroma provider its structure.
Links
- Package: CommunityToolkit.VectorData.Chroma
- Code: CommunityToolkit/AI
- Pull request: CommunityToolkit/AI#58
- Client: chromadotnet.org
ChromaDotNet is a personal open source project of Federico Laurianti. Independent project. Not affiliated with, endorsed by or sponsored by Chroma Inc. CHROMA is a registered trademark of Chroma Inc., used here only to describe compatibility.