diff --git a/test/collection/test_vectorizer.py b/test/collection/test_vectorizer.py index 7b5d0fab9..106a7405e 100644 --- a/test/collection/test_vectorizer.py +++ b/test/collection/test_vectorizer.py @@ -1,5 +1,32 @@ +import pytest from weaviate.collections.classes.config import Configure def test_multi2vec_clip() -> None: - Configure.Vectorizer.multi2vec_clip(image_fields=["test"]) + cfg = Configure.Vectorizer.multi2vec_clip(image_fields=["test"], vectorize_collection_name=False) + assert cfg._to_dict()["vectorizeClassName"] is False + + +@pytest.mark.parametrize( + "vectorize_collection_name", [True, False] +) +def test_multi2vec_vectorize_collection_name(vectorize_collection_name: bool) -> None: + clip_cfg = Configure.Vectorizer.multi2vec_clip(vectorize_collection_name=vectorize_collection_name) + assert clip_cfg._to_dict()["vectorizeClassName"] == vectorize_collection_name + + bind_cfg = Configure.Vectorizer.multi2vec_bind(vectorize_collection_name=vectorize_collection_name) + assert bind_cfg._to_dict()["vectorizeClassName"] == vectorize_collection_name + + cohere_cfg = Configure.Vectorizer.multi2vec_cohere(vectorize_collection_name=vectorize_collection_name) + assert cohere_cfg._to_dict()["vectorizeClassName"] == vectorize_collection_name + + voyage_cfg = Configure.Vectorizer.multi2vec_voyageai( + output_encoding="base64", vectorize_collection_name=vectorize_collection_name + ) + assert voyage_cfg._to_dict()["vectorizeClassName"] == vectorize_collection_name + + nvidia_cfg = Configure.Vectorizer.multi2vec_nvidia(vectorize_collection_name=vectorize_collection_name) + assert nvidia_cfg._to_dict()["vectorizeClassName"] == vectorize_collection_name + + jina_cfg = Configure.Vectorizer.multi2vec_jinaai(vectorize_collection_name=vectorize_collection_name) + assert jina_cfg._to_dict()["vectorizeClassName"] == vectorize_collection_name diff --git a/weaviate/collections/classes/config_named_vectors.py b/weaviate/collections/classes/config_named_vectors.py index 068f93ccc..aa8186e19 100644 --- a/weaviate/collections/classes/config_named_vectors.py +++ b/weaviate/collections/classes/config_named_vectors.py @@ -256,7 +256,8 @@ def multi2vec_cohere( model=model, dimensions=None, truncate=truncate, - imageFields=_map_multi2vec_fields(image_fields), + imageFields=_map_multi2vec_fields(image_fields, + vectorizeClassName=vectorize_collection_name), textFields=_map_multi2vec_fields(text_fields), ), vector_index_config=vector_index_config, @@ -542,7 +543,8 @@ def multi2vec_clip( return _NamedVectorConfigCreate( name=name, vectorizer=_Multi2VecClipConfig( - imageFields=_map_multi2vec_fields(image_fields), + imageFields=_map_multi2vec_fields(image_fields, + vectorizeClassName=vectorize_collection_name), textFields=_map_multi2vec_fields(text_fields), inferenceUrl=inference_url, ), @@ -598,7 +600,8 @@ def multi2vec_palm( projectId=project_id, location=location, audioFields=None, - imageFields=_map_multi2vec_fields(image_fields), + imageFields=_map_multi2vec_fields(image_fields, + vectorizeClassName=vectorize_collection_name), textFields=_map_multi2vec_fields(text_fields), videoFields=_map_multi2vec_fields(video_fields), dimensions=dimensions, @@ -648,7 +651,8 @@ def multi2vec_google( vectorizer=_Multi2VecGoogleConfig( projectId=project_id, location=location, - audioFields=_map_multi2vec_fields(audio_fields), + audioFields=_map_multi2vec_fields(audio_fields, + vectorizeClassName=vectorize_collection_name), imageFields=_map_multi2vec_fields(image_fields), textFields=_map_multi2vec_fields(text_fields), videoFields=_map_multi2vec_fields(video_fields), @@ -693,7 +697,8 @@ def multi2vec_bind( return _NamedVectorConfigCreate( name=name, vectorizer=_Multi2VecBindConfig( - audioFields=_map_multi2vec_fields(audio_fields), + audioFields=_map_multi2vec_fields(audio_fields, + vectorizeClassName=vectorize_collection_name), depthFields=_map_multi2vec_fields(depth_fields), imageFields=_map_multi2vec_fields(image_fields), IMUFields=_map_multi2vec_fields(imu_fields), @@ -742,7 +747,8 @@ def multi2vec_voyageai( model=model, truncation=truncation, dimensions=None, - imageFields=_map_multi2vec_fields(image_fields), + imageFields=_map_multi2vec_fields(image_fields, + vectorizeClassName=vectorize_collection_name), textFields=_map_multi2vec_fields(text_fields), videoFields=None, ), @@ -786,7 +792,8 @@ def multi2vec_nvidia( baseURL=base_url, model=model, truncation=truncation, - imageFields=_map_multi2vec_fields(image_fields), + imageFields=_map_multi2vec_fields(image_fields, + vectorizeClassName=vectorize_collection_name), textFields=_map_multi2vec_fields(text_fields), ), vector_index_config=vector_index_config, @@ -1209,7 +1216,8 @@ def multi2vec_jinaai( baseURL=base_url, model=model, dimensions=dimensions, - imageFields=_map_multi2vec_fields(image_fields), + imageFields=_map_multi2vec_fields(image_fields, + vectorizeClassName=vectorize_collection_name), textFields=_map_multi2vec_fields(text_fields), ), vector_index_config=vector_index_config, diff --git a/weaviate/collections/classes/config_vectorizers.py b/weaviate/collections/classes/config_vectorizers.py index 713ab7f7c..1d35b194a 100644 --- a/weaviate/collections/classes/config_vectorizers.py +++ b/weaviate/collections/classes/config_vectorizers.py @@ -470,8 +470,9 @@ class Multi2VecField(BaseModel): class _Multi2VecBase(_VectorizerConfigCreate): - imageFields: Optional[List[Multi2VecField]] - textFields: Optional[List[Multi2VecField]] + imageFields: Optional[List[Multi2VecField]] = None + textFields: Optional[List[Multi2VecField]] = None + vectorizeClassName: bool = True def _to_dict(self) -> Dict[str, Any]: ret_dict = super()._to_dict() @@ -719,6 +720,7 @@ def multi2vec_clip( imageFields=_map_multi2vec_fields(image_fields), textFields=_map_multi2vec_fields(text_fields), inferenceUrl=inference_url, + vectorizeClassName=vectorize_collection_name, ) @staticmethod @@ -758,6 +760,7 @@ def multi2vec_bind( textFields=_map_multi2vec_fields(text_fields), thermalFields=_map_multi2vec_fields(thermal_fields), videoFields=_map_multi2vec_fields(video_fields), + vectorizeClassName=vectorize_collection_name, ) @staticmethod @@ -941,6 +944,7 @@ def multi2vec_cohere( truncate=truncate, imageFields=_map_multi2vec_fields(image_fields), textFields=_map_multi2vec_fields(text_fields), + vectorizeClassName=vectorize_collection_name, ) @staticmethod @@ -979,6 +983,7 @@ def multi2vec_voyageai( imageFields=_map_multi2vec_fields(image_fields), textFields=_map_multi2vec_fields(text_fields), videoFields=None, + vectorizeClassName=vectorize_collection_name, ) @staticmethod @@ -1015,6 +1020,7 @@ def multi2vec_nvidia( truncation=truncation, imageFields=_map_multi2vec_fields(image_fields), textFields=_map_multi2vec_fields(text_fields), + vectorizeClassName=vectorize_collection_name, ) @staticmethod @@ -1484,6 +1490,7 @@ def multi2vec_jinaai( dimensions=dimensions, imageFields=_map_multi2vec_fields(image_fields), textFields=_map_multi2vec_fields(text_fields), + vectorizeClassName=vectorize_collection_name, ) @staticmethod diff --git a/weaviate/collections/classes/config_vectors.py b/weaviate/collections/classes/config_vectors.py index f5c3b62a1..b5e78dfa1 100644 --- a/weaviate/collections/classes/config_vectors.py +++ b/weaviate/collections/classes/config_vectors.py @@ -297,7 +297,8 @@ def multi2vec_jinaai( vectorizer=_Multi2MultiVecJinaConfig( baseURL=base_url, model=model, - imageFields=_map_multi2vec_fields(image_fields), + imageFields=_map_multi2vec_fields(image_fields, + vectorizeClassName=vectorize_collection_name), textFields=_map_multi2vec_fields(text_fields), ), vector_index_config=_IndexWrappers.multi( @@ -334,7 +335,8 @@ def multi2vec_weaviate( vectorizer=_Multi2MultiVecWeaviateConfig( baseURL=base_url, model=model, - imageFields=_map_multi2vec_fields([image_field]), + imageFields=_map_multi2vec_fields([image_field], + vectorizeClassName=vectorize_collection_name), textFields=None, ), vector_index_config=_IndexWrappers.multi( @@ -478,7 +480,8 @@ def multi2vec_cohere( model=model, dimensions=dimensions, truncate=truncate, - imageFields=_map_multi2vec_fields(image_fields), + imageFields=_map_multi2vec_fields(image_fields, + vectorizeClassName=vectorize_collection_name), textFields=_map_multi2vec_fields(text_fields), ), vector_index_config=_IndexWrappers.single(vector_index_config, quantizer), @@ -968,7 +971,8 @@ def multi2vec_aws( region=region, model=model, dimensions=dimensions, - imageFields=_map_multi2vec_fields(image_fields), + imageFields=_map_multi2vec_fields(image_fields, + vectorizeClassName=vectorize_collection_name), textFields=_map_multi2vec_fields(text_fields), ), vector_index_config=_IndexWrappers.single(vector_index_config, quantizer), @@ -1010,7 +1014,8 @@ def multi2vec_aws_bedrock( region=region, model=model, dimensions=dimensions, - imageFields=_map_multi2vec_fields(image_fields), + imageFields=_map_multi2vec_fields(image_fields, + vectorizeClassName=vectorize_collection_name), textFields=_map_multi2vec_fields(text_fields), ), vector_index_config=_IndexWrappers.single(vector_index_config, quantizer), @@ -1071,7 +1076,8 @@ def multi2vec_clip( return _VectorConfigCreate( name=name, vectorizer=_Multi2VecClipConfig( - imageFields=_map_multi2vec_fields(image_fields), + imageFields=_map_multi2vec_fields(image_fields, + vectorizeClassName=vectorize_collection_name), textFields=_map_multi2vec_fields(text_fields), inferenceUrl=inference_url, ), @@ -1118,7 +1124,8 @@ def multi2vec_google( vectorizer=_Multi2VecGoogleConfig( projectId=project_id, location=location, - audioFields=_map_multi2vec_fields(audio_fields), + audioFields=_map_multi2vec_fields(audio_fields, + vectorizeClassName=vectorize_collection_name), imageFields=_map_multi2vec_fields(image_fields), textFields=_map_multi2vec_fields(text_fields), videoFields=_map_multi2vec_fields(video_fields), @@ -1166,7 +1173,8 @@ def multi2vec_google_gemini( projectId=None, location=None, apiEndpoint="generativelanguage.googleapis.com", - audioFields=_map_multi2vec_fields(audio_fields), + audioFields=_map_multi2vec_fields(audio_fields, + vectorizeClassName=vectorize_collection_name), imageFields=_map_multi2vec_fields(image_fields), textFields=_map_multi2vec_fields(text_fields), videoFields=_map_multi2vec_fields(video_fields), @@ -1211,7 +1219,8 @@ def multi2vec_bind( return _VectorConfigCreate( name=name, vectorizer=_Multi2VecBindConfig( - audioFields=_map_multi2vec_fields(audio_fields), + audioFields=_map_multi2vec_fields(audio_fields, + vectorizeClassName=vectorize_collection_name), depthFields=_map_multi2vec_fields(depth_fields), imageFields=_map_multi2vec_fields(image_fields), IMUFields=_map_multi2vec_fields(imu_fields), @@ -1263,7 +1272,8 @@ def multi2vec_voyageai( model=model, truncation=truncation, dimensions=dimensions, - imageFields=_map_multi2vec_fields(image_fields), + imageFields=_map_multi2vec_fields(image_fields, + vectorizeClassName=vectorize_collection_name), textFields=_map_multi2vec_fields(text_fields), videoFields=_map_multi2vec_fields(video_fields), ), @@ -1306,7 +1316,8 @@ def multi2vec_nvidia( baseURL=base_url, model=model, truncation=truncation, - imageFields=_map_multi2vec_fields(image_fields), + imageFields=_map_multi2vec_fields(image_fields, + vectorizeClassName=vectorize_collection_name), textFields=_map_multi2vec_fields(text_fields), ), vector_index_config=_IndexWrappers.single(vector_index_config, quantizer), @@ -1342,7 +1353,8 @@ def multi2vec_twelvelabs( vectorizer=_Multi2VecTwelvelabsConfig( baseURL=base_url, model=model, - imageFields=_map_multi2vec_fields(image_fields), + imageFields=_map_multi2vec_fields(image_fields, + vectorizeClassName=vectorize_collection_name), textFields=_map_multi2vec_fields(text_fields), ), vector_index_config=_IndexWrappers.single(vector_index_config, quantizer), @@ -1841,7 +1853,8 @@ def multi2vec_jinaai( baseURL=base_url, model=model, dimensions=dimensions, - imageFields=_map_multi2vec_fields(image_fields), + imageFields=_map_multi2vec_fields(image_fields, + vectorizeClassName=vectorize_collection_name), textFields=_map_multi2vec_fields(text_fields), ), vector_index_config=_IndexWrappers.single(vector_index_config, quantizer),