class_docstr: VectorizedDistance class represents a distance that is calculated in a vectorized way. This means
  that instead of going through every pair and explicitly calculating its distance, VectorizedDistance
  uses the entire vectors to compare to each other in a single operation.
  
  Parameters
  ----------
  distance_function : Callable[[np.ndarray, np.ndarray], np.ndarray]
      Distance function used to determine the distances between new candidates and objects.
      This function should take 2 input arguments, the first being a `np.ndarray` and the second
      `np.ndarray`. It has to return a `np.ndarray` with the distance matrix it calculates.
code: def __init__(
      self,
      distance_function: Callable[[np.ndarray, np.ndarray], np.ndarray],
  ):
      self.distance_function = distance_function
  
imports: from abc import ABC, abstractmethod
  from functools import partial
  from logging import warning
  from typing import TYPE_CHECKING, Callable, List, Optional, Sequence, Union
  import numpy
  from scipy.spatial.distance import cdist
label_desc: Use image node_id 1 to create a new VectorizedDistance object from inherited base classes: Distance with example: obj = VectorizedDistance(distance_function)