From bf02bee9fa35896447c0a53257ff63d0105113ab Mon Sep 17 00:00:00 2001 From: Christopher Krah <48338417+chrikrah@users.noreply.github.com> Date: Thu, 29 Oct 2026 17:20:44 +0100 Subject: [PATCH] fix(config): map skip_vectorization for properties created with vector_config `_CollectionConfigCreate.__add_props` read the vectorizers only from the deprecated `vectorizer_config`. A collection created with `vector_config=Configure.Vectors...` passed `None` to `Property._to_dict`, so `skip_vectorization` and `vectorize_property_name` went out as raw snake_case keys that the server ignores, and the property was vectorized anyway. Collect the vectorizers from `vector_config` too, so the property gets a `moduleConfig` entry per vectorizer, as it does for named vectors. Signed-off-by: Christopher Krah <48338417+chrikrah@users.noreply.github.com> --- test/collection/test_config.py | 30 ++++++++++++++++++++++++ weaviate/collections/classes/config.py | 32 +++++++++++++++----------- 2 files changed, 49 insertions(+), 13 deletions(-) diff --git a/test/collection/test_config.py b/test/collection/test_config.py index 360a0d138..996bdc4cd 100644 --- a/test/collection/test_config.py +++ b/test/collection/test_config.py @@ -874,6 +874,36 @@ def test_config_with_vectorizer_and_properties( } +def test_config_with_vector_config_and_properties() -> None: + config = _CollectionConfigCreate( + name="test", + properties=[ + Property( + name="text", + data_type=DataType.TEXT, + skip_vectorization=True, + vectorize_property_name=False, + ) + ], + vector_config=[ + Configure.Vectors.text2vec_transformers(name="first"), + Configure.Vectors.self_provided(name="second"), + ], + ) + assert config._to_dict()["properties"] == [ + { + "dataType": ["text"], + "name": "text", + "moduleConfig": { + "text2vec-transformers": { + "skip": True, + "vectorizePropertyName": False, + } + }, + } + ] + + TEST_CONFIG_WITH_GENERATIVE = [ ( Configure.Generative.openai(), diff --git a/weaviate/collections/classes/config.py b/weaviate/collections/classes/config.py index 81456001f..9bc440712 100644 --- a/weaviate/collections/classes/config.py +++ b/weaviate/collections/classes/config.py @@ -2782,22 +2782,28 @@ def __add_props( ) -> None: if props is None: return + vectorizers: Optional[List[Union[Vectorizers, _EnumLikeStr]]] = ( + [self.vectorizerConfig.vectorizer] + if isinstance(self.vectorizerConfig, _VectorizerConfigCreate) + else ( + None + if self.vectorizerConfig is None + else [conf.vectorizer.vectorizer for conf in self.vectorizerConfig] + ) + ) + if self.vectorConfig is not None: + vector_configs = ( + [self.vectorConfig] + if isinstance(self.vectorConfig, VectorConfigCreate) + else self.vectorConfig + ) + vectorizers = (vectorizers or []) + [ + conf.vectorizer.vectorizer for conf in vector_configs + ] existing_props = ret_dict.get("properties", []) existing_props.extend( [ - ( - prop._to_dict( - [self.vectorizerConfig.vectorizer] - if isinstance(self.vectorizerConfig, _VectorizerConfigCreate) - else ( - None - if self.vectorizerConfig is None - else [conf.vectorizer.vectorizer for conf in self.vectorizerConfig] - ) - ) - if isinstance(prop, Property) - else prop._to_dict() - ) + prop._to_dict(vectorizers) if isinstance(prop, Property) else prop._to_dict() for prop in props ] )