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 ] )