SELECT '[1,2,3]'::minivec; minivec --------- [1,2,3] (1 row) SELECT '[-1,-2,-3]'::minivec; minivec ------------ [-1,-2,-3] (1 row) SELECT '[1.,2.,3.]'::minivec; minivec --------- [1,2,3] (1 row) SELECT ' [ 1, 2 , 3 ] '::minivec; minivec --------- [1,2,3] (1 row) SELECT '[1.23456]'::minivec; minivec --------- [1.25] (1 row) SELECT '[hello,1]'::minivec; ERROR: invalid input syntax for type minivec: "[hello,1]" LINE 1: SELECT '[hello,1]'::minivec; ^ SELECT '[NaN,1]'::minivec; ERROR: NaN not allowed in minivec LINE 1: SELECT '[NaN,1]'::minivec; ^ SELECT '[Infinity,1]'::minivec; ERROR: "Infinity" is out of range for type minivec LINE 1: SELECT '[Infinity,1]'::minivec; ^ SELECT '[-Infinity,1]'::minivec; ERROR: "-Infinity" is out of range for type minivec LINE 1: SELECT '[-Infinity,1]'::minivec; ^ SELECT '[65519,-65519]'::minivec; ERROR: "65519" is out of range for type minivec LINE 1: SELECT '[65519,-65519]'::minivec; ^ SELECT '[65520,-65520]'::minivec; ERROR: "65520" is out of range for type minivec LINE 1: SELECT '[65520,-65520]'::minivec; ^ SELECT '[1e-8,-1e-8]'::minivec; minivec --------- [0,-0] (1 row) SELECT '[4e38,1]'::minivec; ERROR: "4e38" is out of range for type minivec LINE 1: SELECT '[4e38,1]'::minivec; ^ SELECT '[1e-46,1]'::minivec; minivec --------- [0,1] (1 row) SELECT '[1,2,3'::minivec; ERROR: invalid input syntax for type minivec: "[1,2,3" LINE 1: SELECT '[1,2,3'::minivec; ^ SELECT '[1,2,3]9'::minivec; ERROR: invalid input syntax for type minivec: "[1,2,3]9" LINE 1: SELECT '[1,2,3]9'::minivec; ^ DETAIL: Junk after closing right brace. SELECT '1,2,3'::minivec; ERROR: invalid input syntax for type minivec: "1,2,3" LINE 1: SELECT '1,2,3'::minivec; ^ DETAIL: Vector contents must start with "[". SELECT ''::minivec; ERROR: invalid input syntax for type minivec: "" LINE 1: SELECT ''::minivec; ^ DETAIL: Vector contents must start with "[". SELECT '['::minivec; ERROR: invalid input syntax for type minivec: "[" LINE 1: SELECT '['::minivec; ^ SELECT '[ '::minivec; ERROR: invalid input syntax for type minivec: "[ " LINE 1: SELECT '[ '::minivec; ^ SELECT '[,'::minivec; ERROR: invalid input syntax for type minivec: "[," LINE 1: SELECT '[,'::minivec; ^ SELECT '[]'::minivec; ERROR: minivec must have at least 1 dimension LINE 1: SELECT '[]'::minivec; ^ SELECT '[ ]'::minivec; ERROR: minivec must have at least 1 dimension LINE 1: SELECT '[ ]'::minivec; ^ SELECT '[,]'::minivec; ERROR: invalid input syntax for type minivec: "[,]" LINE 1: SELECT '[,]'::minivec; ^ SELECT '[1,]'::minivec; ERROR: invalid input syntax for type minivec: "[1,]" LINE 1: SELECT '[1,]'::minivec; ^ SELECT '[1a]'::minivec; ERROR: invalid input syntax for type minivec: "[1a]" LINE 1: SELECT '[1a]'::minivec; ^ SELECT '[1,,3]'::minivec; ERROR: invalid input syntax for type minivec: "[1,,3]" LINE 1: SELECT '[1,,3]'::minivec; ^ SELECT '[1, ,3]'::minivec; ERROR: invalid input syntax for type minivec: "[1, ,3]" LINE 1: SELECT '[1, ,3]'::minivec; ^ SELECT '[1,2,3]'::minivec(3); minivec --------- [1,2,3] (1 row) SELECT '[1,2,3]'::minivec(2); minivec --------- [1,2,3] (1 row) SELECT '[1,2,3]'::minivec(3, 2); ERROR: invalid type modifier LINE 1: SELECT '[1,2,3]'::minivec(3, 2); ^ SELECT '[1,2,3]'::minivec('a'); ERROR: invalid input syntax for type integer: "a" LINE 1: SELECT '[1,2,3]'::minivec('a'); ^ SELECT '[1,2,3]'::minivec(0); ERROR: dimensions for type minivec must be at least 1 LINE 1: SELECT '[1,2,3]'::minivec(0); ^ SELECT '[1,2,3]'::minivec(16001); ERROR: dimensions for type minivec cannot exceed 16000 LINE 1: SELECT '[1,2,3]'::minivec(16001); ^ SELECT unnest('{"[1,2,3]", "[4,5,6]"}'::minivec[]); unnest --------- [1,2,3] [4,5,6] (2 rows) SELECT '{"[1,2,3]"}'::minivec(2)[]; minivec ------------- {"[1,2,3]"} (1 row) SELECT '[1,2,3]'::minivec + '[4,5,6]'; ?column? ---------- [5,7,9] (1 row) SELECT '[448]'::minivec + '[448]'; ERROR: value out of range: overflow SELECT '[1,2]'::minivec + '[3]'; ERROR: different minivec dimensions 2 and 1 SELECT '[1,2,3]'::minivec - '[4,5,6]'; ?column? ------------ [-3,-3,-3] (1 row) SELECT '[-448]'::minivec - '[448]'; ERROR: value out of range: overflow SELECT '[1,2]'::minivec - '[3]'; ERROR: different minivec dimensions 2 and 1 SELECT '[1,2,3]'::minivec * '[4,5,6]'; ?column? ----------- [4,10,18] (1 row) SELECT '[448]'::minivec * '[448]'; ERROR: value out of range: overflow SELECT '[1e-7]'::minivec * '[1e-7]'; ?column? ---------- [0] (1 row) SELECT '[1,2]'::minivec * '[3]'; ERROR: different minivec dimensions 2 and 1 SELECT '[1,2,3]'::minivec || '[4,5]'; ?column? ------------- [1,2,3,4,5] (1 row) SELECT array_fill(0, ARRAY[16000])::minivec || '[1]'; ERROR: cannot cast type integer[] to minivec LINE 1: SELECT array_fill(0, ARRAY[16000])::minivec || '[1]'; ^ SELECT '[1,2,3]'::minivec < '[1,2,3]'; ?column? ---------- f (1 row) SELECT '[1,2,3]'::minivec < '[1,2]'; ?column? ---------- f (1 row) SELECT '[1,2,3]'::minivec <= '[1,2,3]'; ?column? ---------- t (1 row) SELECT '[1,2,3]'::minivec <= '[1,2]'; ?column? ---------- f (1 row) SELECT '[1,2,3]'::minivec = '[1,2,3]'; ?column? ---------- t (1 row) SELECT '[1,2,3]'::minivec = '[1,2]'; ?column? ---------- f (1 row) SELECT '[1,2,3]'::minivec != '[1,2,3]'; ?column? ---------- f (1 row) SELECT '[1,2,3]'::minivec != '[1,2]'; ?column? ---------- t (1 row) SELECT '[1,2,3]'::minivec >= '[1,2,3]'; ?column? ---------- t (1 row) SELECT '[1,2,3]'::minivec >= '[1,2]'; ?column? ---------- t (1 row) SELECT '[1,2,3]'::minivec > '[1,2,3]'; ?column? ---------- f (1 row) SELECT '[1,2,3]'::minivec > '[1,2]'; ?column? ---------- t (1 row) SELECT minivec_cmp('[1,2,3]', '[1,2,3]'); minivec_cmp ------------- 0 (1 row) SELECT minivec_cmp('[1,2,3]', '[0,0,0]'); minivec_cmp ------------- 1 (1 row) SELECT minivec_cmp('[0,0,0]', '[1,2,3]'); minivec_cmp ------------- -1 (1 row) SELECT minivec_cmp('[1,2]', '[1,2,3]'); minivec_cmp ------------- -1 (1 row) SELECT minivec_cmp('[1,2,3]', '[1,2]'); minivec_cmp ------------- 1 (1 row) SELECT minivec_cmp('[1,2]', '[2,3,4]'); minivec_cmp ------------- -1 (1 row) SELECT minivec_cmp('[2,3]', '[1,2,3]'); minivec_cmp ------------- 1 (1 row) SELECT vector_dims('[1,2,3]'::minivec); vector_dims ------------- 3 (1 row) SELECT round(l2_norm('[1,1]'::minivec)::numeric, 5); round --------- 1.41421 (1 row) SELECT l2_norm('[3,4]'::minivec); l2_norm --------- 5 (1 row) SELECT l2_norm('[0,1]'::minivec); l2_norm --------- 1 (1 row) SELECT l2_norm('[0,0]'::minivec); l2_norm --------- 0 (1 row) SELECT l2_norm('[2]'::minivec); l2_norm --------- 2 (1 row) SELECT l2_distance('[0,0]'::minivec, '[3,4]'); l2_distance ------------- 5 (1 row) SELECT l2_distance('[0,0]'::minivec, '[0,1]'); l2_distance ------------- 1 (1 row) SELECT l2_distance('[1,2]'::minivec, '[3]'); ERROR: different minivec dimensions 2 and 1 SELECT l2_distance('[1,1,1,1,1,1,1,1,1]'::minivec, '[1,1,1,1,1,1,1,4,5]'); l2_distance ------------- 5 (1 row) SELECT '[0,0]'::minivec <-> '[3,4]'; ?column? ---------- 5 (1 row) SELECT inner_product('[1,2]'::minivec, '[3,4]'); inner_product --------------- 11 (1 row) SELECT inner_product('[1,2]'::minivec, '[3]'); ERROR: different minivec dimensions 2 and 1 SELECT inner_product('[448]'::minivec, '[448]'); inner_product --------------- 200704 (1 row) SELECT inner_product('[1,1,1,1,1,1,1,1,1]'::minivec, '[1,2,3,4,5,6,7,8,9]'); inner_product --------------- 45 (1 row) SELECT '[1,2]'::minivec <#> '[3,4]'; ?column? ---------- -11 (1 row) SELECT cosine_distance('[1,2]'::minivec, '[2,4]'); cosine_distance ----------------- 0 (1 row) SELECT cosine_distance('[1,2]'::minivec, '[0,0]'); cosine_distance ----------------- NaN (1 row) SELECT cosine_distance('[1,1]'::minivec, '[1,1]'); cosine_distance ----------------- 0 (1 row) SELECT cosine_distance('[1,0]'::minivec, '[0,2]'); cosine_distance ----------------- 1 (1 row) SELECT cosine_distance('[1,1]'::minivec, '[-1,-1]'); cosine_distance ----------------- 2 (1 row) SELECT cosine_distance('[1,2]'::minivec, '[3]'); ERROR: different minivec dimensions 2 and 1 SELECT cosine_distance('[1,1]'::minivec, '[1.1,1.1]'); cosine_distance ----------------- 0 (1 row) SELECT cosine_distance('[1,1]'::minivec, '[-1.1,-1.1]'); cosine_distance ----------------- 2 (1 row) SELECT cosine_distance('[1,2,3,4,5,6,7,8,9]'::minivec, '[1,2,3,4,5,6,7,8,9]'); cosine_distance ----------------- 0 (1 row) SELECT cosine_distance('[1,2,3,4,5,6,7,8,9]'::minivec, '[-1,-2,-3,-4,-5,-6,-7,-8,-9]'); cosine_distance ----------------- 2 (1 row) SELECT '[1,2]'::minivec <=> '[2,4]'; ?column? ---------- 0 (1 row) SELECT l1_distance('[0,0]'::minivec, '[3,4]'); l1_distance ------------- 7 (1 row) SELECT l1_distance('[0,0]'::minivec, '[0,1]'); l1_distance ------------- 1 (1 row) SELECT l1_distance('[1,2]'::minivec, '[3]'); ERROR: different minivec dimensions 2 and 1 SELECT l1_distance('[1,2,3,4,5,6,7,8,9]'::minivec, '[1,2,3,4,5,6,7,8,9]'); l1_distance ------------- 0 (1 row) SELECT l1_distance('[1,2,3,4,5,6,7,8,9]'::minivec, '[0,3,2,5,4,7,6,9,8]'); l1_distance ------------- 9 (1 row) SELECT '[0,0]'::minivec <+> '[3,4]'; ?column? ---------- 7 (1 row) SELECT l2_normalize('[3,4]'::minivec); l2_normalize ---------------- [0.625,0.8125] (1 row) SELECT l2_normalize('[3,0]'::minivec); l2_normalize -------------- [1,0] (1 row) SELECT l2_normalize('[0,0.1]'::minivec); l2_normalize -------------- [0,1] (1 row) SELECT l2_normalize('[0,0]'::minivec); l2_normalize -------------- [0,0] (1 row) SELECT l2_normalize('[448]'::minivec); l2_normalize -------------- [1] (1 row) SELECT binary_quantize('[1,0,-1]'::minivec); binary_quantize ----------------- 100 (1 row) SELECT binary_quantize('[0,0.1,-0.2,-0.3,0.4,0.5,0.6,-0.7,0.8,-0.9,1]'::minivec); binary_quantize ----------------- 01001110101 (1 row) SELECT subvector('[1,2,3,4,5]'::minivec, 1, 3); subvector ----------- [1,2,3] (1 row) SELECT subvector('[1,2,3,4,5]'::minivec, 3, 2); subvector ----------- [3,4] (1 row) SELECT subvector('[1,2,3,4,5]'::minivec, -1, 3); subvector ----------- [1] (1 row) SELECT subvector('[1,2,3,4,5]'::minivec, 3, 9); subvector ----------- [3,4,5] (1 row) SELECT subvector('[1,2,3,4,5]'::minivec, 1, 0); ERROR: minivec must have at least 1 dimension SELECT subvector('[1,2,3,4,5]'::minivec, 3, -1); ERROR: minivec must have at least 1 dimension SELECT subvector('[1,2,3,4,5]'::minivec, -1, 2); ERROR: minivec must have at least 1 dimension SELECT subvector('[1,2,3,4,5]'::minivec, 2147483647, 10); ERROR: minivec must have at least 1 dimension SELECT subvector('[1,2,3,4,5]'::minivec, 3, 2147483647); subvector ----------- [3,4,5] (1 row) SELECT subvector('[1,2,3,4,5]'::minivec, -2147483644, 2147483647); subvector ----------- [1,2] (1 row)