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
8 changes: 0 additions & 8 deletions src/pyseekdb/client/client_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -3723,14 +3723,6 @@ def _transform_sql_result( # noqa: C901
Standard format dictionary with ids, distances, metadatas, documents, embeddings
in query-compatible format (List[List[...]] for consistency with query method)
"""
if not result_rows:
return {
"ids": [[]],
"distances": [[]],
"metadatas": [[]],
"documents": [[]],
"embeddings": [[]],
}

ids = []
distances = []
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ def test_include_infers_source_result_shape_matrix(self, db_client):
query_vector = self._generate_query_vector(dimension)
knn = {"query_embeddings": query_vector, "n_results": 2}

collection.refresh_index()

# 1) include=None: default returns documents+metadatas; should not return embedding column
default_include = collection.hybrid_search(knn=knn, n_results=2)
assert set(default_include.keys()) == {"ids", "distances", "documents", "metadatas"}
Expand Down
26 changes: 26 additions & 0 deletions tests/unit_tests/test_hybrid_search_source_inference.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ class _DummyClient:
def _build_source_fields(self, include: list[str] | None) -> list[str]:
return BaseClient._build_source_fields(self, include)

def _convert_id_from_bytes(self, value: Any) -> Any:
return value


class TestHybridSearchPublicSurfaceUnit:
def test_collection_forwards_include_only(self) -> None:
Expand Down Expand Up @@ -87,3 +90,26 @@ def test_build_source_fields_ignores_non_source_include_items(self) -> None:
assert BaseClient._build_source_fields(dummy, include=["ids"]) == ["_id"]
assert BaseClient._build_source_fields(dummy, include=["distances"]) == ["_id"]
assert BaseClient._build_source_fields(dummy, include=["documents", "ids", "distances"]) == ["_id", "document"]


class TestTransformSqlResultEmptyRowsUnit:
def test_empty_rows_returns_expected_columns_by_include(self) -> None:
dummy = _DummyClient()

default_result = BaseClient._transform_sql_result(dummy, result_rows=[], include=None)
assert set(default_result.keys()) == {"ids", "distances", "documents", "metadatas"}
assert default_result["ids"] == [[]]
assert default_result["distances"] == [[]]
assert default_result["documents"] == [[]]
assert default_result["metadatas"] == [[]]

ids_only_result = BaseClient._transform_sql_result(dummy, result_rows=[], include=[])
assert set(ids_only_result.keys()) == {"ids", "distances"}
assert ids_only_result["ids"] == [[]]
assert ids_only_result["distances"] == [[]]

embeddings_result = BaseClient._transform_sql_result(dummy, result_rows=[], include=["embeddings"])
assert set(embeddings_result.keys()) == {"ids", "distances", "embeddings"}
assert embeddings_result["ids"] == [[]]
assert embeddings_result["distances"] == [[]]
assert embeddings_result["embeddings"] == [[]]
Loading