VECTOR

On this page Carat arrow pointing down
Note:

This is an enterprise-only feature. Request a 30-day trial license to try it out.

Note:

This feature is in preview. This feature is subject to change. To share feedback and/or issues, contact Support.

The VECTOR data type stores fixed-length arrays of floating-point numbers, which represent data points in multi-dimensional space. Vector search is often used in AI applications such as Large Language Models (LLMs) that rely on vector representations.

For details on valid VECTOR comparison operators, refer to Syntax. For the list of supported VECTOR functions, refer to Functions and Operators.

Note:

VECTOR functionality is compatible with the pgvector extension for PostgreSQL. Vector indexing is not supported at this time.

Syntax

A VECTOR value is expressed as an array of floating-point numbers. The array size corresponds to the number of VECTOR dimensions. For example, the following VECTOR has 3 dimensions:

[1.0, 0.0, 0.0]

You can specify the dimensions when defining a VECTOR column. This will enforce the number of dimensions in the column values. For example:

ALTER TABLE foo ADD COLUMN bar VECTOR(3);

The following VECTOR comparison operators are valid:

  • = (equals). Compare vectors for equality in filtering and conditional queries.
  • <> (not equal to). Compare vectors for inequality in filtering and conditional queries.
  • <-> (L2 distance). Calculate the Euclidean distance between two vectors, as used in nearest neighbor search and clustering algorithms.
  • <#> (negative inner product). Calculate the inner product of two vectors, as used in similarity searches where the inner product can represent the similarity score.
  • <=> (cosine distance). Calculate the cosine distance between vectors, such as in text and image similarity measures where the orientation of vectors is more important than their magnitude.

Size

The size of a VECTOR value is variable, but it's recommended to keep values under 1 MB to ensure performance. Above that threshold, write amplification and other considerations may cause significant performance degradation.

Functions

For the list of supported VECTOR functions, refer to Functions and Operators.

Example

Create a table with a VECTOR column, specifying 3 dimensions:

icon/buttons/copy
CREATE TABLE items (
    category STRING,
    vector VECTOR(3),
    INDEX (category)
);

Insert some sample data into the table:

icon/buttons/copy
INSERT INTO items (category, vector) VALUES
    ('electronics', '[1.0, 0.0, 0.0]'),
    ('electronics', '[0.9, 0.1, 0.0]'),
    ('furniture', '[0.0, 1.0, 0.0]'),
    ('furniture', '[0.0, 0.9, 0.1]'),
    ('clothing', '[0.0, 0.0, 1.0]');

Use the <-> operator to sort values with the electronics category by their similarity to [1.0, 0.0, 0.0], based on geographic distance.

icon/buttons/copy
SELECT category, vector FROM items WHERE category = 'electronics' ORDER BY vector <-> '[1.0, 0.0, 0.0]' LIMIT 5;
   category   |   vector
--------------+--------------
  electronics | [1,0,0]
  electronics | [0.9,0.1,0]

See also


Yes No
On this page

Yes No