Categories:

Vector similarity functions

VECTOR_COSINE_SIMILARITY

Computes the cosine similarity between two vectors.

Cosine similarity is based on the angle between two vectors in a multi-dimensional space; the magnitude of the vectors is not considered. The cosine similarity value is the inner product of the vectors divided by the product of their lengths. The cosine similarity is always in the interval [-1, 1]. For example, identical vectors have a cosine similarity of 1, two orthogonal vectors have a similarity of 0, and two opposite vectors have a similarity of -1.

See also:

VECTOR_INNER_PRODUCT , VECTOR_L2_DISTANCE , Vector Embeddings

Syntax

VECTOR_COSINE_SIMILARITY( <vector>, <vector> )
Copy

Arguments

vector

The VECTOR value to calculate the angle from.

vector

The VECTOR value to calculate the angle to.

Returns

Returns a FLOAT value, in the interval [-1, 1] which indicates the cosine similarity between the two input vectors.

Usage notes

  • Due to computational optimizations in the vector comparison functions, floating-point errors may be slightly larger than usual (e.g. about 1e-4).

Examples

This example calls the VECTOR_COSINE_SIMILARITY function to find the vector closest to [1,2,3].

SELECT a, VECTOR_COSINE_SIMILARITY(a, [1,2,3]::VECTOR(FLOAT, 3)) AS similarity
  FROM vectors
  ORDER BY similarity DESC
  LIMIT 1;
Copy
+-------------------------+
| [1, 2.2, 3] | 0.9990... |
+-------------------------+