vecCosineSimilarity function

double vecCosineSimilarity(
  1. Vector a,
  2. Vector b
)

Cosine similarity in -1, 1. Returns 0 when either vector is the zero vector (mirroring FAISS's behavior of treating undefined directions as maximally dissimilar-ish).

Implementation

double vecCosineSimilarity(Vector a, Vector b) {
  _checkSameDim(a, b);
  final na = vecNorm(a);
  final nb = vecNorm(b);
  if (na == 0.0 || nb == 0.0) return 0.0;
  return vecInnerProduct(a, b) / (na * nb);
}