find Clusters
open override fun findClusters(similarityThreshold: <Error class: unknown class>, topK: Int, query: PropositionQuery): List<<Error class: unknown class><Proposition>>
Single correlated statement: select candidates DB-side via query, then within that set run the vector index once per seed using the seed's own embedding, keeping seed.id < m.id so each pair appears once. No N+1 round trips; membership and dedup stay server-side.
similarityThreshold is raw cosine — a candidate pair is admitted at cosine >= threshold, same scale as findSimilarWithScores. Older deployments that tuned a threshold against Neo4j's raw (1 + cosine) / 2 index score (before this method converted back to cosine) admitted down to cosine 2*t - 1 for a stored t; that threshold now means something stricter and should be retuned.