diff --git a/src/Weaviate.Client.Tests/Unit/TestVectorizers.cs b/src/Weaviate.Client.Tests/Unit/TestVectorizers.cs
index feb90929..a502c6fb 100644
--- a/src/Weaviate.Client.Tests/Unit/TestVectorizers.cs
+++ b/src/Weaviate.Client.Tests/Unit/TestVectorizers.cs
@@ -497,6 +497,43 @@ public void Test_Text2VecDigitalOcean_Omits_Unset_BaseURL()
Assert.DoesNotContain("\"baseURL\"", json);
}
+ ///
+ /// Tests that Text2VecGoogle omits location when unset so the server can apply its
+ /// default.
+ ///
+ [Fact]
+ [System.Diagnostics.CodeAnalysis.SuppressMessage(
+ "Performance",
+ "CA1869:Cache and reuse 'JsonSerializerOptions' instances",
+ Justification = ""
+ )]
+ public void Test_Text2VecGoogle_Omits_Unset_Location()
+ {
+ // Arrange
+ var vc = Configure.Vector("default", v => v.Text2VecGoogleVertex(projectId: "my-project"));
+
+ // 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-google\"", json);
+ Assert.DoesNotContain("\"location\"", json);
+ }
+
///
/// Tests that Text2VecAWS serializes dimensions as a JSON number (not a string) when it
/// is set via the Bedrock factory.
diff --git a/src/Weaviate.Client/Configure/VectorizerFactory.cs b/src/Weaviate.Client/Configure/VectorizerFactory.cs
index 79b30cb2..70eb6e63 100644
--- a/src/Weaviate.Client/Configure/VectorizerFactory.cs
+++ b/src/Weaviate.Client/Configure/VectorizerFactory.cs
@@ -869,6 +869,7 @@ public VectorizerConfig Text2VecOpenAI(
/// The dimensions
/// The task type
/// The vectorize collection name
+ /// The Google Vertex AI region; optional, server-defaulted when null
/// The vectorizer config
public VectorizerConfig Text2VecGoogleVertex(
string? apiEndpoint = null,
@@ -877,7 +878,8 @@ public VectorizerConfig Text2VecGoogleVertex(
string? titleProperty = null,
int? dimensions = null,
string? taskType = null,
- bool? vectorizeCollectionName = null
+ bool? vectorizeCollectionName = null,
+ string? location = null
) =>
new Text2VecGoogle
{
@@ -888,6 +890,7 @@ public VectorizerConfig Text2VecGoogleVertex(
Dimensions = dimensions,
TaskType = taskType,
VectorizeCollectionName = vectorizeCollectionName,
+ Location = location,
};
///
@@ -915,6 +918,9 @@ public VectorizerConfig Text2VecGoogleGemini(
Dimensions = dimensions,
TaskType = taskType,
VectorizeCollectionName = vectorizeCollectionName,
+ // Location (Vertex AI region) is not applicable to the Gemini
+ // (generative-language) API; left null so it is omitted on the wire.
+ Location = null,
};
///
diff --git a/src/Weaviate.Client/Models/Vectorizer.cs b/src/Weaviate.Client/Models/Vectorizer.cs
index 2a3ea405..92326145 100644
--- a/src/Weaviate.Client/Models/Vectorizer.cs
+++ b/src/Weaviate.Client/Models/Vectorizer.cs
@@ -1277,6 +1277,13 @@ internal Text2VecGoogle() { }
///
public string? TaskType { get; set; } = null;
+ ///
+ /// Gets or sets the Google Vertex AI region.
+ /// Optional; when omitted the server applies its default.
+ /// Serialized as the lowercase location module-config key.
+ ///
+ public string? Location { 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 e320f869..09359d23 100644
--- a/src/Weaviate.Client/PublicAPI.Unshipped.txt
+++ b/src/Weaviate.Client/PublicAPI.Unshipped.txt
@@ -1,7 +1,11 @@
#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!
+*REMOVED*Weaviate.Client.VectorizerFactory.Text2VecGoogleVertex(string? apiEndpoint = null, string? model = null, string? projectId = null, string? titleProperty = null, int? dimensions = null, string? taskType = 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.Models.Vectorizer.Text2VecGoogle.Location.get -> string?
+Weaviate.Client.Models.Vectorizer.Text2VecGoogle.Location.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!
+Weaviate.Client.VectorizerFactory.Text2VecGoogleVertex(string? apiEndpoint = null, string? model = null, string? projectId = null, string? titleProperty = null, int? dimensions = null, string? taskType = null, bool? vectorizeCollectionName = null, string? location = null) -> Weaviate.Client.Models.VectorizerConfig!