Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions test/collection/test_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -2563,6 +2563,29 @@ def test_config_with_named_vectors(
}
},
),
(
[
Configure.Vectors.multi2vec_google_gemini(
name="test",
image_fields=["image"],
text_fields=["text"],
dimensions=768,
)
],
{
"test": {
"vectorizer": {
"multi2vec-palm": {
"apiEndpoint": "generativelanguage.googleapis.com",
"imageFields": ["image"],
"textFields": ["text"],
"dimensions": 768,
}
},
"vectorIndexType": "hnsw",
}
},
),
(
[
Configure.Vectors.multi2vec_bind(
Expand Down
3 changes: 2 additions & 1 deletion weaviate/collections/classes/config_vectorizers.py
Original file line number Diff line number Diff line change
Expand Up @@ -547,8 +547,9 @@ class _Multi2VecGoogleConfig(_Multi2VecBase, _VectorizerConfigCreate):
default=Vectorizers.MULTI2VEC_PALM, frozen=True, exclude=True
)
videoFields: Optional[List[Multi2VecField]]
projectId: str
projectId: Optional[str]
location: Optional[str]
apiEndpoint: Optional[str] = None
modelId: Optional[str]
dimensions: Optional[int]
videoIntervalSeconds: Optional[int]
Expand Down
45 changes: 45 additions & 0 deletions weaviate/collections/classes/config_vectors.py
Original file line number Diff line number Diff line change
Expand Up @@ -1073,6 +1073,51 @@ def multi2vec_google(
vector_index_config=_IndexWrappers.single(vector_index_config, quantizer),
)

@staticmethod
def multi2vec_google_gemini(
*,
name: Optional[str] = None,
quantizer: Optional[_QuantizerConfigCreate] = None,
dimensions: Optional[int] = None,
image_fields: Optional[Union[List[str], List[Multi2VecField]]] = None,
model: Optional[str] = None,
text_fields: Optional[Union[List[str], List[Multi2VecField]]] = None,
video_fields: Optional[Union[List[str], List[Multi2VecField]]] = None,
video_interval_seconds: Optional[int] = None,
vector_index_config: Optional[_VectorIndexConfigCreate] = None,
) -> _VectorConfigCreate:
"""Create a vector using the `multi2vec-google` module with the Google Gemini API endpoint.

See the [documentation](https://weaviate.io/developers/weaviate/model-providers/google/embeddings-multimodal)
for detailed usage.

Args:
name: The name of the vector.
quantizer: The quantizer to use for the vector index. If not provided, no quantization will be applied.
dimensions: The number of dimensions to use. Defaults to `None`, which uses the server-defined default.
image_fields: The image fields to use in vectorization.
model: The model to use. Defaults to `None`, which uses the server-defined default.
text_fields: The text fields to use in vectorization.
video_fields: The video fields to use in vectorization.
video_interval_seconds: Length of a video interval. Defaults to `None`, which uses the server-defined default.
vector_index_config: The configuration for Weaviate's vector index. Use `wvc.config.Configure.VectorIndex` to create a vector index configuration. None by default
"""
return _VectorConfigCreate(
name=name,
vectorizer=_Multi2VecGoogleConfig(
projectId=None,
location=None,
apiEndpoint="generativelanguage.googleapis.com",
imageFields=_map_multi2vec_fields(image_fields),
textFields=_map_multi2vec_fields(text_fields),
videoFields=_map_multi2vec_fields(video_fields),
dimensions=dimensions,
modelId=model,
videoIntervalSeconds=video_interval_seconds,
),
vector_index_config=_IndexWrappers.single(vector_index_config, quantizer),
)

@staticmethod
def multi2vec_bind(
*,
Expand Down