What is Cosine Similarity vs Euclidean Distance in vector search?
Beginner · 2 min read · RAG & Vector Databases
Open in study mode to save this question and track progressShort answer: Cosine similarity measures the angle between two embedding vectors regardless of magnitude (range ); Euclidean distance () measures the straight-line spatial distance between vector endpoints in -dimensional space.
Detail
Vector databases use similarity metrics to rank top- nearest neighbors:
Formulas
-
Cosine Similarity:
-
Euclidean Distance ():
-
Dot Product (Inner Product):
Normalized Vector Identity
When embedding vectors are L2-normalized (), Cosine Similarity, Dot Product, and Euclidean distance become mathematically equivalent ordering operations:
Example
NumPy vector metrics comparison:
python
import numpy as np
a = np.array([1.0, 2.0, 3.0])
b = np.array([2.0, 4.0, 6.0]) # Same direction, double magnitude
# Cosine similarity ignores magnitude -> perfect 1.0 match
cos_sim = np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
# Euclidean distance accounts for magnitude -> non-zero distance
l2_dist = np.linalg.norm(a - b)
print("Cosine Similarity:", cos_sim)
print("Euclidean Distance:", l2_dist)Interview tips
- Highlight that OpenAI embeddings are L2-normalized, making Dot Product faster to compute than full Cosine similarity.
- Note that for text retrieval, Cosine similarity is preferred because it focuses on semantic direction rather than document length magnitude.