Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 86 additions & 0 deletions src/Weaviate.Client.Tests/Unit/TestVectorizers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -496,4 +496,90 @@ public void Test_Text2VecDigitalOcean_Omits_Unset_BaseURL()
Assert.Contains("\"model\":\"qwen3-embedding-0.6b\"", json);
Assert.DoesNotContain("\"baseURL\"", json);
}

/// <summary>
/// Tests that Text2VecAWS serializes <c>dimensions</c> as a JSON number (not a string) when it
/// is set via the Bedrock factory.
/// </summary>
[Fact]
[System.Diagnostics.CodeAnalysis.SuppressMessage(
"Performance",
"CA1869:Cache and reuse 'JsonSerializerOptions' instances",
Justification = "<Pending>"
)]
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);
}

/// <summary>
/// Tests that Text2VecAWS omits <c>dimensions</c> when it is unset so the server can apply its
/// default.
/// </summary>
[Fact]
[System.Diagnostics.CodeAnalysis.SuppressMessage(
"Performance",
"CA1869:Cache and reuse 'JsonSerializerOptions' instances",
Justification = "<Pending>"
)]
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);
}
}
6 changes: 6 additions & 0 deletions src/Weaviate.Client/Configure/VectorizerFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -536,11 +536,13 @@ public VectorizerConfig Ref2VecCentroid(string[] referenceProperties, string met
/// </summary>
/// <param name="region">The region</param>
/// <param name="model">The model</param>
/// <param name="dimensions">Number of vector dimensions.</param>
/// <param name="vectorizeCollectionName">The vectorize collection name</param>
/// <returns>The vectorizer config</returns>
public VectorizerConfig Text2VecAWSBedrock(
string region,
string model,
int? dimensions = null,
bool? vectorizeCollectionName = null
) =>
new Text2VecAWS
Expand All @@ -551,6 +553,7 @@ public VectorizerConfig Text2VecAWSBedrock(
Model = model,
TargetModel = null,
TargetVariant = null,
Dimensions = dimensions,
VectorizeCollectionName = vectorizeCollectionName,
};

Expand All @@ -561,13 +564,15 @@ public VectorizerConfig Text2VecAWSBedrock(
/// <param name="endpoint">The endpoint</param>
/// <param name="targetModel">The target model</param>
/// <param name="targetVariant">The target variant</param>
/// <param name="dimensions">Number of vector dimensions.</param>
/// <param name="vectorizeCollectionName">The vectorize collection name</param>
/// <returns>The vectorizer config</returns>
public VectorizerConfig Text2VecAWSSagemaker(
string region,
string endpoint,
string? targetModel = null,
string? targetVariant = null,
int? dimensions = null,
bool? vectorizeCollectionName = null
) =>
new Text2VecAWS
Expand All @@ -578,6 +583,7 @@ public VectorizerConfig Text2VecAWSSagemaker(
Model = null,
TargetModel = targetModel,
TargetVariant = targetVariant,
Dimensions = dimensions,
VectorizeCollectionName = vectorizeCollectionName,
};

Expand Down
5 changes: 5 additions & 0 deletions src/Weaviate.Client/Models/Vectorizer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -717,6 +717,11 @@ internal Text2VecAWS() { }
/// </summary>
public string? TargetVariant { get; set; } = null;

/// <summary>
/// Gets or sets the value of the dimensions
/// </summary>
public int? Dimensions { get; set; } = null;

/// <summary>
/// Gets or sets the value of the vectorize collection name
/// </summary>
Expand Down
6 changes: 6 additions & 0 deletions src/Weaviate.Client/PublicAPI.Unshipped.txt
Original file line number Diff line number Diff line change
@@ -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!
Loading