Skip to content

Commit 6af9d69

Browse files
authored
Merge pull request #1399 from paul7Junior/fix-vector-return-reference
fix type boolean restriction on include vector for _QueryReference
2 parents 7fde574 + b5f2f82 commit 6af9d69

File tree

2 files changed

+46
-1
lines changed

2 files changed

+46
-1
lines changed

integration/test_named_vectors.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@
1111
_VectorIndexConfigHNSW,
1212
_VectorIndexConfigFlat,
1313
Vectorizers,
14+
ReferenceProperty,
1415
)
1516
from weaviate.collections.classes.data import DataObject
1617
from weaviate.collections.classes.grpc import _MultiTargetVectorJoin
1718
from weaviate.exceptions import WeaviateInvalidInputError
19+
from weaviate.types import INCLUDE_VECTOR
1820

1921

2022
def test_create_named_vectors_throws_error_in_old_version(
@@ -756,3 +758,46 @@ def test_deprecated_syntax(collection_factory: CollectionFactory):
756758
return_metadata=wvc.query.MetadataQuery.full(),
757759
)
758760
assert "Providing lists of lists has been deprecated" in str(e)
761+
762+
763+
@pytest.mark.parametrize(
764+
"include_vector, expected",
765+
[
766+
(False, {}),
767+
(["bringYourOwn1"], {"bringYourOwn1": [0, 1, 2]}),
768+
# TODO: to be uncommented when https://github.com/weaviate/weaviate/issues/6279 is resolved
769+
# (True, {"bringYourOwn1": [0, 1, 2], "bringYourOwn2": [3, 4, 5]})
770+
],
771+
)
772+
def test_include_vector_on_references(
773+
collection_factory: CollectionFactory, include_vector: INCLUDE_VECTOR, expected: dict
774+
) -> None:
775+
"""Test include vector on reference"""
776+
dummy = collection_factory()
777+
if dummy._connection._weaviate_version.is_lower_than(1, 24, 0):
778+
pytest.skip("Named vectorizers are only supported in Weaviate v1.24.0 and higher.")
779+
780+
ref_collection = collection_factory(
781+
name="Target",
782+
vectorizer_config=[
783+
wvc.config.Configure.NamedVectors.none(name="bringYourOwn1"),
784+
wvc.config.Configure.NamedVectors.none(name="bringYourOwn2"),
785+
],
786+
)
787+
788+
TO_UUID = ref_collection.data.insert(
789+
properties={}, vector={"bringYourOwn1": [0, 1, 2], "bringYourOwn2": [3, 4, 5]}
790+
)
791+
792+
collection = collection_factory(
793+
name="Source",
794+
references=[ReferenceProperty(name="hasRef", target_collection=ref_collection.name)],
795+
)
796+
797+
collection.data.insert({}, references={"hasRef": TO_UUID})
798+
799+
objs = collection.query.fetch_objects(
800+
return_references=wvc.query.QueryReference(link_on="hasRef", include_vector=include_vector)
801+
).objects
802+
803+
assert objs[0].references["hasRef"].objects[0].vector == expected

weaviate/collections/classes/grpc.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ def near_vector(
433433

434434
class _QueryReference(_WeaviateInput):
435435
link_on: str
436-
include_vector: bool = Field(default=False)
436+
include_vector: INCLUDE_VECTOR = Field(default=False)
437437
return_metadata: Optional[MetadataQuery] = Field(default=None)
438438
return_properties: Union["PROPERTIES", bool, None] = Field(default=None)
439439
return_references: Optional["REFERENCES"] = Field(default=None)

0 commit comments

Comments
 (0)