Calculate Embedding Similarity
Implement cosine_similarity(query, documents).
query is a 1-D array of shape (d,). documents is 2-D, shape (n, d). Return a 1-D array of n similarities, one per document:
cos(a, b) = (a · b) / (||a|| * ||b||)
The catch: a zero vector has no direction, so its similarity is 0.0 rather than a division by zero. Handle that, and don't let a warning escape.