Skip to content
Merged
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
3 changes: 0 additions & 3 deletions tests/congruence_tests/test_common.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
# sparse vectors sizes
sparse_text_vector_size = 100
sparse_image_vector_size = 1_000
sparse_code_vector_size = 10_000

# number of vectors to generate
NUM_VECTORS = 1000
Expand All @@ -44,7 +43,6 @@
sparse_vectors_config = {
"sparse-text": models.SparseVectorParams(),
"sparse-image": models.SparseVectorParams(),
"sparse-code": models.SparseVectorParams(),
}

dense_vectors_sizes = {
Expand All @@ -56,7 +54,6 @@
sparse_vectors_sizes = {
"sparse-text": sparse_text_vector_size,
"sparse-image": sparse_image_vector_size,
"sparse-code": sparse_code_vector_size,
}

multivectors_sizes = {
Expand Down
4 changes: 2 additions & 2 deletions tests/congruence_tests/test_optional_vectors.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ def test_simple_opt_sparse_vectors_search():
COLLECTION_NAME,
vectors_to_retrieve,
with_payload=False,
with_vectors=["sparse-image", "sparse-code"],
with_vectors=["sparse-image", "sparse-text"],
),
key=lambda x: x.id,
),
Expand Down Expand Up @@ -164,7 +164,7 @@ def test_simple_opt_sparse_vectors_search():
COLLECTION_NAME,
vectors_to_retrieve,
with_payload=False,
with_vectors=["sparse-image", "sparse-code"],
with_vectors=["sparse-image", "sparse-text"],
),
key=lambda x: x.id,
),
Expand Down
30 changes: 26 additions & 4 deletions tests/congruence_tests/test_query.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
text_vector_size,
sparse_text_vector_size,
sparse_image_vector_size,
sparse_code_vector_size,
generate_sparse_fixtures,
sparse_vectors_config,
generate_multivector_fixtures,
Expand Down Expand Up @@ -60,9 +59,6 @@ def __init__(self):
self.sparse_vector_query_image = generate_random_sparse_vector(
sparse_image_vector_size, density=0.2
)
self.sparse_vector_query_code = generate_random_sparse_vector(
sparse_code_vector_size, density=0.1
)

# multivector query vectors
self.multivector_query_text = generate_random_multivector(text_vector_size, 3)
Expand Down Expand Up @@ -1661,6 +1657,31 @@ def test_query_group():
init_client(local_client, secondary_collection_points, SECONDARY_COLLECTION_NAME)
init_client(http_client, secondary_collection_points, SECONDARY_COLLECTION_NAME)

http_client.create_payload_index(
COLLECTION_NAME, field_name="id", field_schema=models.PayloadSchemaType.INTEGER
)
http_client.create_payload_index(
COLLECTION_NAME, field_name="rand_digit", field_schema=models.PayloadSchemaType.INTEGER
)
http_client.create_payload_index(
COLLECTION_NAME, field_name="two_words", field_schema=models.PayloadSchemaType.KEYWORD
)
http_client.create_payload_index(
COLLECTION_NAME,
field_name="city.name",
field_schema=models.PayloadSchemaType.KEYWORD,
)
http_client.create_payload_index(
COLLECTION_NAME,
field_name="maybe",
field_schema=models.PayloadSchemaType.KEYWORD,
)
http_client.create_payload_index(
COLLECTION_NAME,
field_name="maybe_null",
field_schema=models.PayloadSchemaType.KEYWORD,
)

searcher.group_size = 5
searcher.limit = 3
for key in group_by_keys():
Expand All @@ -1687,6 +1708,7 @@ def test_query_group():
)

searcher.group_by = "city.name"

for i in range(100):
query_filter = one_random_filter_please()
try:
Expand Down
4 changes: 2 additions & 2 deletions tests/congruence_tests/test_retrieve.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,15 +104,15 @@ def test_sparse_retrieve() -> None:
compare_client_results(
local_client,
remote_client,
lambda c: c.retrieve(COLLECTION_NAME, [id_], with_vectors=["sparse-image", "sparse-code"]),
lambda c: c.retrieve(COLLECTION_NAME, [id_], with_vectors=["sparse-image", "sparse-text"]),
)
compare_client_results(
local_client,
remote_client,
lambda c: c.retrieve(
COLLECTION_NAME,
[id_],
with_vectors=["sparse-image", "sparse-code"],
with_vectors=["sparse-image", "sparse-text"],
with_payload=False,
),
)
Expand Down
58 changes: 8 additions & 50 deletions tests/congruence_tests/test_sparse_recommend.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def many_recommend(cls, client: QdrantBase) -> list[models.ScoredPoint]:
query=models.RecommendQuery(recommend=models.RecommendInput(positive=[10, 19])),
with_payload=True,
limit=10,
using="sparse-image",
using="sparse-text",
).points

@classmethod
Expand All @@ -59,7 +59,7 @@ def simple_recommend_negative(cls, client: QdrantBase) -> list[models.ScoredPoin
),
with_payload=True,
limit=10,
using="sparse-image",
using="sparse-text",
).points

@classmethod
Expand Down Expand Up @@ -106,7 +106,7 @@ def best_score_recommend(cls, client: QdrantBase) -> list[models.ScoredPoint]:
).points

@classmethod
def best_score_recommend_euclid(cls, client: QdrantBase) -> list[models.ScoredPoint]:
def best_score_recommend_pos_neg(cls, client: QdrantBase) -> list[models.ScoredPoint]:
return client.query_points(
collection_name=COLLECTION_NAME,
query=models.RecommendQuery(
Expand All @@ -118,7 +118,7 @@ def best_score_recommend_euclid(cls, client: QdrantBase) -> list[models.ScoredPo
),
with_payload=True,
limit=10,
using="sparse-code",
using="sparse-image",
).points

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

@classmethod
def only_negatives_best_score_recommend_euclid(
cls, client: QdrantBase
) -> list[models.ScoredPoint]:
return client.query_points(
collection_name=COLLECTION_NAME,
query=models.RecommendQuery(
recommend=models.RecommendInput(
positive=None, negative=[10, 12], strategy=models.RecommendStrategy.BEST_SCORE
)
),
with_payload=True,
limit=10,
using="sparse-code",
).points

@classmethod
def sum_scores_recommend(cls, client: QdrantBase) -> list[models.ScoredPoint]:
return client.query_points(
Expand All @@ -166,7 +150,7 @@ def sum_scores_recommend(cls, client: QdrantBase) -> list[models.ScoredPoint]:
).points

@classmethod
def sum_scores_recommend_euclid(cls, client: QdrantBase) -> list[models.ScoredPoint]:
def sum_scores_recommend_pos_neg(cls, client: QdrantBase) -> list[models.ScoredPoint]:
return client.query_points(
collection_name=COLLECTION_NAME,
query=models.RecommendQuery(
Expand All @@ -178,7 +162,7 @@ def sum_scores_recommend_euclid(cls, client: QdrantBase) -> list[models.ScoredPo
),
with_payload=True,
limit=10,
using="sparse-code",
using="sparse-image",
).points

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

@classmethod
def only_negatives_sum_scores_recommend_euclid(
cls, client: QdrantBase
) -> list[models.ScoredPoint]:
return client.query_points(
collection_name=COLLECTION_NAME,
query=models.RecommendQuery(
recommend=models.RecommendInput(
positive=None, negative=[10, 12], strategy=models.RecommendStrategy.SUM_SCORES
)
),
with_payload=True,
limit=10,
using="sparse-code",
).points

@classmethod
def avg_vector_recommend(cls, client: QdrantBase) -> list[models.ScoredPoint]:
return client.query_points(
Expand Down Expand Up @@ -286,7 +254,6 @@ def recommend_batch(client: QdrantBase) -> list[models.QueryResponse]:

def test_simple_recommend() -> None:
fixture_points = generate_sparse_fixtures()

secondary_collection_points = generate_sparse_fixtures(100)

searcher = TestSimpleRecommendation()
Expand Down Expand Up @@ -320,35 +287,26 @@ def test_simple_recommend() -> None:
vectors_config={},
sparse_vectors_config=sparse_vectors_config,
)

compare_client_results(local_client, remote_client, searcher.simple_recommend_image)
compare_client_results(local_client, remote_client, searcher.many_recommend)
compare_client_results(local_client, remote_client, searcher.simple_recommend_negative)
compare_client_results(local_client, remote_client, searcher.recommend_from_another_collection)
compare_client_results(local_client, remote_client, searcher.best_score_recommend)
compare_client_results(local_client, remote_client, searcher.best_score_recommend_euclid)
compare_client_results(local_client, remote_client, searcher.best_score_recommend_pos_neg)
compare_client_results(
local_client, remote_client, searcher.only_negatives_best_score_recommend
)
compare_client_results(
local_client, remote_client, searcher.only_negatives_best_score_recommend_euclid
)
compare_client_results(local_client, remote_client, searcher.sum_scores_recommend)
compare_client_results(local_client, remote_client, searcher.sum_scores_recommend_euclid)
compare_client_results(local_client, remote_client, searcher.sum_scores_recommend_pos_neg)
compare_client_results(
local_client, remote_client, searcher.only_negatives_sum_scores_recommend
)
compare_client_results(
local_client, remote_client, searcher.only_negatives_sum_scores_recommend_euclid
)

compare_client_results(local_client, remote_client, searcher.avg_vector_recommend)
compare_client_results(local_client, remote_client, searcher.recommend_from_raw_vectors)
compare_client_results(
local_client, remote_client, searcher.recommend_from_raw_vectors_and_ids
)
compare_client_results(local_client, remote_client, searcher.recommend_batch)

for _ in range(10):
query_filter = one_random_filter_please()
try:
Expand Down
16 changes: 1 addition & 15 deletions tests/congruence_tests/test_sparse_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
init_client,
init_local,
init_remote,
sparse_code_vector_size,
sparse_image_vector_size,
sparse_text_vector_size,
sparse_vectors_config,
Expand All @@ -26,7 +25,6 @@ class TestSimpleSparseSearcher:
def __init__(self):
self.query_text = generate_random_sparse_vector(sparse_text_vector_size, density=0.3)
self.query_image = generate_random_sparse_vector(sparse_image_vector_size, density=0.2)
self.query_code = generate_random_sparse_vector(sparse_code_vector_size, density=0.1)

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

def simple_search_code(self, client: QdrantBase) -> list[models.ScoredPoint]:
return client.query_points(
collection_name=COLLECTION_NAME,
using="sparse-code",
query=self.query_code,
with_payload=True,
with_vectors=True,
limit=10,
).points

def simple_search_text_offset(self, client: QdrantBase) -> list[models.ScoredPoint]:
return client.query_points(
collection_name=COLLECTION_NAME,
Expand Down Expand Up @@ -122,7 +110,7 @@ def simple_search_image_select_vector(self, client: QdrantBase) -> list[models.S
using="sparse-image",
query=self.query_image,
with_payload=False,
with_vectors=["sparse-image", "sparse-code"],
with_vectors=["sparse-image", "sparse-text"],
limit=10,
).points

Expand Down Expand Up @@ -186,7 +174,6 @@ def test_simple_search():

compare_client_results(local_client, remote_client, searcher.simple_search_text)
compare_client_results(local_client, remote_client, searcher.simple_search_image)
compare_client_results(local_client, remote_client, searcher.simple_search_code)
compare_client_results(local_client, remote_client, searcher.simple_search_text_offset)
compare_client_results(local_client, remote_client, searcher.search_score_threshold)
compare_client_results(local_client, remote_client, searcher.simple_search_text_select_payload)
Expand Down Expand Up @@ -235,7 +222,6 @@ def test_simple_opt_vectors_search():

compare_client_results(local_client, remote_client, searcher.simple_search_text)
compare_client_results(local_client, remote_client, searcher.simple_search_image)
compare_client_results(local_client, remote_client, searcher.simple_search_code)
compare_client_results(local_client, remote_client, searcher.simple_search_text_offset)
compare_client_results(local_client, remote_client, searcher.search_score_threshold)
compare_client_results(local_client, remote_client, searcher.simple_search_text_select_payload)
Expand Down
Loading