VECTOR #
VECTOR
type represents an array of floats and is optimized for fast float operations.
Vector values must be integers or floats. Vectors can be compared, added together, subtracted, multiplied, or divided.
select vector [1,2,3];
[1, 2, 3]
select [1,2,3]::vector;
[1, 2, 3]
select vector [1.0, 2.1, 3] * vector [1.5, 1.5, 1.5];
[1.5, 3.15, 4.5]
select [3,2,0,1,4]::vector::cos_distance([1,3,1,2,0]::vector);
[0.481455]
-- similarity search
create table example (id serial primary key, embedding vector);
insert into example (embedding) values ([3,2,0,1,4]);
insert into example (embedding) values ([2,2,0,1,3]);
insert into example (embedding) values ([1,3,0,1,4]);
select * from example;
[[0, [3, 2, 0, 1, 4]], [1, [2, 2, 0, 1, 3]], [2, [1, 3, 0, 1, 4]]]
-- order rows by similarity
select
id, embedding::cos_distance(vector [1,3,1,2,0])
from
example
order by 2 desc;
[[0, 0.481455], [2, 0.403715], [1, 0.391419]]