Skip to main content

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 into ids, 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.