Compare commits
3 commits
a15080b2bb
...
bc3fc9d347
| Author | SHA1 | Date | |
|---|---|---|---|
| bc3fc9d347 | |||
| 2cab42355f | |||
| 1b7c89de3b |
2 changed files with 11 additions and 4 deletions
|
|
@ -644,6 +644,7 @@ class QdrantStore:
|
|||
offset=offset,
|
||||
scroll_filter=table_filter,
|
||||
with_payload=True,
|
||||
with_vectors=True,
|
||||
)
|
||||
all_points.extend(points)
|
||||
if next_offset is None:
|
||||
|
|
|
|||
|
|
@ -296,16 +296,22 @@ def run_light_consolidation(
|
|||
|
||||
|
||||
def _build_hebbian_clusters(store: MemoryStore) -> list[list[UUID]]:
|
||||
"""Find connected components in the hebbian edge graph with size >= CLUSTER_MIN_SIZE."""
|
||||
"""Find connected components in the hebbian+temporal_next edge graph
|
||||
with size >= CLUSTER_MIN_SIZE.
|
||||
|
||||
Hebbian edges capture semantic similarity (dedup/reinforce);
|
||||
temporal_next edges capture sequential proximity (same-session inserts
|
||||
within 5 minutes). Both are valid signals for CLS clustering.
|
||||
"""
|
||||
edges_df = store.db.open_table(EDGES_TABLE).to_pandas()
|
||||
if edges_df.empty:
|
||||
return []
|
||||
hebbian = edges_df[edges_df["edge_type"] == "hebbian"]
|
||||
if hebbian.empty:
|
||||
relevant = edges_df[edges_df["edge_type"].isin(("hebbian", "temporal_next"))]
|
||||
if relevant.empty:
|
||||
return []
|
||||
|
||||
adj: dict[UUID, set[UUID]] = {}
|
||||
for _, row in hebbian.iterrows():
|
||||
for _, row in relevant.iterrows():
|
||||
src = UUID(row["src"])
|
||||
dst = UUID(row["dst"])
|
||||
adj.setdefault(src, set()).add(dst)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue