Skip to content

Commit 475ab4c

Browse files
committed
fix(qdrant): add missing payload indices for bitemporal, session, and monitoring collections
Same root cause as prior is_deleted/is_archived fixes: several collections (hippocampai_bitemporal_facts, sessions, monitoring health/traces) filter on fields at query time but never created payload indices for them, causing 400 Bad Request from Qdrant on scroll/search.
1 parent 6905545 commit 475ab4c

3 files changed

Lines changed: 35 additions & 2 deletions

File tree

src/hippocampai/monitoring/storage.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from typing import Any, Optional
77

88
import numpy as np
9-
from qdrant_client.models import Distance, VectorParams
9+
from qdrant_client.models import Distance, PayloadSchemaType, VectorParams
1010

1111
from hippocampai.monitoring.memory_health import (
1212
MemoryQualityReport,
@@ -68,6 +68,12 @@ def _init_collections(self) -> None:
6868
collection_name=self.collection_health,
6969
vectors_config=VectorParams(size=1, distance=Distance.COSINE),
7070
)
71+
for field_name in ("user_id", "health_status"):
72+
self.qdrant.client.create_payload_index(
73+
collection_name=self.collection_health,
74+
field_name=field_name,
75+
field_schema=PayloadSchemaType.KEYWORD,
76+
)
7177
logger.info(f"Initialized collection: {self.collection_health}")
7278
except Exception as e:
7379
logger.debug(f"Collection {self.collection_health} creation failed: {e}")
@@ -82,6 +88,17 @@ def _init_collections(self) -> None:
8288
collection_name=self.collection_traces,
8389
vectors_config=VectorParams(size=1, distance=Distance.COSINE),
8490
)
91+
for field_name in ("operation", "user_id", "session_id", "memory_type"):
92+
self.qdrant.client.create_payload_index(
93+
collection_name=self.collection_traces,
94+
field_name=field_name,
95+
field_schema=PayloadSchemaType.KEYWORD,
96+
)
97+
self.qdrant.client.create_payload_index(
98+
collection_name=self.collection_traces,
99+
field_name="success",
100+
field_schema=PayloadSchemaType.BOOL,
101+
)
85102
logger.info(f"Initialized collection: {self.collection_traces}")
86103
except Exception as e:
87104
logger.debug(f"Collection {self.collection_traces} creation failed: {e}")

src/hippocampai/session/session_manager.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,15 @@ def _initialize_collection(self) -> None:
118118
collection_name=self.collection_name,
119119
vectors_config=VectorParams(size=self.embedder.dimension, distance=Distance.COSINE),
120120
)
121+
# Index fields used by search_sessions/get_user_sessions filters
122+
from qdrant_client.models import PayloadSchemaType
123+
124+
for field_name in ("user_id", "status", "tags"):
125+
self.qdrant.client.create_payload_index(
126+
collection_name=self.collection_name,
127+
field_name=field_name,
128+
field_schema=PayloadSchemaType.KEYWORD,
129+
)
121130
logger.info(f"Created session collection '{self.collection_name}'")
122131

123132
def create_session(

src/hippocampai/storage/bitemporal_store.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from typing import Any, Optional
1010

1111
import numpy as np
12-
from qdrant_client.models import Distance, VectorParams
12+
from qdrant_client.models import Distance, PayloadSchemaType, VectorParams
1313

1414
from hippocampai.models.bitemporal import (
1515
BiTemporalFact,
@@ -58,6 +58,13 @@ def _ensure_collection(self) -> None:
5858
distance=Distance.COSINE,
5959
),
6060
)
61+
# Index fields used by _build_query_filters for fast filtered queries
62+
for field_name in ("user_id", "entity_id", "property_name", "status"):
63+
self.qdrant.client.create_payload_index(
64+
collection_name=self.collection_name,
65+
field_name=field_name,
66+
field_schema=PayloadSchemaType.KEYWORD,
67+
)
6168
logger.info(f"Created bi-temporal collection: {self.collection_name}")
6269
except ConnectionError as e:
6370
logger.warning(

0 commit comments

Comments
 (0)