From 6ce27f76a0fcea2a2938513964232029b9a3c56a Mon Sep 17 00:00:00 2001 From: Dan Jacobson Date: Fri, 14 Mar 2025 01:07:44 -0400 Subject: [PATCH 1/4] adds include_vector to .query() --- src/tests/test_collection.py | 12 ++++++++++++ src/vecs/collection.py | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/src/tests/test_collection.py b/src/tests/test_collection.py index b7cde59..0653329 100644 --- a/src/tests/test_collection.py +++ b/src/tests/test_collection.py @@ -244,6 +244,18 @@ def test_query(client: vecs.Client) -> None: assert res[0][0] == "vec5" assert res[0][1] == query_meta + # include_vector + res = bar.query( + data=query_vec, + limit=top_k, + filters=None, + measure="cosine_distance", + include_vector=True, + ) + assert len(res[0]) == 2 + assert res[0][0] == "vec5" + assert all(res[0][1] == query_vec) + # test for different numbers of probes assert len(bar.query(data=query_vec, limit=top_k, probes=10)) == top_k diff --git a/src/vecs/collection.py b/src/vecs/collection.py index e00ebce..5dbf9b6 100644 --- a/src/vecs/collection.py +++ b/src/vecs/collection.py @@ -455,6 +455,7 @@ def query( filters: Optional[Dict] = None, measure: Union[IndexMeasure, str] = IndexMeasure.cosine_distance, include_value: bool = False, + include_vector: bool = False, include_metadata: bool = False, *, probes: Optional[int] = None, @@ -536,6 +537,9 @@ def query( if include_value: cols.append(distance_clause) + + if include_vector: + cols.append(self.table.c.vec) if include_metadata: cols.append(self.table.c.metadata) From 4f4eaafefc0dcc0fbd8678c7d5319ff526292a1e Mon Sep 17 00:00:00 2001 From: Dan Jacobson Date: Mon, 24 Mar 2025 15:18:31 -0400 Subject: [PATCH 2/4] fix: re-orders arguments to avoid breaking changes --- src/vecs/collection.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vecs/collection.py b/src/vecs/collection.py index 5dbf9b6..6e77d30 100644 --- a/src/vecs/collection.py +++ b/src/vecs/collection.py @@ -455,8 +455,8 @@ def query( filters: Optional[Dict] = None, measure: Union[IndexMeasure, str] = IndexMeasure.cosine_distance, include_value: bool = False, - include_vector: bool = False, include_metadata: bool = False, + include_vector: bool = False, *, probes: Optional[int] = None, ef_search: Optional[int] = None, From 0a1eb9ebce12921b7825e25f53d704177f308d88 Mon Sep 17 00:00:00 2001 From: Dan Jacobson Date: Mon, 24 Mar 2025 22:51:20 -0400 Subject: [PATCH 3/4] fix: runs pre-commit --- src/vecs/collection.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vecs/collection.py b/src/vecs/collection.py index 6e77d30..eab8f93 100644 --- a/src/vecs/collection.py +++ b/src/vecs/collection.py @@ -537,7 +537,7 @@ def query( if include_value: cols.append(distance_clause) - + if include_vector: cols.append(self.table.c.vec) From 61c84aa74b26dfe98689d9c48ac15e3f9246d146 Mon Sep 17 00:00:00 2001 From: Oliver Rice Date: Tue, 8 Apr 2025 13:36:11 -0500 Subject: [PATCH 4/4] update docs --- docs/api.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/api.md b/docs/api.md index 7dd0cef..0eda6e6 100644 --- a/docs/api.md +++ b/docs/api.md @@ -152,6 +152,7 @@ docs.query( measure="cosine_distance", # distance measure to use include_value=False, # should distance measure values be returned? include_metadata=False, # should record metadata be returned? + include_vector=False, # should vectors be returned? ) ```