pgvector distance operators: L2 vs cosine vs inner product

Verdict: In pgvector, use the inner product operator for length-normalised embeddings such as OpenAI's for best performance. Use cosine distance as the magnitude-insensitive default for text similarity. The Euclidean operator computes L2 distance.

CriterionEuclidean (L2)cosineinner product
Operator symbolless-than greater-thanless-than equals greater-thanless-than hash greater-than (negative inner product)
Use whenGeneral Euclidean distanceText embedding similarity; magnitude-insensitive defaultLength-normalised embeddings such as OpenAI's; best performance

Rules

Traps