diff --git a/src/Weaviate.Client.Tests/Unit/TestVectorizers.cs b/src/Weaviate.Client.Tests/Unit/TestVectorizers.cs
index fc07e839..b92fa73a 100644
--- a/src/Weaviate.Client.Tests/Unit/TestVectorizers.cs
+++ b/src/Weaviate.Client.Tests/Unit/TestVectorizers.cs
@@ -197,4 +197,38 @@ public void Test_NamedVectorConfig_Has_Properties()
// Assert
Assert.Contains("\"properties\":[\"name\"]", json);
}
+
+ ///
+ /// Tests that Multi2MultiVecWeaviate serializes imageFields correctly
+ ///
+ [Fact]
+ [System.Diagnostics.CodeAnalysis.SuppressMessage(
+ "Performance",
+ "CA1869:Cache and reuse 'JsonSerializerOptions' instances",
+ Justification = ""
+ )]
+ public void Test_Multi2MultiVecWeaviate_Serializes_ImageFields()
+ {
+ // Arrange
+ var vc = Configure.MultiVector(
+ "default",
+ v => v.Multi2MultiVecWeaviate(imageFields: new[] { "image" }, model: "my-model")
+ );
+
+ // Act
+ var dto = vc.Vectorizer?.ToDto() ?? default;
+ var json = JsonSerializer.Serialize(
+ dto,
+ new JsonSerializerOptions
+ {
+ PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
+ WriteIndented = false,
+ }
+ );
+
+ // Assert
+ Assert.Contains("\"imageFields\"", json);
+ Assert.Contains("\"image\"", json);
+ Assert.Contains("\"my-model\"", json);
+ }
}
diff --git a/src/Weaviate.Client/Configure/VectorizerFactoryMulti.cs b/src/Weaviate.Client/Configure/VectorizerFactoryMulti.cs
index 5373ebb5..1da60991 100644
--- a/src/Weaviate.Client/Configure/VectorizerFactoryMulti.cs
+++ b/src/Weaviate.Client/Configure/VectorizerFactoryMulti.cs
@@ -95,5 +95,24 @@ public VectorizerConfig Multi2MultiVecJinaAI(
VectorizeCollectionName = vectorizeCollectionName,
Weights = VectorizerWeights.FromWeightedFields(imageFields, textFields),
};
+
+ ///
+ /// Creates a multi2multivec-weaviate vectorizer configuration
+ ///
+ /// The image fields to vectorize
+ /// The base url
+ /// The model
+ /// The vectorizer config
+ public VectorizerConfig Multi2MultiVecWeaviate(
+ string[]? imageFields = null,
+ string? baseURL = null,
+ string? model = null
+ ) =>
+ new Multi2MultiVecWeaviate
+ {
+ BaseURL = baseURL,
+ Model = model,
+ ImageFields = imageFields,
+ };
#pragma warning restore CA1822 // Mark members as static
}
diff --git a/src/Weaviate.Client/Models/Vectorizer.cs b/src/Weaviate.Client/Models/Vectorizer.cs
index d3a8f5a8..2c720d7f 100644
--- a/src/Weaviate.Client/Models/Vectorizer.cs
+++ b/src/Weaviate.Client/Models/Vectorizer.cs
@@ -499,6 +499,36 @@ internal Multi2MultiVecJinaAI() { }
public bool? VectorizeCollectionName { get; set; } = null;
}
+ ///
+ /// The configuration for multi-media multi-vector vectorization using the Weaviate module.
+ /// Accepts only image fields. See the documentation for detailed usage.
+ ///
+ [Vectorizer("multi2multivec-weaviate", VectorType.MultiVector)]
+ public record Multi2MultiVecWeaviate : VectorizerConfig
+ {
+ ///
+ /// Initializes a new instance of the class
+ ///
+ [JsonConstructor]
+ internal Multi2MultiVecWeaviate() { }
+
+ ///
+ /// Gets or sets the value of the base url
+ ///
+ [JsonPropertyName("baseUrl")]
+ public string? BaseURL { get; set; } = null;
+
+ ///
+ /// Gets or sets the value of the model
+ ///
+ public string? Model { get; set; } = null;
+
+ ///
+ /// Gets or sets the image fields for vectorization
+ ///
+ public string[]? ImageFields { get; set; } = null;
+ }
+
///
/// The configuration for multi-media vectorization using the VoyageAI module.
/// See the documentation for detailed usage.
diff --git a/src/Weaviate.Client/PublicAPI.Unshipped.txt b/src/Weaviate.Client/PublicAPI.Unshipped.txt
index 4e2c5678..f0a3350a 100644
--- a/src/Weaviate.Client/PublicAPI.Unshipped.txt
+++ b/src/Weaviate.Client/PublicAPI.Unshipped.txt
@@ -6595,6 +6595,25 @@ Weaviate.Client.WeaviateUnprocessableEntityException.WeaviateUnprocessableEntity
~Weaviate.Client.Models.Typed.WeaviateGroup.WeaviateGroup(Weaviate.Client.Models.Typed.WeaviateGroup! original) -> void
~Weaviate.Client.Models.Typed.WeaviateGroup.WeaviateGroup(Weaviate.Client.Models.Typed.WeaviateGroup! original) -> void
~Weaviate.Client.Models.Typed.WeaviateObject.WeaviateObject(Weaviate.Client.Models.Typed.WeaviateObject! original) -> void
+override sealed Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate.Equals(Weaviate.Client.Models.VectorizerConfig? other) -> bool
+override Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate.$() -> Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate!
+override Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate.EqualityContract.get -> System.Type!
+override Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate.Equals(object? obj) -> bool
+override Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate.GetHashCode() -> int
+override Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate.PrintMembers(System.Text.StringBuilder! builder) -> bool
+override Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate.ToString() -> string!
+static Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate.operator !=(Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate? left, Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate? right) -> bool
+static Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate.operator ==(Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate? left, Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate? right) -> bool
+virtual Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate.Equals(Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate? other) -> bool
+Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate
+Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate.BaseURL.get -> string?
+Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate.BaseURL.set -> void
+Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate.ImageFields.get -> string![]?
+Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate.ImageFields.set -> void
+Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate.Model.get -> string?
+Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate.Model.set -> void
+Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate.Multi2MultiVecWeaviate(Weaviate.Client.Models.Vectorizer.Multi2MultiVecWeaviate! original) -> void
+Weaviate.Client.VectorizerFactoryMulti.Multi2MultiVecWeaviate(string![]? imageFields = null, string? baseURL = null, string? model = null) -> Weaviate.Client.Models.VectorizerConfig!
Weaviate.Client.RequiresWeaviateVersionAttribute
Weaviate.Client.RequiresWeaviateVersionAttribute.MinimumVersion.get -> System.Version!
Weaviate.Client.RequiresWeaviateVersionAttribute.RequiresWeaviateVersionAttribute(int major, int minor, int patch = 0) -> void