diff --git a/src/Weaviate.Client.Tests/Unit/TestVectorizers.cs b/src/Weaviate.Client.Tests/Unit/TestVectorizers.cs
index 4ecbb419..feb90929 100644
--- a/src/Weaviate.Client.Tests/Unit/TestVectorizers.cs
+++ b/src/Weaviate.Client.Tests/Unit/TestVectorizers.cs
@@ -496,4 +496,90 @@ public void Test_Text2VecDigitalOcean_Omits_Unset_BaseURL()
Assert.Contains("\"model\":\"qwen3-embedding-0.6b\"", json);
Assert.DoesNotContain("\"baseURL\"", json);
}
+
+ ///
+ /// Tests that Text2VecAWS serializes dimensions as a JSON number (not a string) when it
+ /// is set via the Bedrock factory.
+ ///
+ [Fact]
+ [System.Diagnostics.CodeAnalysis.SuppressMessage(
+ "Performance",
+ "CA1869:Cache and reuse 'JsonSerializerOptions' instances",
+ Justification = ""
+ )]
+ public void Test_Text2VecAWS_Serializes_Dimensions_When_Set()
+ {
+ // Arrange
+ var vc = Configure.Vector(
+ "default",
+ v =>
+ v.Text2VecAWSBedrock(
+ region: "us-east-1",
+ model: "amazon.titan-embed-text-v2:0",
+ dimensions: 1024
+ )
+ );
+
+ // Act
+ var dto = vc.Vectorizer?.ToDto() ?? default;
+ var json = JsonSerializer.Serialize(
+ dto,
+ new JsonSerializerOptions
+ {
+ PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
+ DefaultIgnoreCondition = System
+ .Text
+ .Json
+ .Serialization
+ .JsonIgnoreCondition
+ .WhenWritingNull,
+ WriteIndented = false,
+ }
+ );
+
+ // Assert
+ Assert.Contains("\"text2vec-aws\"", json);
+ Assert.Contains("\"dimensions\":1024", json);
+ Assert.DoesNotContain("\"dimensions\":\"1024\"", json);
+ }
+
+ ///
+ /// Tests that Text2VecAWS omits dimensions when it is unset so the server can apply its
+ /// default.
+ ///
+ [Fact]
+ [System.Diagnostics.CodeAnalysis.SuppressMessage(
+ "Performance",
+ "CA1869:Cache and reuse 'JsonSerializerOptions' instances",
+ Justification = ""
+ )]
+ public void Test_Text2VecAWS_Omits_Unset_Dimensions()
+ {
+ // Arrange
+ var vc = Configure.Vector(
+ "default",
+ v => v.Text2VecAWSSagemaker(region: "us-east-1", endpoint: "my-endpoint")
+ );
+
+ // Act
+ var dto = vc.Vectorizer?.ToDto() ?? default;
+ var json = JsonSerializer.Serialize(
+ dto,
+ new JsonSerializerOptions
+ {
+ PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
+ DefaultIgnoreCondition = System
+ .Text
+ .Json
+ .Serialization
+ .JsonIgnoreCondition
+ .WhenWritingNull,
+ WriteIndented = false,
+ }
+ );
+
+ // Assert
+ Assert.Contains("\"text2vec-aws\"", json);
+ Assert.DoesNotContain("\"dimensions\"", json);
+ }
}
diff --git a/src/Weaviate.Client/Configure/VectorizerFactory.cs b/src/Weaviate.Client/Configure/VectorizerFactory.cs
index c4bf056d..79b30cb2 100644
--- a/src/Weaviate.Client/Configure/VectorizerFactory.cs
+++ b/src/Weaviate.Client/Configure/VectorizerFactory.cs
@@ -536,11 +536,13 @@ public VectorizerConfig Ref2VecCentroid(string[] referenceProperties, string met
///
/// The region
/// The model
+ /// Number of vector dimensions.
/// The vectorize collection name
/// The vectorizer config
public VectorizerConfig Text2VecAWSBedrock(
string region,
string model,
+ int? dimensions = null,
bool? vectorizeCollectionName = null
) =>
new Text2VecAWS
@@ -551,6 +553,7 @@ public VectorizerConfig Text2VecAWSBedrock(
Model = model,
TargetModel = null,
TargetVariant = null,
+ Dimensions = dimensions,
VectorizeCollectionName = vectorizeCollectionName,
};
@@ -561,6 +564,7 @@ public VectorizerConfig Text2VecAWSBedrock(
/// The endpoint
/// The target model
/// The target variant
+ /// Number of vector dimensions.
/// The vectorize collection name
/// The vectorizer config
public VectorizerConfig Text2VecAWSSagemaker(
@@ -568,6 +572,7 @@ public VectorizerConfig Text2VecAWSSagemaker(
string endpoint,
string? targetModel = null,
string? targetVariant = null,
+ int? dimensions = null,
bool? vectorizeCollectionName = null
) =>
new Text2VecAWS
@@ -578,6 +583,7 @@ public VectorizerConfig Text2VecAWSSagemaker(
Model = null,
TargetModel = targetModel,
TargetVariant = targetVariant,
+ Dimensions = dimensions,
VectorizeCollectionName = vectorizeCollectionName,
};
diff --git a/src/Weaviate.Client/Models/Vectorizer.cs b/src/Weaviate.Client/Models/Vectorizer.cs
index e27ce4f9..2a3ea405 100644
--- a/src/Weaviate.Client/Models/Vectorizer.cs
+++ b/src/Weaviate.Client/Models/Vectorizer.cs
@@ -717,6 +717,11 @@ internal Text2VecAWS() { }
///
public string? TargetVariant { get; set; } = null;
+ ///
+ /// Gets or sets the value of the dimensions
+ ///
+ public int? Dimensions { get; set; } = null;
+
///
/// Gets or sets the value of the vectorize collection name
///
diff --git a/src/Weaviate.Client/PublicAPI.Unshipped.txt b/src/Weaviate.Client/PublicAPI.Unshipped.txt
index 7dc5c581..e320f869 100644
--- a/src/Weaviate.Client/PublicAPI.Unshipped.txt
+++ b/src/Weaviate.Client/PublicAPI.Unshipped.txt
@@ -1 +1,7 @@
#nullable enable
+*REMOVED*Weaviate.Client.VectorizerFactory.Text2VecAWSBedrock(string! region, string! model, bool? vectorizeCollectionName = null) -> Weaviate.Client.Models.VectorizerConfig!
+*REMOVED*Weaviate.Client.VectorizerFactory.Text2VecAWSSagemaker(string! region, string! endpoint, string? targetModel = null, string? targetVariant = null, bool? vectorizeCollectionName = null) -> Weaviate.Client.Models.VectorizerConfig!
+Weaviate.Client.Models.Vectorizer.Text2VecAWS.Dimensions.get -> int?
+Weaviate.Client.Models.Vectorizer.Text2VecAWS.Dimensions.set -> void
+Weaviate.Client.VectorizerFactory.Text2VecAWSBedrock(string! region, string! model, int? dimensions = null, bool? vectorizeCollectionName = null) -> Weaviate.Client.Models.VectorizerConfig!
+Weaviate.Client.VectorizerFactory.Text2VecAWSSagemaker(string! region, string! endpoint, string? targetModel = null, string? targetVariant = null, int? dimensions = null, bool? vectorizeCollectionName = null) -> Weaviate.Client.Models.VectorizerConfig!