-- complain if script is sourced in psql, rather than via CREATE EXTENSION\echo Use "CREATE EXTENSION vector" to load this file. \quit-- vector typeCREATE TYPE vector;CREATE FUNCTION vector_in(cstring, oid, integer) RETURNS vectorAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_out(vector) RETURNS cstringAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_typmod_in(cstring[]) RETURNS integerAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_recv(internal, oid, integer) RETURNS vectorAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_send(vector) RETURNS byteaAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE TYPE vector (INPUT = vector_in,OUTPUT = vector_out,TYPMOD_IN = vector_typmod_in,RECEIVE = vector_recv,SEND = vector_send,STORAGE = external);-- vector functionsCREATE FUNCTION l2_distance(vector, vector) RETURNS float8AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION inner_product(vector, vector) RETURNS float8AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION cosine_distance(vector, vector) RETURNS float8AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION l1_distance(vector, vector) RETURNS float8AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_dims(vector) RETURNS integerAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_norm(vector) RETURNS float8AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION l2_normalize(vector) RETURNS vectorAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION binary_quantize(vector) RETURNS bitAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION subvector(vector, int, int) RETURNS vectorAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;-- vector private functionsCREATE FUNCTION vector_add(vector, vector) RETURNS vectorAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_sub(vector, vector) RETURNS vectorAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_mul(vector, vector) RETURNS vectorAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_concat(vector, vector) RETURNS vectorAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_lt(vector, vector) RETURNS boolAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_le(vector, vector) RETURNS boolAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_eq(vector, vector) RETURNS boolAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_ne(vector, vector) RETURNS boolAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_ge(vector, vector) RETURNS boolAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_gt(vector, vector) RETURNS boolAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_cmp(vector, vector) RETURNS int4AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_l2_squared_distance(vector, vector) RETURNS float8AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_negative_inner_product(vector, vector) RETURNS float8AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_spherical_distance(vector, vector) RETURNS float8AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_accum(double precision[], vector) RETURNS double precision[]AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_avg(double precision[]) RETURNS vectorAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_combine(double precision[], double precision[]) RETURNS double precision[]AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;-- vector aggregatesCREATE AGGREGATE avg(vector) (SFUNC = vector_accum,STYPE = double precision[],FINALFUNC = vector_avg,COMBINEFUNC = vector_combine,INITCOND = '{0}',PARALLEL = SAFE);CREATE AGGREGATE sum(vector) (SFUNC = vector_add,STYPE = vector,COMBINEFUNC = vector_add,PARALLEL = SAFE);-- vector cast functionsCREATE FUNCTION vector(vector, integer, boolean) RETURNS vectorAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION array_to_vector(integer[], integer, boolean) RETURNS vectorAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION array_to_vector(real[], integer, boolean) RETURNS vectorAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION array_to_vector(double precision[], integer, boolean) RETURNS vectorAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION array_to_vector(numeric[], integer, boolean) RETURNS vectorAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_to_float4(vector, integer, boolean) RETURNS real[]AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;-- vector castsCREATE CAST (vector AS vector)WITH FUNCTION vector(vector, integer, boolean) AS IMPLICIT;CREATE CAST (vector AS real[])WITH FUNCTION vector_to_float4(vector, integer, boolean) AS IMPLICIT;CREATE CAST (integer[] AS vector)WITH FUNCTION array_to_vector(integer[], integer, boolean) AS ASSIGNMENT;CREATE CAST (real[] AS vector)WITH FUNCTION array_to_vector(real[], integer, boolean) AS ASSIGNMENT;CREATE CAST (double precision[] AS vector)WITH FUNCTION array_to_vector(double precision[], integer, boolean) AS ASSIGNMENT;CREATE CAST (numeric[] AS vector)WITH FUNCTION array_to_vector(numeric[], integer, boolean) AS ASSIGNMENT;-- vector operatorsCREATE OPERATOR <-> (LEFTARG = vector, RIGHTARG = vector, PROCEDURE = l2_distance,COMMUTATOR = '<->');CREATE OPERATOR <#> (LEFTARG = vector, RIGHTARG = vector, PROCEDURE = vector_negative_inner_product,COMMUTATOR = '<#>');CREATE OPERATOR <=> (LEFTARG = vector, RIGHTARG = vector, PROCEDURE = cosine_distance,COMMUTATOR = '<=>');CREATE OPERATOR <+> (LEFTARG = vector, RIGHTARG = vector, PROCEDURE = l1_distance,COMMUTATOR = '<+>');CREATE OPERATOR + (LEFTARG = vector, RIGHTARG = vector, PROCEDURE = vector_add,COMMUTATOR = +);CREATE OPERATOR - (LEFTARG = vector, RIGHTARG = vector, PROCEDURE = vector_sub);CREATE OPERATOR * (LEFTARG = vector, RIGHTARG = vector, PROCEDURE = vector_mul,COMMUTATOR = *);CREATE OPERATOR || (LEFTARG = vector, RIGHTARG = vector, PROCEDURE = vector_concat);CREATE OPERATOR < (LEFTARG = vector, RIGHTARG = vector, PROCEDURE = vector_lt,COMMUTATOR = > , NEGATOR = >= ,RESTRICT = scalarltsel, JOIN = scalarltjoinsel);CREATE OPERATOR <= (LEFTARG = vector, RIGHTARG = vector, PROCEDURE = vector_le,COMMUTATOR = >= , NEGATOR = > ,RESTRICT = scalarlesel, JOIN = scalarlejoinsel);CREATE OPERATOR = (LEFTARG = vector, RIGHTARG = vector, PROCEDURE = vector_eq,COMMUTATOR = = , NEGATOR = <> ,RESTRICT = eqsel, JOIN = eqjoinsel);CREATE OPERATOR <> (LEFTARG = vector, RIGHTARG = vector, PROCEDURE = vector_ne,COMMUTATOR = <> , NEGATOR = = ,RESTRICT = eqsel, JOIN = eqjoinsel);CREATE OPERATOR >= (LEFTARG = vector, RIGHTARG = vector, PROCEDURE = vector_ge,COMMUTATOR = <= , NEGATOR = < ,RESTRICT = scalargesel, JOIN = scalargejoinsel);CREATE OPERATOR > (LEFTARG = vector, RIGHTARG = vector, PROCEDURE = vector_gt,COMMUTATOR = < , NEGATOR = <= ,RESTRICT = scalargtsel, JOIN = scalargtjoinsel);-- access methodsCREATE FUNCTION ivfflathandler(internal) RETURNS index_am_handlerAS 'MODULE_PATHNAME' LANGUAGE C;CREATE ACCESS METHOD ivfflat TYPE INDEX HANDLER ivfflathandler;COMMENT ON ACCESS METHOD ivfflat IS 'ivfflat index access method';CREATE FUNCTION hnswhandler(internal) RETURNS index_am_handlerAS 'MODULE_PATHNAME' LANGUAGE C;CREATE ACCESS METHOD hnsw TYPE INDEX HANDLER hnswhandler;COMMENT ON ACCESS METHOD hnsw IS 'hnsw index access method';-- access method private functionsCREATE FUNCTION ivfflat_halfvec_support(internal) RETURNS internalAS 'MODULE_PATHNAME' LANGUAGE C;CREATE FUNCTION ivfflat_bit_support(internal) RETURNS internalAS 'MODULE_PATHNAME' LANGUAGE C;CREATE FUNCTION hnsw_halfvec_support(internal) RETURNS internalAS 'MODULE_PATHNAME' LANGUAGE C;CREATE FUNCTION hnsw_bit_support(internal) RETURNS internalAS 'MODULE_PATHNAME' LANGUAGE C;CREATE FUNCTION hnsw_sparsevec_support(internal) RETURNS internalAS 'MODULE_PATHNAME' LANGUAGE C;-- vector opclassesCREATE OPERATOR CLASS vector_opsDEFAULT FOR TYPE vector USING btree ASOPERATOR 1 < ,OPERATOR 2 <= ,OPERATOR 3 = ,OPERATOR 4 >= ,OPERATOR 5 > ,FUNCTION 1 vector_cmp(vector, vector);CREATE OPERATOR CLASS vector_l2_opsDEFAULT FOR TYPE vector USING ivfflat ASOPERATOR 1 <-> (vector, vector) FOR ORDER BY float_ops,FUNCTION 1 vector_l2_squared_distance(vector, vector),FUNCTION 3 l2_distance(vector, vector);CREATE OPERATOR CLASS vector_ip_opsFOR TYPE vector USING ivfflat ASOPERATOR 1 <#> (vector, vector) FOR ORDER BY float_ops,FUNCTION 1 vector_negative_inner_product(vector, vector),FUNCTION 3 vector_spherical_distance(vector, vector),FUNCTION 4 vector_norm(vector);CREATE OPERATOR CLASS vector_cosine_opsFOR TYPE vector USING ivfflat ASOPERATOR 1 <=> (vector, vector) FOR ORDER BY float_ops,FUNCTION 1 vector_negative_inner_product(vector, vector),FUNCTION 2 vector_norm(vector),FUNCTION 3 vector_spherical_distance(vector, vector),FUNCTION 4 vector_norm(vector);CREATE OPERATOR CLASS vector_l2_opsFOR TYPE vector USING hnsw ASOPERATOR 1 <-> (vector, vector) FOR ORDER BY float_ops,FUNCTION 1 vector_l2_squared_distance(vector, vector);CREATE OPERATOR CLASS vector_ip_opsFOR TYPE vector USING hnsw ASOPERATOR 1 <#> (vector, vector) FOR ORDER BY float_ops,FUNCTION 1 vector_negative_inner_product(vector, vector);CREATE OPERATOR CLASS vector_cosine_opsFOR TYPE vector USING hnsw ASOPERATOR 1 <=> (vector, vector) FOR ORDER BY float_ops,FUNCTION 1 vector_negative_inner_product(vector, vector),FUNCTION 2 vector_norm(vector);CREATE OPERATOR CLASS vector_l1_opsFOR TYPE vector USING hnsw ASOPERATOR 1 <+> (vector, vector) FOR ORDER BY float_ops,FUNCTION 1 l1_distance(vector, vector);-- halfvec typeCREATE TYPE halfvec;CREATE FUNCTION halfvec_in(cstring, oid, integer) RETURNS halfvecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_out(halfvec) RETURNS cstringAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_typmod_in(cstring[]) RETURNS integerAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_recv(internal, oid, integer) RETURNS halfvecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_send(halfvec) RETURNS byteaAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE TYPE halfvec (INPUT = halfvec_in,OUTPUT = halfvec_out,TYPMOD_IN = halfvec_typmod_in,RECEIVE = halfvec_recv,SEND = halfvec_send,STORAGE = external);-- halfvec functionsCREATE FUNCTION l2_distance(halfvec, halfvec) RETURNS float8AS 'MODULE_PATHNAME', 'halfvec_l2_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION inner_product(halfvec, halfvec) RETURNS float8AS 'MODULE_PATHNAME', 'halfvec_inner_product' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION cosine_distance(halfvec, halfvec) RETURNS float8AS 'MODULE_PATHNAME', 'halfvec_cosine_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION l1_distance(halfvec, halfvec) RETURNS float8AS 'MODULE_PATHNAME', 'halfvec_l1_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_dims(halfvec) RETURNS integerAS 'MODULE_PATHNAME', 'halfvec_vector_dims' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION l2_norm(halfvec) RETURNS float8AS 'MODULE_PATHNAME', 'halfvec_l2_norm' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION l2_normalize(halfvec) RETURNS halfvecAS 'MODULE_PATHNAME', 'halfvec_l2_normalize' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION binary_quantize(halfvec) RETURNS bitAS 'MODULE_PATHNAME', 'halfvec_binary_quantize' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION subvector(halfvec, int, int) RETURNS halfvecAS 'MODULE_PATHNAME', 'halfvec_subvector' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;-- halfvec private functionsCREATE FUNCTION halfvec_add(halfvec, halfvec) RETURNS halfvecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_sub(halfvec, halfvec) RETURNS halfvecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_mul(halfvec, halfvec) RETURNS halfvecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_concat(halfvec, halfvec) RETURNS halfvecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_lt(halfvec, halfvec) RETURNS boolAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_le(halfvec, halfvec) RETURNS boolAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_eq(halfvec, halfvec) RETURNS boolAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_ne(halfvec, halfvec) RETURNS boolAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_ge(halfvec, halfvec) RETURNS boolAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_gt(halfvec, halfvec) RETURNS boolAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_cmp(halfvec, halfvec) RETURNS int4AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_l2_squared_distance(halfvec, halfvec) RETURNS float8AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_negative_inner_product(halfvec, halfvec) RETURNS float8AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_spherical_distance(halfvec, halfvec) RETURNS float8AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_accum(double precision[], halfvec) RETURNS double precision[]AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_avg(double precision[]) RETURNS halfvecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_combine(double precision[], double precision[]) RETURNS double precision[]AS 'MODULE_PATHNAME', 'vector_combine' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;-- halfvec aggregatesCREATE AGGREGATE avg(halfvec) (SFUNC = halfvec_accum,STYPE = double precision[],FINALFUNC = halfvec_avg,COMBINEFUNC = halfvec_combine,INITCOND = '{0}',PARALLEL = SAFE);CREATE AGGREGATE sum(halfvec) (SFUNC = halfvec_add,STYPE = halfvec,COMBINEFUNC = halfvec_add,PARALLEL = SAFE);-- halfvec cast functionsCREATE FUNCTION halfvec(halfvec, integer, boolean) RETURNS halfvecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_to_vector(halfvec, integer, boolean) RETURNS vectorAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_to_halfvec(vector, integer, boolean) RETURNS halfvecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION array_to_halfvec(integer[], integer, boolean) RETURNS halfvecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION array_to_halfvec(real[], integer, boolean) RETURNS halfvecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION array_to_halfvec(double precision[], integer, boolean) RETURNS halfvecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION array_to_halfvec(numeric[], integer, boolean) RETURNS halfvecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_to_float4(halfvec, integer, boolean) RETURNS real[]AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;-- halfvec castsCREATE CAST (halfvec AS halfvec)WITH FUNCTION halfvec(halfvec, integer, boolean) AS IMPLICIT;CREATE CAST (halfvec AS vector)WITH FUNCTION halfvec_to_vector(halfvec, integer, boolean) AS ASSIGNMENT;CREATE CAST (vector AS halfvec)WITH FUNCTION vector_to_halfvec(vector, integer, boolean) AS IMPLICIT;CREATE CAST (halfvec AS real[])WITH FUNCTION halfvec_to_float4(halfvec, integer, boolean) AS ASSIGNMENT;CREATE CAST (integer[] AS halfvec)WITH FUNCTION array_to_halfvec(integer[], integer, boolean) AS ASSIGNMENT;CREATE CAST (real[] AS halfvec)WITH FUNCTION array_to_halfvec(real[], integer, boolean) AS ASSIGNMENT;CREATE CAST (double precision[] AS halfvec)WITH FUNCTION array_to_halfvec(double precision[], integer, boolean) AS ASSIGNMENT;CREATE CAST (numeric[] AS halfvec)WITH FUNCTION array_to_halfvec(numeric[], integer, boolean) AS ASSIGNMENT;-- halfvec operatorsCREATE OPERATOR <-> (LEFTARG = halfvec, RIGHTARG = halfvec, PROCEDURE = l2_distance,COMMUTATOR = '<->');CREATE OPERATOR <#> (LEFTARG = halfvec, RIGHTARG = halfvec, PROCEDURE = halfvec_negative_inner_product,COMMUTATOR = '<#>');CREATE OPERATOR <=> (LEFTARG = halfvec, RIGHTARG = halfvec, PROCEDURE = cosine_distance,COMMUTATOR = '<=>');CREATE OPERATOR <+> (LEFTARG = halfvec, RIGHTARG = halfvec, PROCEDURE = l1_distance,COMMUTATOR = '<+>');CREATE OPERATOR + (LEFTARG = halfvec, RIGHTARG = halfvec, PROCEDURE = halfvec_add,COMMUTATOR = +);CREATE OPERATOR - (LEFTARG = halfvec, RIGHTARG = halfvec, PROCEDURE = halfvec_sub);CREATE OPERATOR * (LEFTARG = halfvec, RIGHTARG = halfvec, PROCEDURE = halfvec_mul,COMMUTATOR = *);CREATE OPERATOR || (LEFTARG = halfvec, RIGHTARG = halfvec, PROCEDURE = halfvec_concat);CREATE OPERATOR < (LEFTARG = halfvec, RIGHTARG = halfvec, PROCEDURE = halfvec_lt,COMMUTATOR = > , NEGATOR = >= ,RESTRICT = scalarltsel, JOIN = scalarltjoinsel);CREATE OPERATOR <= (LEFTARG = halfvec, RIGHTARG = halfvec, PROCEDURE = halfvec_le,COMMUTATOR = >= , NEGATOR = > ,RESTRICT = scalarlesel, JOIN = scalarlejoinsel);CREATE OPERATOR = (LEFTARG = halfvec, RIGHTARG = halfvec, PROCEDURE = halfvec_eq,COMMUTATOR = = , NEGATOR = <> ,RESTRICT = eqsel, JOIN = eqjoinsel);CREATE OPERATOR <> (LEFTARG = halfvec, RIGHTARG = halfvec, PROCEDURE = halfvec_ne,COMMUTATOR = <> , NEGATOR = = ,RESTRICT = eqsel, JOIN = eqjoinsel);CREATE OPERATOR >= (LEFTARG = halfvec, RIGHTARG = halfvec, PROCEDURE = halfvec_ge,COMMUTATOR = <= , NEGATOR = < ,RESTRICT = scalargesel, JOIN = scalargejoinsel);CREATE OPERATOR > (LEFTARG = halfvec, RIGHTARG = halfvec, PROCEDURE = halfvec_gt,COMMUTATOR = < , NEGATOR = <= ,RESTRICT = scalargtsel, JOIN = scalargtjoinsel);-- halfvec opclassesCREATE OPERATOR CLASS halfvec_opsDEFAULT FOR TYPE halfvec USING btree ASOPERATOR 1 < ,OPERATOR 2 <= ,OPERATOR 3 = ,OPERATOR 4 >= ,OPERATOR 5 > ,FUNCTION 1 halfvec_cmp(halfvec, halfvec);CREATE OPERATOR CLASS halfvec_l2_opsFOR TYPE halfvec USING ivfflat ASOPERATOR 1 <-> (halfvec, halfvec) FOR ORDER BY float_ops,FUNCTION 1 halfvec_l2_squared_distance(halfvec, halfvec),FUNCTION 3 l2_distance(halfvec, halfvec),FUNCTION 5 ivfflat_halfvec_support(internal);CREATE OPERATOR CLASS halfvec_ip_opsFOR TYPE halfvec USING ivfflat ASOPERATOR 1 <#> (halfvec, halfvec) FOR ORDER BY float_ops,FUNCTION 1 halfvec_negative_inner_product(halfvec, halfvec),FUNCTION 3 halfvec_spherical_distance(halfvec, halfvec),FUNCTION 4 l2_norm(halfvec),FUNCTION 5 ivfflat_halfvec_support(internal);CREATE OPERATOR CLASS halfvec_cosine_opsFOR TYPE halfvec USING ivfflat ASOPERATOR 1 <=> (halfvec, halfvec) FOR ORDER BY float_ops,FUNCTION 1 halfvec_negative_inner_product(halfvec, halfvec),FUNCTION 2 l2_norm(halfvec),FUNCTION 3 halfvec_spherical_distance(halfvec, halfvec),FUNCTION 4 l2_norm(halfvec),FUNCTION 5 ivfflat_halfvec_support(internal);CREATE OPERATOR CLASS halfvec_l2_opsFOR TYPE halfvec USING hnsw ASOPERATOR 1 <-> (halfvec, halfvec) FOR ORDER BY float_ops,FUNCTION 1 halfvec_l2_squared_distance(halfvec, halfvec),FUNCTION 3 hnsw_halfvec_support(internal);CREATE OPERATOR CLASS halfvec_ip_opsFOR TYPE halfvec USING hnsw ASOPERATOR 1 <#> (halfvec, halfvec) FOR ORDER BY float_ops,FUNCTION 1 halfvec_negative_inner_product(halfvec, halfvec),FUNCTION 3 hnsw_halfvec_support(internal);CREATE OPERATOR CLASS halfvec_cosine_opsFOR TYPE halfvec USING hnsw ASOPERATOR 1 <=> (halfvec, halfvec) FOR ORDER BY float_ops,FUNCTION 1 halfvec_negative_inner_product(halfvec, halfvec),FUNCTION 2 l2_norm(halfvec),FUNCTION 3 hnsw_halfvec_support(internal);CREATE OPERATOR CLASS halfvec_l1_opsFOR TYPE halfvec USING hnsw ASOPERATOR 1 <+> (halfvec, halfvec) FOR ORDER BY float_ops,FUNCTION 1 l1_distance(halfvec, halfvec),FUNCTION 3 hnsw_halfvec_support(internal);-- bit functionsCREATE FUNCTION hamming_distance(bit, bit) RETURNS float8AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION jaccard_distance(bit, bit) RETURNS float8AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;-- bit operatorsCREATE OPERATOR <~> (LEFTARG = bit, RIGHTARG = bit, PROCEDURE = hamming_distance,COMMUTATOR = '<~>');CREATE OPERATOR <%> (LEFTARG = bit, RIGHTARG = bit, PROCEDURE = jaccard_distance,COMMUTATOR = '<%>');-- bit opclassesCREATE OPERATOR CLASS bit_hamming_opsFOR TYPE bit USING ivfflat ASOPERATOR 1 <~> (bit, bit) FOR ORDER BY float_ops,FUNCTION 1 hamming_distance(bit, bit),FUNCTION 3 hamming_distance(bit, bit),FUNCTION 5 ivfflat_bit_support(internal);CREATE OPERATOR CLASS bit_hamming_opsFOR TYPE bit USING hnsw ASOPERATOR 1 <~> (bit, bit) FOR ORDER BY float_ops,FUNCTION 1 hamming_distance(bit, bit),FUNCTION 3 hnsw_bit_support(internal);CREATE OPERATOR CLASS bit_jaccard_opsFOR TYPE bit USING hnsw ASOPERATOR 1 <%> (bit, bit) FOR ORDER BY float_ops,FUNCTION 1 jaccard_distance(bit, bit),FUNCTION 3 hnsw_bit_support(internal);--- sparsevec typeCREATE TYPE sparsevec;CREATE FUNCTION sparsevec_in(cstring, oid, integer) RETURNS sparsevecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION sparsevec_out(sparsevec) RETURNS cstringAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION sparsevec_typmod_in(cstring[]) RETURNS integerAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION sparsevec_recv(internal, oid, integer) RETURNS sparsevecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION sparsevec_send(sparsevec) RETURNS byteaAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE TYPE sparsevec (INPUT = sparsevec_in,OUTPUT = sparsevec_out,TYPMOD_IN = sparsevec_typmod_in,RECEIVE = sparsevec_recv,SEND = sparsevec_send,STORAGE = external);-- sparsevec functionsCREATE FUNCTION l2_distance(sparsevec, sparsevec) RETURNS float8AS 'MODULE_PATHNAME', 'sparsevec_l2_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION inner_product(sparsevec, sparsevec) RETURNS float8AS 'MODULE_PATHNAME', 'sparsevec_inner_product' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION cosine_distance(sparsevec, sparsevec) RETURNS float8AS 'MODULE_PATHNAME', 'sparsevec_cosine_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION l1_distance(sparsevec, sparsevec) RETURNS float8AS 'MODULE_PATHNAME', 'sparsevec_l1_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION l2_norm(sparsevec) RETURNS float8AS 'MODULE_PATHNAME', 'sparsevec_l2_norm' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION l2_normalize(sparsevec) RETURNS sparsevecAS 'MODULE_PATHNAME', 'sparsevec_l2_normalize' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;-- sparsevec private functionsCREATE FUNCTION sparsevec_lt(sparsevec, sparsevec) RETURNS boolAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION sparsevec_le(sparsevec, sparsevec) RETURNS boolAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION sparsevec_eq(sparsevec, sparsevec) RETURNS boolAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION sparsevec_ne(sparsevec, sparsevec) RETURNS boolAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION sparsevec_ge(sparsevec, sparsevec) RETURNS boolAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION sparsevec_gt(sparsevec, sparsevec) RETURNS boolAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION sparsevec_cmp(sparsevec, sparsevec) RETURNS int4AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION sparsevec_l2_squared_distance(sparsevec, sparsevec) RETURNS float8AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION sparsevec_negative_inner_product(sparsevec, sparsevec) RETURNS float8AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;-- sparsevec cast functionsCREATE FUNCTION sparsevec(sparsevec, integer, boolean) RETURNS sparsevecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION vector_to_sparsevec(vector, integer, boolean) RETURNS sparsevecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION sparsevec_to_vector(sparsevec, integer, boolean) RETURNS vectorAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION halfvec_to_sparsevec(halfvec, integer, boolean) RETURNS sparsevecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION sparsevec_to_halfvec(sparsevec, integer, boolean) RETURNS halfvecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION array_to_sparsevec(integer[], integer, boolean) RETURNS sparsevecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION array_to_sparsevec(real[], integer, boolean) RETURNS sparsevecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION array_to_sparsevec(double precision[], integer, boolean) RETURNS sparsevecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;CREATE FUNCTION array_to_sparsevec(numeric[], integer, boolean) RETURNS sparsevecAS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;-- sparsevec castsCREATE CAST (sparsevec AS sparsevec)WITH FUNCTION sparsevec(sparsevec, integer, boolean) AS IMPLICIT;CREATE CAST (sparsevec AS vector)WITH FUNCTION sparsevec_to_vector(sparsevec, integer, boolean) AS ASSIGNMENT;CREATE CAST (vector AS sparsevec)WITH FUNCTION vector_to_sparsevec(vector, integer, boolean) AS IMPLICIT;CREATE CAST (sparsevec AS halfvec)WITH FUNCTION sparsevec_to_halfvec(sparsevec, integer, boolean) AS ASSIGNMENT;CREATE CAST (halfvec AS sparsevec)WITH FUNCTION halfvec_to_sparsevec(halfvec, integer, boolean) AS IMPLICIT;CREATE CAST (integer[] AS sparsevec)WITH FUNCTION array_to_sparsevec(integer[], integer, boolean) AS ASSIGNMENT;CREATE CAST (real[] AS sparsevec)WITH FUNCTION array_to_sparsevec(real[], integer, boolean) AS ASSIGNMENT;CREATE CAST (double precision[] AS sparsevec)WITH FUNCTION array_to_sparsevec(double precision[], integer, boolean) AS ASSIGNMENT;CREATE CAST (numeric[] AS sparsevec)WITH FUNCTION array_to_sparsevec(numeric[], integer, boolean) AS ASSIGNMENT;-- sparsevec operatorsCREATE OPERATOR <-> (LEFTARG = sparsevec, RIGHTARG = sparsevec, PROCEDURE = l2_distance,COMMUTATOR = '<->');CREATE OPERATOR <#> (LEFTARG = sparsevec, RIGHTARG = sparsevec, PROCEDURE = sparsevec_negative_inner_product,COMMUTATOR = '<#>');CREATE OPERATOR <=> (LEFTARG = sparsevec, RIGHTARG = sparsevec, PROCEDURE = cosine_distance,COMMUTATOR = '<=>');CREATE OPERATOR <+> (LEFTARG = sparsevec, RIGHTARG = sparsevec, PROCEDURE = l1_distance,COMMUTATOR = '<+>');CREATE OPERATOR < (LEFTARG = sparsevec, RIGHTARG = sparsevec, PROCEDURE = sparsevec_lt,COMMUTATOR = > , NEGATOR = >= ,RESTRICT = scalarltsel, JOIN = scalarltjoinsel);CREATE OPERATOR <= (LEFTARG = sparsevec, RIGHTARG = sparsevec, PROCEDURE = sparsevec_le,COMMUTATOR = >= , NEGATOR = > ,RESTRICT = scalarlesel, JOIN = scalarlejoinsel);CREATE OPERATOR = (LEFTARG = sparsevec, RIGHTARG = sparsevec, PROCEDURE = sparsevec_eq,COMMUTATOR = = , NEGATOR = <> ,RESTRICT = eqsel, JOIN = eqjoinsel);CREATE OPERATOR <> (LEFTARG = sparsevec, RIGHTARG = sparsevec, PROCEDURE = sparsevec_ne,COMMUTATOR = <> , NEGATOR = = ,RESTRICT = eqsel, JOIN = eqjoinsel);CREATE OPERATOR >= (LEFTARG = sparsevec, RIGHTARG = sparsevec, PROCEDURE = sparsevec_ge,COMMUTATOR = <= , NEGATOR = < ,RESTRICT = scalargesel, JOIN = scalargejoinsel);CREATE OPERATOR > (LEFTARG = sparsevec, RIGHTARG = sparsevec, PROCEDURE = sparsevec_gt,COMMUTATOR = < , NEGATOR = <= ,RESTRICT = scalargtsel, JOIN = scalargtjoinsel);-- sparsevec opclassesCREATE OPERATOR CLASS sparsevec_opsDEFAULT FOR TYPE sparsevec USING btree ASOPERATOR 1 < ,OPERATOR 2 <= ,OPERATOR 3 = ,OPERATOR 4 >= ,OPERATOR 5 > ,FUNCTION 1 sparsevec_cmp(sparsevec, sparsevec);CREATE OPERATOR CLASS sparsevec_l2_opsFOR TYPE sparsevec USING hnsw ASOPERATOR 1 <-> (sparsevec, sparsevec) FOR ORDER BY float_ops,FUNCTION 1 sparsevec_l2_squared_distance(sparsevec, sparsevec),FUNCTION 3 hnsw_sparsevec_support(internal);CREATE OPERATOR CLASS sparsevec_ip_opsFOR TYPE sparsevec USING hnsw ASOPERATOR 1 <#> (sparsevec, sparsevec) FOR ORDER BY float_ops,FUNCTION 1 sparsevec_negative_inner_product(sparsevec, sparsevec),FUNCTION 3 hnsw_sparsevec_support(internal);CREATE OPERATOR CLASS sparsevec_cosine_opsFOR TYPE sparsevec USING hnsw ASOPERATOR 1 <=> (sparsevec, sparsevec) FOR ORDER BY float_ops,FUNCTION 1 sparsevec_negative_inner_product(sparsevec, sparsevec),FUNCTION 2 l2_norm(sparsevec),FUNCTION 3 hnsw_sparsevec_support(internal);CREATE OPERATOR CLASS sparsevec_l1_opsFOR TYPE sparsevec USING hnsw ASOPERATOR 1 <+> (sparsevec, sparsevec) FOR ORDER BY float_ops,FUNCTION 1 l1_distance(sparsevec, sparsevec),FUNCTION 3 hnsw_sparsevec_support(internal);
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。