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.
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:
CREATE TABLE items (
category STRING,
vector VECTOR(3),
INDEX (category)
);
Insert some sample data into the table:
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.
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]