Skip to content

Releases: ChromaDotNet/ChromaDB.VectorData

v0.3.7

Choose a tag to compare

@Laurianti Laurianti released this 06 Oct 04:56

Patch release of ChromaDotNet.VectorData: the README says how the registrations work with trimming and NativeAOT. Built on ChromaDotNet.Client 2.9.2.

dotnet add package ChromaDotNet.VectorData

Fixes

  • README: AddChromaVectorStore and AddKeyedChromaVectorStore work with trimming and NativeAOT, as they do since 0.3.2. Only AddChromaCollection and AddKeyedChromaCollection map a record type, so they are marked as incompatible. There, register the vector store and get the collection from it with GetDynamicCollection. Before, the README said that every registration was incompatible.

Tested

The NativeAOT application of the CI registers the vector store with AddChromaVectorStore and publishes with no warnings. The Microsoft.Extensions.VectorData conformance tests pass against Chroma 1.5.0, 1.5.9 and the latest release.

Package: ChromaDotNet.VectorData 0.3.7

v0.3.6

Choose a tag to compare

@Laurianti Laurianti released this 06 Oct 04:24

Patch release of ChromaDotNet.VectorData: a search or a get with vectors no longer fails because of one embedding beyond the range of a float. Built on ChromaDotNet.Client 2.9.2.

dotnet add package ChromaDotNet.VectorData

Fixes

  • Floats that Chroma cannot write: Chroma sends such a float as null, like the distance to an embedding beyond the range of a float, or the normalized embedding in a cosine collection. ChromaDotNet.Client 2.9.2 reads it as NaN. Before, a search or a get with vectors that met one failed as a whole; now the other records come back.
  • Text: shorter sentences in the READMEs. The release notes inside the package keep the current release and link to all the releases here.

Tested

The Microsoft.Extensions.VectorData conformance tests pass against Chroma 1.5.0, 1.5.9 and the latest release, with two new tests for an embedding beyond the range of a float, and on Chroma Cloud the new tests, the upsert and the hybrid search tests pass.

Package: ChromaDotNet.VectorData 0.3.6

v0.3.5

Choose a tag to compare

@Laurianti Laurianti released this 06 Oct 02:31

Patch release of ChromaDotNet.VectorData: an upsert replaces a record that exists, within the limits of Chroma Cloud, and filters compare dates as C# does. Built on ChromaDotNet.Client 2.9.1.

dotnet add package ChromaDotNet.VectorData

Fixes

  • Upsert replaces a record that exists: Chroma merges the metadata of an upsert into the record that exists. Before, a value that was now null, or an empty list, kept its old value, and the filters, like the namespaces of the TextSearchStore of Semantic Kernel, still found it. Now the provider deletes the keys that the record has stored and that are now null or empty, the old document of a null text, and the BM25 vectors of a text that is now null. To know which keys a record has, it reads the record first, only when the upsert has null values.
  • Limits of Chroma Cloud: a new record gets no null keys, which Chroma Cloud counts in its 32 keys per record, and a BM25 key is deleted only where the record has it. A text of the property stored as the document longer than 8,182 bytes, the limit of a metadata value, is stored in the document only, up to the 16,384 bytes of a document: Contains finds it, == does not. The BM25 index of that property takes its text from the document.
  • Dates: a DateTimeOffset is stored in UTC, and comes back as the same instant with offset zero. ==, != and Contains compare a DateTimeOffset as an instant and a DateTime by its ticks, whatever its kind. A DateTimeOffset stored by an earlier version with another offset is found with that offset.
  • Numbers: with ChromaDotNet.Client 2.9.1 a double with an integer value is written as a double, so that D < 2.2 finds 2.0 and Ds.Contains(1.0) finds [1.0, 2.5].
  • README: the limits of Chroma Cloud, the dates, and that CreateBm25Indexes makes creating a collection fail on a single Chroma server.

Tested

The Microsoft.Extensions.VectorData conformance tests pass against Chroma 1.5.0, 1.5.9 and the latest release, with new tests for the upsert, the limits of Chroma Cloud and the dates, and on Chroma Cloud the upsert, metadata, document, hybrid search and TextSearchStore tests pass.

Package: ChromaDotNet.VectorData 0.3.5

v0.3.4

Choose a tag to compare

@Laurianti Laurianti released this 05 Oct 14:09

Patch release of ChromaDotNet.VectorData: the package tags. Built on ChromaDotNet.Client 2.8.0.

dotnet add package ChromaDotNet.VectorData

Fixes

  • Package tags: vector-database in place of vector and database.

Package: ChromaDotNet.VectorData 0.3.4

v0.3.3

Choose a tag to compare

@Laurianti Laurianti released this 05 Oct 13:33

Patch release of ChromaDotNet.VectorData: a correction to the documentation of CreateBm25Indexes. Built on ChromaDotNet.Client 2.8.0.

dotnet add package ChromaDotNet.VectorData

Fixes

  • Documentation of CreateBm25Indexes: ChromaDotNet.Client computes the BM25 vectors from the text of the property as it writes the records, and Chroma applies the inverse document frequency to them. Before, the documentation said that Chroma computes the vectors.

Package: ChromaDotNet.VectorData 0.3.3

v0.3.2

Choose a tag to compare

@Laurianti Laurianti released this 05 Oct 13:12

Patch release of ChromaDotNet.VectorData: the vector store registers with dependency injection also with NativeAOT and trimming, and the README of the package is complete. Built on ChromaDotNet.Client 2.8.0.

dotnet add package ChromaDotNet.VectorData

Fixes

  • NativeAOT and trimming with dependency injection: AddChromaVectorStore and AddKeyedChromaVectorStore no longer warn, as the vector store maps no record type: register it and get a ChromaDynamicCollection with GetDynamicCollection. The collection registrations, which map the record type by reflection, still warn, and their warnings now say this. Before, every registration warned, and the warnings for trimming and for NativeAOT had each other's message.
  • Documentation: the README of the package describes the registrations and the package of AddChromaClient, the score of hybrid search, the nullable types and the target frameworks; the XML documentation gives the lifetime of a collection registration and when the vector store disposes its HttpClient.

Tested

The Microsoft.Extensions.VectorData conformance tests pass against Chroma 1.5.0, 1.5.9 and the latest release, and the NativeAOT application of the repository now registers the vector store with dependency injection.

Package: ChromaDotNet.VectorData 0.3.2

v0.3.1

Choose a tag to compare

@Laurianti Laurianti released this 05 Oct 10:15

Patch release of ChromaDotNet.VectorData: the TextSearchStore of Semantic Kernel works again with its default options. Built on ChromaDotNet.Client 2.8.0.

dotnet add package ChromaDotNet.VectorData

Fixes

  • Hybrid search through GetService: a collection answers IKeywordHybridSearchable only with CreateBm25Indexes and a full-text indexed string property, where hybrid search can work. The TextSearchStore of Semantic Kernel chooses hybrid search through GetService: before, it chose it also on a single Chroma server, or on Chroma Cloud without the option, and threw an InvalidOperationException; now it searches by vector there, as with 0.2.0. HybridSearchAsync still works when called directly, like on a collection created by the Python client of Chroma with a chroma_bm25 index.
  • Package: the ChromaDotNet logo as the icon.

Tested

The Microsoft.Extensions.VectorData conformance tests pass against Chroma 1.5.0, 1.5.9 and the latest release, with a new test that runs the TextSearchStore of Semantic Kernel with its default options, and on Chroma Cloud the hybrid search tests pass.

Package: ChromaDotNet.VectorData 0.3.1

v0.3.0

Choose a tag to compare

@Laurianti Laurianti released this 05 Oct 08:56

Minor release of ChromaDotNet.VectorData: hybrid search on Chroma Cloud, built on ChromaDotNet.Client 2.8.0. No breaking change to the API of the provider: package validation against 0.2.0 finds none.

dotnet add package ChromaDotNet.VectorData

New

  • Hybrid search on Chroma Cloud: HybridSearchAsync fuses the ranks of the vector search and of a BM25 search of the keywords in a full-text indexed string property. A record without any of the keywords gets nothing from the BM25 search, as in a keyword search.
  • CreateBm25Indexes in ChromaCollectionOptions and ChromaVectorStoreOptions: creating the collection also creates a BM25 index, a sparse vector index of Chroma, for each full-text indexed string property, and the client computes the BM25 vectors of the records as it writes them. A collection created by another Chroma client, like the Python one, with a chroma_bm25 index works too.
// client is a ChromaClient for Chroma Cloud, and Hotel has a full-text indexed string property, as in the README:
// [VectorStoreData(IsFullTextIndexed = true)] public string? Name { get; set; }
var collection = new ChromaCollection<string, Hotel>(client, "hotels-hybrid", new() { CreateBm25Indexes = true });
await collection.EnsureCollectionExistsAsync();

var results = collection.HybridSearchAsync(new float[] { 0.1f, 0.2f, 0.3f, 0.4f }, ["pool", "spa"], top: 5);
  • ChromaDotNet.Client 2.8.0: on Chroma Cloud, reads and writes of more than 300 records go in pages and batches by themselves, without WithBatchSplitting.
  • Package: the description says that the project is a community project, not affiliated with Chroma; the chroma-cloud tag; the LICENSE in the package.

ChromaDotNet.Client 2.8.0 changes the API of the client, like the names of its methods, which end in Async: code that uses ChromaClient directly needs the changes in its release notes.

Tested

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.

Package: ChromaDotNet.VectorData 0.3.0

v0.2.0

Choose a tag to compare

@Laurianti Laurianti released this 05 Oct 08:56

Minor release of ChromaDotNet.VectorData: registration with the options of the client, reads of more than 300 records on Chroma Cloud, and full-text filters on the Chroma document. Built on ChromaDotNet.Client 2.6.0.

dotnet add package ChromaDotNet.VectorData

New

  • Registration with the options of the client: AddChromaVectorStore and AddChromaCollection with a ChromaConfigurationOptions, also keyed, for options like those of Chroma Cloud: token, tenant, database and batch size.
  • Reads in pages: with WithBatchSplitting(maxBatchSize), gets by key and with a filter read in pages of that size. Chroma Cloud returns at most 300 records per request: before, a read of more returned 300, without an error.
  • The full-text property as the Chroma document: the only full-text indexed string property is also stored as the document, where the other Chroma clients store their text. Contains on it filters the text with where_document, joined to the other conditions with &&, and a record written by another Chroma client reads its text from the document.

Package: ChromaDotNet.VectorData 0.2.0

v0.1.2

Choose a tag to compare

@Laurianti Laurianti released this 05 Oct 08:56

Patch release of ChromaDotNet.VectorData: filters on the key, the space of existing collections, empty lists, and the full-text indexed properties of Semantic Kernel and Agent Framework. Built on ChromaDotNet.Client 2.6.0.

dotnet add package ChromaDotNet.VectorData

Fixes

  • Filters on the key: == and Contains over a list of keys look the records up by id. Before, a filter on the key returned no record, without an error.
  • The space of an existing collection: a collection whose space does not match the distance function, like one created by another Chroma client with the default l2, throws an InvalidOperationException. Before, it gave wrong scores, like -24 for a cosine similarity.
  • Empty lists are not stored, as Chroma drops them, and come back as null.
  • Contains over an empty list matches no record, without a request. Before, it threw.
  • A collection created again elsewhere: when Chroma no longer finds the id of the collection, the provider looks the collection up again by name, once.
  • Full-text indexed properties are accepted, as TextSearchStore of Semantic Kernel and the chat history memory of Agent Framework declare them. Before, the provider rejected them.
  • With ChromaDotNet.Client 2.6.0, the space of Chroma Cloud collections is read, for the check above.

Package: ChromaDotNet.VectorData 0.1.2