similarity
js/ml/metrics/similarity.ts
Vector similarity and distance, shared by embedding consumers.
Functions
function cosineSimilarity(a: ArrayLike<number>, b: ArrayLike<number>): number
Cosine of the angle between two vectors, in [-1, 1].
Measures direction only, so vector magnitude is irrelevant — which is what
makes it the right default for comparing embeddings. Reports 0 when
either vector is all zeros and the angle is undefined.
import { cosineSimilarity } from 'fino:ml/metrics';
console.log(cosineSimilarity([1, 0], [1, 0])); // 1
console.log(cosineSimilarity([1, 0], [0, 1])); // 0
console.log(cosineSimilarity([1, 0], [-1, 0])); // -1function cosineDistance(a: ArrayLike<number>, b: ArrayLike<number>): number
Cosine distance, 1 - cosineSimilarity.
import { cosineDistance } from 'fino:ml/metrics';
console.log(cosineDistance([1, 0], [0, 1])); // 1function dotProduct(a: ArrayLike<number>, b: ArrayLike<number>): number
Sum of elementwise products.
import { dotProduct } from 'fino:ml/metrics';
console.log(dotProduct([1, 2, 3], [4, 5, 6])); // 32function euclideanDistance(a: ArrayLike<number>, b: ArrayLike<number>): number
Straight-line distance between two vectors.
import { euclideanDistance } from 'fino:ml/metrics';
console.log(euclideanDistance([0, 0], [3, 4])); // 5function manhattanDistance(a: ArrayLike<number>, b: ArrayLike<number>): number
Sum of absolute differences between two vectors.
import { manhattanDistance } from 'fino:ml/metrics';
console.log(manhattanDistance([0, 0], [3, 4])); // 7function l2Norm(vector: ArrayLike<number>): number
Euclidean length of a vector.
import { l2Norm } from 'fino:ml/metrics';
console.log(l2Norm([3, 4])); // 5