Source code for swarmauri.core.distances.IDistanceSimilarity

from abc import ABC, abstractmethod
from typing import List
from swarmauri.core.vectors.IVector import IVector

[docs] class IDistanceSimilarity(ABC): """ Interface for computing distances and similarities between high-dimensional data vectors. This interface abstracts the method for calculating the distance and similarity, allowing for the implementation of various distance metrics such as Euclidean, Manhattan, Cosine similarity, etc. """
[docs] @abstractmethod def distance(self, vector_a: IVector, vector_b: IVector) -> float: """ Computes the distance between two vectors. Args: vector_a (IVector): The first vector in the comparison. vector_b (IVector): The second vector in the comparison. Returns: float: The computed distance between vector_a and vector_b. """ pass
[docs] @abstractmethod def distances(self, vector_a: IVector, vectors_b: List[IVector]) -> float: pass
[docs] @abstractmethod def similarity(self, vector_a: IVector, vector_b: IVector) -> float: """ Compute the similarity between two vectors. The definition of similarity (e.g., cosine similarity) should be implemented in concrete classes. Args: vector_a (IVector): The first vector. vector_b (IVector): The second vector to compare with the first vector. Returns: float: A similarity score between vector_a and vector_b. """ pass
[docs] @abstractmethod def similarities(self, vector_a: IVector, vectors_b: List[IVector]) -> float: pass