Skip to content

Commit 67836fc

Browse files
committed
tests: speed up tests (#1130)
* fix: do not try to check compatibility in test_client_init * tests: remove sparse-code vectors (10_000 dim), remove euclid recommend methods as non-applicable for sparse * tests: add payload indexes to query group test * debug: add durations=0 to pytest * debug: test only test query group * debug: try adding payload indexes to query group test * rollback test launch
1 parent 750d735 commit 67836fc

File tree

7 files changed

+70
-97
lines changed

7 files changed

+70
-97
lines changed

tests/congruence_tests/test_common.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
# sparse vectors sizes
2222
sparse_text_vector_size = 100
2323
sparse_image_vector_size = 1_000
24-
sparse_code_vector_size = 10_000
2524

2625
# number of vectors to generate
2726
NUM_VECTORS = 1000
@@ -44,7 +43,6 @@
4443
sparse_vectors_config = {
4544
"sparse-text": models.SparseVectorParams(),
4645
"sparse-image": models.SparseVectorParams(),
47-
"sparse-code": models.SparseVectorParams(),
4846
}
4947

5048
dense_vectors_sizes = {
@@ -56,7 +54,6 @@
5654
sparse_vectors_sizes = {
5755
"sparse-text": sparse_text_vector_size,
5856
"sparse-image": sparse_image_vector_size,
59-
"sparse-code": sparse_code_vector_size,
6057
}
6158

6259
multivectors_sizes = {

tests/congruence_tests/test_optional_vectors.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ def test_simple_opt_sparse_vectors_search():
131131
COLLECTION_NAME,
132132
vectors_to_retrieve,
133133
with_payload=False,
134-
with_vectors=["sparse-image", "sparse-code"],
134+
with_vectors=["sparse-image", "sparse-text"],
135135
),
136136
key=lambda x: x.id,
137137
),
@@ -164,7 +164,7 @@ def test_simple_opt_sparse_vectors_search():
164164
COLLECTION_NAME,
165165
vectors_to_retrieve,
166166
with_payload=False,
167-
with_vectors=["sparse-image", "sparse-code"],
167+
with_vectors=["sparse-image", "sparse-text"],
168168
),
169169
key=lambda x: x.id,
170170
),

tests/congruence_tests/test_query.py

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
text_vector_size,
2121
sparse_text_vector_size,
2222
sparse_image_vector_size,
23-
sparse_code_vector_size,
2423
generate_sparse_fixtures,
2524
sparse_vectors_config,
2625
generate_multivector_fixtures,
@@ -60,9 +59,6 @@ def __init__(self):
6059
self.sparse_vector_query_image = generate_random_sparse_vector(
6160
sparse_image_vector_size, density=0.2
6261
)
63-
self.sparse_vector_query_code = generate_random_sparse_vector(
64-
sparse_code_vector_size, density=0.1
65-
)
6662

6763
# multivector query vectors
6864
self.multivector_query_text = generate_random_multivector(text_vector_size, 3)
@@ -1661,6 +1657,31 @@ def test_query_group():
16611657
init_client(local_client, secondary_collection_points, SECONDARY_COLLECTION_NAME)
16621658
init_client(http_client, secondary_collection_points, SECONDARY_COLLECTION_NAME)
16631659

1660+
http_client.create_payload_index(
1661+
COLLECTION_NAME, field_name="id", field_schema=models.PayloadSchemaType.INTEGER
1662+
)
1663+
http_client.create_payload_index(
1664+
COLLECTION_NAME, field_name="rand_digit", field_schema=models.PayloadSchemaType.INTEGER
1665+
)
1666+
http_client.create_payload_index(
1667+
COLLECTION_NAME, field_name="two_words", field_schema=models.PayloadSchemaType.KEYWORD
1668+
)
1669+
http_client.create_payload_index(
1670+
COLLECTION_NAME,
1671+
field_name="city.name",
1672+
field_schema=models.PayloadSchemaType.KEYWORD,
1673+
)
1674+
http_client.create_payload_index(
1675+
COLLECTION_NAME,
1676+
field_name="maybe",
1677+
field_schema=models.PayloadSchemaType.KEYWORD,
1678+
)
1679+
http_client.create_payload_index(
1680+
COLLECTION_NAME,
1681+
field_name="maybe_null",
1682+
field_schema=models.PayloadSchemaType.KEYWORD,
1683+
)
1684+
16641685
searcher.group_size = 5
16651686
searcher.limit = 3
16661687
for key in group_by_keys():
@@ -1687,6 +1708,7 @@ def test_query_group():
16871708
)
16881709

16891710
searcher.group_by = "city.name"
1711+
16901712
for i in range(100):
16911713
query_filter = one_random_filter_please()
16921714
try:

tests/congruence_tests/test_retrieve.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,15 +104,15 @@ def test_sparse_retrieve() -> None:
104104
compare_client_results(
105105
local_client,
106106
remote_client,
107-
lambda c: c.retrieve(COLLECTION_NAME, [id_], with_vectors=["sparse-image", "sparse-code"]),
107+
lambda c: c.retrieve(COLLECTION_NAME, [id_], with_vectors=["sparse-image", "sparse-text"]),
108108
)
109109
compare_client_results(
110110
local_client,
111111
remote_client,
112112
lambda c: c.retrieve(
113113
COLLECTION_NAME,
114114
[id_],
115-
with_vectors=["sparse-image", "sparse-code"],
115+
with_vectors=["sparse-image", "sparse-text"],
116116
with_payload=False,
117117
),
118118
)

tests/congruence_tests/test_sparse_recommend.py

Lines changed: 8 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def many_recommend(cls, client: QdrantBase) -> list[models.ScoredPoint]:
4747
query=models.RecommendQuery(recommend=models.RecommendInput(positive=[10, 19])),
4848
with_payload=True,
4949
limit=10,
50-
using="sparse-image",
50+
using="sparse-text",
5151
).points
5252

5353
@classmethod
@@ -59,7 +59,7 @@ def simple_recommend_negative(cls, client: QdrantBase) -> list[models.ScoredPoin
5959
),
6060
with_payload=True,
6161
limit=10,
62-
using="sparse-image",
62+
using="sparse-text",
6363
).points
6464

6565
@classmethod
@@ -106,7 +106,7 @@ def best_score_recommend(cls, client: QdrantBase) -> list[models.ScoredPoint]:
106106
).points
107107

108108
@classmethod
109-
def best_score_recommend_euclid(cls, client: QdrantBase) -> list[models.ScoredPoint]:
109+
def best_score_recommend_pos_neg(cls, client: QdrantBase) -> list[models.ScoredPoint]:
110110
return client.query_points(
111111
collection_name=COLLECTION_NAME,
112112
query=models.RecommendQuery(
@@ -118,7 +118,7 @@ def best_score_recommend_euclid(cls, client: QdrantBase) -> list[models.ScoredPo
118118
),
119119
with_payload=True,
120120
limit=10,
121-
using="sparse-code",
121+
using="sparse-image",
122122
).points
123123

124124
@classmethod
@@ -135,22 +135,6 @@ def only_negatives_best_score_recommend(cls, client: QdrantBase) -> list[models.
135135
using="sparse-image",
136136
).points
137137

138-
@classmethod
139-
def only_negatives_best_score_recommend_euclid(
140-
cls, client: QdrantBase
141-
) -> list[models.ScoredPoint]:
142-
return client.query_points(
143-
collection_name=COLLECTION_NAME,
144-
query=models.RecommendQuery(
145-
recommend=models.RecommendInput(
146-
positive=None, negative=[10, 12], strategy=models.RecommendStrategy.BEST_SCORE
147-
)
148-
),
149-
with_payload=True,
150-
limit=10,
151-
using="sparse-code",
152-
).points
153-
154138
@classmethod
155139
def sum_scores_recommend(cls, client: QdrantBase) -> list[models.ScoredPoint]:
156140
return client.query_points(
@@ -166,7 +150,7 @@ def sum_scores_recommend(cls, client: QdrantBase) -> list[models.ScoredPoint]:
166150
).points
167151

168152
@classmethod
169-
def sum_scores_recommend_euclid(cls, client: QdrantBase) -> list[models.ScoredPoint]:
153+
def sum_scores_recommend_pos_neg(cls, client: QdrantBase) -> list[models.ScoredPoint]:
170154
return client.query_points(
171155
collection_name=COLLECTION_NAME,
172156
query=models.RecommendQuery(
@@ -178,7 +162,7 @@ def sum_scores_recommend_euclid(cls, client: QdrantBase) -> list[models.ScoredPo
178162
),
179163
with_payload=True,
180164
limit=10,
181-
using="sparse-code",
165+
using="sparse-image",
182166
).points
183167

184168
@classmethod
@@ -195,22 +179,6 @@ def only_negatives_sum_scores_recommend(cls, client: QdrantBase) -> list[models.
195179
using="sparse-image",
196180
).points
197181

198-
@classmethod
199-
def only_negatives_sum_scores_recommend_euclid(
200-
cls, client: QdrantBase
201-
) -> list[models.ScoredPoint]:
202-
return client.query_points(
203-
collection_name=COLLECTION_NAME,
204-
query=models.RecommendQuery(
205-
recommend=models.RecommendInput(
206-
positive=None, negative=[10, 12], strategy=models.RecommendStrategy.SUM_SCORES
207-
)
208-
),
209-
with_payload=True,
210-
limit=10,
211-
using="sparse-code",
212-
).points
213-
214182
@classmethod
215183
def avg_vector_recommend(cls, client: QdrantBase) -> list[models.ScoredPoint]:
216184
return client.query_points(
@@ -286,7 +254,6 @@ def recommend_batch(client: QdrantBase) -> list[models.QueryResponse]:
286254

287255
def test_simple_recommend() -> None:
288256
fixture_points = generate_sparse_fixtures()
289-
290257
secondary_collection_points = generate_sparse_fixtures(100)
291258

292259
searcher = TestSimpleRecommendation()
@@ -320,35 +287,26 @@ def test_simple_recommend() -> None:
320287
vectors_config={},
321288
sparse_vectors_config=sparse_vectors_config,
322289
)
323-
324290
compare_client_results(local_client, remote_client, searcher.simple_recommend_image)
325291
compare_client_results(local_client, remote_client, searcher.many_recommend)
326292
compare_client_results(local_client, remote_client, searcher.simple_recommend_negative)
327293
compare_client_results(local_client, remote_client, searcher.recommend_from_another_collection)
328294
compare_client_results(local_client, remote_client, searcher.best_score_recommend)
329-
compare_client_results(local_client, remote_client, searcher.best_score_recommend_euclid)
295+
compare_client_results(local_client, remote_client, searcher.best_score_recommend_pos_neg)
330296
compare_client_results(
331297
local_client, remote_client, searcher.only_negatives_best_score_recommend
332298
)
333-
compare_client_results(
334-
local_client, remote_client, searcher.only_negatives_best_score_recommend_euclid
335-
)
336299
compare_client_results(local_client, remote_client, searcher.sum_scores_recommend)
337-
compare_client_results(local_client, remote_client, searcher.sum_scores_recommend_euclid)
300+
compare_client_results(local_client, remote_client, searcher.sum_scores_recommend_pos_neg)
338301
compare_client_results(
339302
local_client, remote_client, searcher.only_negatives_sum_scores_recommend
340303
)
341-
compare_client_results(
342-
local_client, remote_client, searcher.only_negatives_sum_scores_recommend_euclid
343-
)
344-
345304
compare_client_results(local_client, remote_client, searcher.avg_vector_recommend)
346305
compare_client_results(local_client, remote_client, searcher.recommend_from_raw_vectors)
347306
compare_client_results(
348307
local_client, remote_client, searcher.recommend_from_raw_vectors_and_ids
349308
)
350309
compare_client_results(local_client, remote_client, searcher.recommend_batch)
351-
352310
for _ in range(10):
353311
query_filter = one_random_filter_please()
354312
try:

tests/congruence_tests/test_sparse_search.py

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
init_client,
1212
init_local,
1313
init_remote,
14-
sparse_code_vector_size,
1514
sparse_image_vector_size,
1615
sparse_text_vector_size,
1716
sparse_vectors_config,
@@ -26,7 +25,6 @@ class TestSimpleSparseSearcher:
2625
def __init__(self):
2726
self.query_text = generate_random_sparse_vector(sparse_text_vector_size, density=0.3)
2827
self.query_image = generate_random_sparse_vector(sparse_image_vector_size, density=0.2)
29-
self.query_code = generate_random_sparse_vector(sparse_code_vector_size, density=0.1)
3028

3129
def simple_search_text(self, client: QdrantBase) -> list[models.ScoredPoint]:
3230
return client.query_points(
@@ -48,16 +46,6 @@ def simple_search_image(self, client: QdrantBase) -> list[models.ScoredPoint]:
4846
limit=10,
4947
).points
5048

51-
def simple_search_code(self, client: QdrantBase) -> list[models.ScoredPoint]:
52-
return client.query_points(
53-
collection_name=COLLECTION_NAME,
54-
using="sparse-code",
55-
query=self.query_code,
56-
with_payload=True,
57-
with_vectors=True,
58-
limit=10,
59-
).points
60-
6149
def simple_search_text_offset(self, client: QdrantBase) -> list[models.ScoredPoint]:
6250
return client.query_points(
6351
collection_name=COLLECTION_NAME,
@@ -122,7 +110,7 @@ def simple_search_image_select_vector(self, client: QdrantBase) -> list[models.S
122110
using="sparse-image",
123111
query=self.query_image,
124112
with_payload=False,
125-
with_vectors=["sparse-image", "sparse-code"],
113+
with_vectors=["sparse-image", "sparse-text"],
126114
limit=10,
127115
).points
128116

@@ -186,7 +174,6 @@ def test_simple_search():
186174

187175
compare_client_results(local_client, remote_client, searcher.simple_search_text)
188176
compare_client_results(local_client, remote_client, searcher.simple_search_image)
189-
compare_client_results(local_client, remote_client, searcher.simple_search_code)
190177
compare_client_results(local_client, remote_client, searcher.simple_search_text_offset)
191178
compare_client_results(local_client, remote_client, searcher.search_score_threshold)
192179
compare_client_results(local_client, remote_client, searcher.simple_search_text_select_payload)
@@ -235,7 +222,6 @@ def test_simple_opt_vectors_search():
235222

236223
compare_client_results(local_client, remote_client, searcher.simple_search_text)
237224
compare_client_results(local_client, remote_client, searcher.simple_search_image)
238-
compare_client_results(local_client, remote_client, searcher.simple_search_code)
239225
compare_client_results(local_client, remote_client, searcher.simple_search_text_offset)
240226
compare_client_results(local_client, remote_client, searcher.search_score_threshold)
241227
compare_client_results(local_client, remote_client, searcher.simple_search_text_select_payload)

0 commit comments

Comments
 (0)