Scotiabank may compare embedding vectors to rank semantically related content, such as matching a customer query with relevant Scotia mobile app help content. Implement cosine similarity for two high-dimensional vectors.
Given two equal-length lists of numbers, compute:
similarity = (A · B) / (||A|| × ||B||)
Return a floating-point value in the range [-1.0, 1.0]. If either vector has zero magnitude, return 0.0, because cosine similarity is undefined for a zero vector.
Implement cosine_similarity(a, b), where a and b are non-empty lists of integers or floating-point values with the same length. Return the cosine similarity as a float. Do not modify either input list.
def cosine_similarity(a, b):