agrag.ingestion.resolve.zone_classifier.precluster_ambiguous
precluster_ambiguous(ids:list[UUID], similarities:Mapping[tuple[int, int], float], *, hard_merge_threshold:float = HARD_MERGE_THRESHOLD) -> list[list[UUID]]
Find tight ambiguous sub-clusters that can merge without LLM review.
Runs average-linkage clustering cut at 1 - HARD_MERGE_THRESHOLD so
only groups whose mean pairwise distance sits inside the hard-merge
zone come back. Pairs absent from similarities count as maximally
distant and never join a group.
Parameters:
- ids (
list[UUID]) – Candidate entity identifiers. - similarities (
Mapping[tuple[int, int], float]) – Cosine similarity keyed by(left, right)index intoids, symmetric entries optional. - hard_merge_threshold (
float) – Similarity required for an automatic merge.
Returns:
list[list[UUID]]– Only multi-member groups; singletons need LLM review or discard.