Repository navigation
Description
In an effort to make MEVD's APIs easier to use, I'd like to propose removing Record from many of the type names in MEVD, so have IVectorStoreCollection instead of IVectorStoreRecordCollection. This also cascades to lots of other types (VectorStoreKeyProperty and friends, [VectorStoreKey] instead of [VectorStoreRecordKey]).
I think one of the original motivators for the current naming is that the store itself can be considered a collection of collections (e.g. IVectorStore has the ListCollectionsAsync API). However, we haven't seen any other actual collection-like operations appear on IVectorStore, and there seems to be very little ambiguity at this point that IVectorStoreCollection just refers to a collection within the vector database; so IMHO we may as well make the dev experience better here and remove that word.
It's worth noting that we sometimes have quite long names, e.g. AzureCosmosDBMongoDBVectorStoreRecordCollection. If we remove Record and also apply the simplifications proposed in #10631, we end up with CosmosMongoVectorStoreCollection, which starts to be a bit more manageable!
- The old type names can stay with an
[Obsolete("...", error=true], meaning that users will get a very clear build error on the rename and a note telling them exactly what they need to do. - We're already implementing more impactful breaking changes which users would have to react to anyway... We're adding a mandatory Top parameter to the search API (.Net MEVD: Consider making Top a mandatory parameter #10193), we're about to obsolete/remove VectorizedSearchAsync with SearchEmbeddingAsync and SearchAsync, and some other stuff. In other words, given the breaking changes being done, removing Record from the type names seems really minor-impact.
/cc westey (@westey-m) Dmytro Struk (@dmytrostruk) Adam Sitnik (@adamsitnik)
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsSprint: Done
Activity
[-][MEVD] Consider renaming IVectorStoreRecordCollection to IVectorStoreCollection (and related types)[/-][+].Net: [MEVD] Consider renaming IVectorStoreRecordCollection to IVectorStoreCollection (and related types)[/+][-].Net: [MEVD] Consider renaming IVectorStoreRecordCollection to IVectorStoreCollection (and related types)[/-][+].Net: [MEVD] Consider renaming IVectorStoreRecordCollection (and related) to make it shorter[/+]roji commentedon Mar 27, 2025
For background, M.E.VectorData has two main abstractions, currently named as follows::
Options:
Dictionary<string, object>for dynamic/weakly-typed mapping. So the name here (and probably any other name ending with Collection) will be weird in that sense.roji commentedon Apr 1, 2025
Design decision: we're in principle all good with IVectorRecordCollection. However, we'll wait until the API review (end of April) before making any changes, to discuss this there and avoid doing two changes.
Remove Record from abstraction type names
Remove Record from abstraction type names
Remove Record from abstraction type names
Remove Record from abstraction type names
Remove Record from abstraction type names
Remove Record from abstraction type names
.Net: Remove Record from abstraction type names (#11832)
Shorten MEVD implementation type names
[-].Net: [MEVD] Consider renaming IVectorStoreRecordCollection (and related) to make it shorter[/-][+].Net: [MEVD] Shorten IVectorStoreRecordCollection (and related) names[/+].Net: Shorten MEVD implementation type names (#11879)
adamsitnik commentedon May 5, 2025
Fixed by #11879