Skip to content

Commit a3c9d77

Browse files
ContainerProperties: Refactors Vector Embedding and Indexing Policy Interfaces to Mark Them as Public for Preview (#4486)
* Code changes to mark internal vector interfaces as public. * Code changes to update the public and preview modifiers. * Code changes to update preview and ga contracts. * Code changes to mark the policy definitions as public interface. * Code changes to update GA contract and use #if all over. * Code changes to fix some of the broken tests in preview. * Code changes to update the preview contract too reflect the JSON Ignore. * Code changes to upgrade direct version to 3.34.2
1 parent 3ae56db commit a3c9d77

16 files changed

+510
-67
lines changed

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<ClientOfficialVersion>3.39.1</ClientOfficialVersion>
44
<ClientPreviewVersion>3.40.0</ClientPreviewVersion>
55
<ClientPreviewSuffixVersion>preview.1</ClientPreviewSuffixVersion>
6-
<DirectVersion>3.34.0</DirectVersion>
6+
<DirectVersion>3.34.2</DirectVersion>
77
<EncryptionOfficialVersion>2.0.4</EncryptionOfficialVersion>
88
<EncryptionPreviewVersion>2.1.0</EncryptionPreviewVersion>
99
<EncryptionPreviewSuffixVersion>preview4</EncryptionPreviewSuffixVersion>

Microsoft.Azure.Cosmos/src/Fluent/Settings/ContainerBuilder.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,12 @@ public ClientEncryptionPolicyDefinition WithClientEncryptionPolicy(int policyFor
122122
/// </summary>
123123
/// <param name="embeddings">List of vector embeddings to include in the policy definition.</param>
124124
/// <returns>An instance of <see cref="VectorEmbeddingPolicyDefinition"/>.</returns>
125-
internal VectorEmbeddingPolicyDefinition WithVectorEmbeddingPolicy(
125+
#if PREVIEW
126+
public
127+
#else
128+
internal
129+
#endif
130+
VectorEmbeddingPolicyDefinition WithVectorEmbeddingPolicy(
126131
Collection<Embedding> embeddings)
127132
{
128133
return new VectorEmbeddingPolicyDefinition(

Microsoft.Azure.Cosmos/src/Fluent/Settings/IndexingPolicyDefinition.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,12 @@ public SpatialIndexDefinition<IndexingPolicyDefinition<T>> WithSpatialIndex()
117117
/// Defines a <see cref="VectorIndexPath"/> in the current <see cref="Container"/>'s definition.
118118
/// </summary>
119119
/// <returns>An instance of <see cref="VectorIndexDefinition{T}"/>.</returns>
120-
internal VectorIndexDefinition<IndexingPolicyDefinition<T>> WithVectorIndex()
120+
#if PREVIEW
121+
public
122+
#else
123+
internal
124+
#endif
125+
VectorIndexDefinition<IndexingPolicyDefinition<T>> WithVectorIndex()
121126
{
122127
return new VectorIndexDefinition<IndexingPolicyDefinition<T>>(
123128
this,

Microsoft.Azure.Cosmos/src/Fluent/Settings/VectorEmbeddingPolicyDefinition.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,24 @@ namespace Microsoft.Azure.Cosmos.Fluent
1111
/// <summary>
1212
/// <see cref="VectorEmbeddingPolicy"/> fluent definition.
1313
/// </summary>
14-
internal class VectorEmbeddingPolicyDefinition
14+
#if PREVIEW
15+
public
16+
#else
17+
internal
18+
#endif
19+
class VectorEmbeddingPolicyDefinition
1520
{
1621
private readonly ContainerBuilder parent;
1722
private readonly Action<VectorEmbeddingPolicy> attachCallback;
1823
private readonly Collection<Embedding> vectorEmbeddings;
1924

20-
internal VectorEmbeddingPolicyDefinition(
25+
/// <summary>
26+
/// Initializes a new instance of the <see cref="VectorEmbeddingPolicyDefinition"/> class.
27+
/// </summary>
28+
/// <param name="parent">The original instance of <see cref="ContainerBuilder"/>.</param>
29+
/// <param name="embeddings">List of embeddings to include in the policy definition.</param>
30+
/// <param name="attachCallback">A callback delegate to be used at a later point of time.</param>
31+
public VectorEmbeddingPolicyDefinition(
2132
ContainerBuilder parent,
2233
Collection<Embedding> embeddings,
2334
Action<VectorEmbeddingPolicy> attachCallback)

Microsoft.Azure.Cosmos/src/Fluent/Settings/VectorIndexDefinition.cs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,23 @@ namespace Microsoft.Azure.Cosmos.Fluent
1010
/// Vector index fluent definition.
1111
/// </summary>
1212
/// <seealso cref="VectorIndexPath"/>
13-
internal class VectorIndexDefinition<T>
13+
#if PREVIEW
14+
public
15+
#else
16+
internal
17+
#endif
18+
class VectorIndexDefinition<T>
1419
{
15-
private readonly VectorIndexPath vectorIndexPath = new VectorIndexPath();
20+
private readonly VectorIndexPath vectorIndexPath = new ();
1621
private readonly T parent;
1722
private readonly Action<VectorIndexPath> attachCallback;
1823

19-
internal VectorIndexDefinition(
24+
/// <summary>
25+
/// Initializes a new instance of the <see cref="VectorIndexDefinition{T}"/> class.
26+
/// </summary>
27+
/// <param name="parent">The original instance of <see cref="ContainerBuilder"/>.</param>
28+
/// <param name="attachCallback">A callback delegate to be used at a later point of time.</param>
29+
public VectorIndexDefinition(
2030
T parent,
2131
Action<VectorIndexPath> attachCallback)
2232
{

Microsoft.Azure.Cosmos/src/Resource/Settings/ContainerProperties.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,12 @@ public IndexingPolicy IndexingPolicy
306306
/// </para>
307307
/// </remarks>
308308
[JsonIgnore]
309-
internal VectorEmbeddingPolicy VectorEmbeddingPolicy
309+
#if PREVIEW
310+
public
311+
#else
312+
internal
313+
#endif
314+
VectorEmbeddingPolicy VectorEmbeddingPolicy
310315
{
311316
get => this.vectorEmbeddingPolicyInternal;
312317

Microsoft.Azure.Cosmos/src/Resource/Settings/DistanceFunction.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,12 @@ namespace Microsoft.Azure.Cosmos
99
/// Defines the distance function for a vector index specification in the Azure Cosmos DB service.
1010
/// </summary>
1111
/// <seealso cref="Embedding"/> for usage.
12-
internal enum DistanceFunction
12+
#if PREVIEW
13+
public
14+
#else
15+
internal
16+
#endif
17+
enum DistanceFunction
1318
{
1419
/// <summary>
1520
/// Represents the euclidean distance function.

Microsoft.Azure.Cosmos/src/Resource/Settings/Embedding.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,12 @@ namespace Microsoft.Azure.Cosmos
1414
/// <summary>
1515
/// Represents the embedding settings for the vector index.
1616
/// </summary>
17-
internal class Embedding : IEquatable<Embedding>
17+
#if PREVIEW
18+
public
19+
#else
20+
internal
21+
#endif
22+
class Embedding : IEquatable<Embedding>
1823
{
1924
/// <summary>
2025
/// Gets or sets a string containing the path of the vector index.

Microsoft.Azure.Cosmos/src/Resource/Settings/IndexingPolicy.cs

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,12 @@ public IndexingPolicy()
111111
[JsonProperty(PropertyName = Constants.Properties.CompositeIndexes)]
112112
public Collection<Collection<CompositePath>> CompositeIndexes { get; internal set; } = new Collection<Collection<CompositePath>>();
113113

114+
/// <summary>
115+
/// Collection of spatial index definitions to be used
116+
/// </summary>
117+
[JsonProperty(PropertyName = Constants.Properties.SpatialIndexes)]
118+
public Collection<SpatialPath> SpatialIndexes { get; internal set; } = new Collection<SpatialPath>();
119+
114120
/// <summary>
115121
/// Gets the vector indexes for additional indexes
116122
/// </summary>
@@ -132,23 +138,14 @@ public IndexingPolicy()
132138
/// ]
133139
/// ]]>
134140
/// </example>
135-
internal Collection<VectorIndexPath> VectorIndexes
136-
{
137-
get => this.VectorIndexesInternal ??= new Collection<VectorIndexPath>();
138-
set => this.VectorIndexesInternal = value;
139-
}
140-
141-
/// <summary>
142-
/// Collection of spatial index definitions to be used
143-
/// </summary>
144-
[JsonProperty(PropertyName = Constants.Properties.SpatialIndexes)]
145-
public Collection<SpatialPath> SpatialIndexes { get; internal set; } = new Collection<SpatialPath>();
146-
147-
/// <summary>
148-
/// Gets or Sets an internal placeholder collection to hold the vector indexes.
149-
/// </summary>
150141
[JsonProperty(PropertyName = "vectorIndexes", NullValueHandling = NullValueHandling.Ignore)]
151-
internal Collection<VectorIndexPath> VectorIndexesInternal { get; set; }
142+
#if PREVIEW
143+
144+
public
145+
#else
146+
internal
147+
#endif
148+
Collection<VectorIndexPath> VectorIndexes { get; set; } = new Collection<VectorIndexPath>();
152149

153150
/// <summary>
154151
/// This contains additional values for scenarios where the SDK is not aware of new fields.

Microsoft.Azure.Cosmos/src/Resource/Settings/VectorDataType.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,12 @@ namespace Microsoft.Azure.Cosmos
88
/// <summary>
99
/// Defines the target data type of a vector index specification in the Azure Cosmos DB service.
1010
/// </summary>
11-
internal enum VectorDataType
11+
#if PREVIEW
12+
public
13+
#else
14+
internal
15+
#endif
16+
enum VectorDataType
1217
{
1318
/// <summary>
1419
/// Represent a float16 data type.

0 commit comments

Comments
 (0)