Sylin.Koan.Data.Vector.Connector.Chroma
1.0.395
dotnet add package Sylin.Koan.Data.Vector.Connector.Chroma --version 1.0.395
NuGet\Install-Package Sylin.Koan.Data.Vector.Connector.Chroma -Version 1.0.395
<PackageReference Include="Sylin.Koan.Data.Vector.Connector.Chroma" Version="1.0.395" />
<PackageVersion Include="Sylin.Koan.Data.Vector.Connector.Chroma" Version="1.0.395" />
<PackageReference Include="Sylin.Koan.Data.Vector.Connector.Chroma" />
paket add Sylin.Koan.Data.Vector.Connector.Chroma --version 1.0.395
#r "nuget: Sylin.Koan.Data.Vector.Connector.Chroma, 1.0.395"
#:package Sylin.Koan.Data.Vector.Connector.Chroma@1.0.395
#addin nuget:?package=Sylin.Koan.Data.Vector.Connector.Chroma&version=1.0.395
#tool nuget:?package=Sylin.Koan.Data.Vector.Connector.Chroma&version=1.0.395
Sylin.Koan.Data.Vector.Connector.Chroma
Chroma vector storage for Koan. Reference the package, call AddKoan(), and Vector<T> kNN search
runs against a Chroma server over REST v2 — plan-bound spaces, metadata filter pushdown, and
session-visible mutations with no client driver dependency.
Supported provider (member of
external-vector-providers): the vector-plane conformance suite passes against a real Chroma 1.5.9 server — AODB isolation cells and the V-01..V-24 provider annex, filter convergence, capability truth. The "not declared" rows below are part of the claim.
Install
dotnet add package Sylin.Koan.Data.Vector.Connector.Chroma
builder.Services.AddKoan(koan =>
{
koan.Data.Source("Default").Vector<Todo>(space => space
.Name("todos")
.Dimensions(384)
.Metric(VectorMetric.Cosine)
.Visibility(VectorVisibility.Session));
});
{ "Koan": { "Data": { "Chroma": { "Endpoint": "http://localhost:8000" } } } }
Zero configuration
docker run -d -p 8000:8000 chromadb/chroma:1.5.9
No configuration and no credentials: the adapter resolves auto to the conventional local
endpoint (http://localhost:8000, default tenant and database), creates collections under managed
lifecycle, and Chroma itself is unauthenticated by default. Point elsewhere with
Koan:Data:Chroma:Endpoint (or a CHROMA_URL/CHROMA_ENDPOINT environment variable, which
discovery also honors).
The adapter speaks the Chroma REST v2 API under the configured tenant/database
(default_tenant/default_database on a standalone server). Collections are created and
shape-validated under the framework's managed lifecycle: metric at creation, dimension pinned by the
first write, both re-validated against the declared VectorSpacePlan on every boot.
What it adds
| Capability | State |
|---|---|
| kNN search with normalized [0,1] similarity (cosine, l2, inner product) | declared, proven by the vector-plane suite |
| Metadata filter pushdown (Eq/Ne/range/In/Nin, and/or groups) | declared and store-executed against the flat scalar index |
| Deterministic tie ordering, stable positional get-many, honest upsert/delete outcomes | declared |
| Isolation: row / container / database scoped | declared, proven by the AODB cells (container + database via the name-fold floor) |
| Hybrid (lexical + semantic) search, named spaces, continuation tokens, atomic batches, streaming export | not declared — rejected with a corrective message, not silently approximated |
Negation (Not), nested metadata paths, array/size operators, Exists, case-insensitive comparison, range comparisons on non-numeric values |
not declared — Chroma's where language cannot express them faithfully; the filter fails closed before provider I/O |
How it composes
One entity space maps to one Chroma collection; ambient partitions and routed sources fold into the collection name (the name-mangling floor every Koan vector store realizes). Point identity is the entity key verbatim, with scope-compiled identities folded into a deterministic UUID so a scoped row never collides with its unscoped twin. Metadata is dual-written: the full neutral value algebra rides a reserved JSON string for exact round-trips, and a flat scalar projection (same conversion on write and on filter values) makes metadata filters answerable by the store itself.
Limits
- Range operators (
$gt/$gte/$lt/$lte) push down only when the comparison value is numeric — Chroma rejects non-numeric range comparisons server-side, so those fail closed at translation. - Metadata containers (objects, arrays) round-trip through the neutral blob but are not filterable; Chroma matches only flat scalars.
MinimumSimilarityhas no Chroma server primitive: the search requests the widest honest window (bounded byMaxSearchCandidates) and applies the threshold on the normalized scores it returns.- Distance semantics are Chroma's: cosine distance = 1 − similarity, l2 = squared Euclidean, inner product distance = 1 − inner product; the adapter normalizes each onto the shared scale.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.Extensions.Configuration (>= 10.0.10)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.10)
- Microsoft.Extensions.Configuration.EnvironmentVariables (>= 10.0.10)
- Microsoft.Extensions.Configuration.Json (>= 10.0.10)
- Microsoft.Extensions.DependencyInjection (>= 10.0.10)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Hosting (>= 10.0.10)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Http (>= 10.0.10)
- Microsoft.Extensions.Logging (>= 10.0.10)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Logging.Console (>= 10.0.10)
- Microsoft.Extensions.Options (>= 10.0.10)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.10)
- Microsoft.Extensions.Options.DataAnnotations (>= 10.0.10)
- Newtonsoft.Json (>= 13.0.4)
- Sylin.Koan.Core (>= 1.0.39 && < 2.0.0)
- Sylin.Koan.Data.Abstractions (>= 1.0.41 && < 2.0.0)
- Sylin.Koan.Data.Core (>= 1.0.73 && < 2.0.0)
- Sylin.Koan.Data.Vector (>= 1.0.49 && < 2.0.0)
- Sylin.Koan.Data.Vector.Abstractions (>= 1.0.33 && < 2.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.395 | 120 | 9/13/2026 |
| 1.0.392 | 109 | 9/12/2026 |
| 1.0.389 | 100 | 9/12/2026 |
| 1.0.387 | 100 | 9/10/2026 |
| 1.0.383 | 108 | 9/10/2026 |
| 1.0.379 | 107 | 9/9/2026 |
| 1.0.375 | 100 | 9/9/2026 |
| 1.0.372 | 97 | 9/9/2026 |
| 1.0.367 | 105 | 9/9/2026 |
| 1.0.365 | 111 | 9/9/2026 |
| 1.0.360 | 110 | 9/5/2026 |
| 1.0.359 | 123 | 8/30/2026 |
| 1.0.357 | 102 | 8/30/2026 |