mirror of
https://github.com/pgvector/pgvector.git
synced 2026-06-06 05:51:21 +08:00
Moved functions and synced upgrade script [skip ci]
This commit is contained in:
@@ -22,6 +22,24 @@ CREATE OPERATOR || (
|
|||||||
LEFTARG = vector, RIGHTARG = vector, PROCEDURE = vector_concat
|
LEFTARG = vector, RIGHTARG = vector, PROCEDURE = vector_concat
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE FUNCTION ivfflat_bit_support(internal) RETURNS internal
|
||||||
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
|
CREATE FUNCTION ivfflat_halfvec_support(internal) RETURNS internal
|
||||||
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
|
CREATE FUNCTION hnsw_bit_max_dims(internal) RETURNS internal
|
||||||
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
|
CREATE FUNCTION hnsw_halfvec_max_dims(internal) RETURNS internal
|
||||||
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
|
CREATE FUNCTION hnsw_sparsevec_max_dims(internal) RETURNS internal
|
||||||
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
|
CREATE FUNCTION hnsw_sparsevec_check_value(internal) RETURNS internal
|
||||||
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
CREATE OPERATOR CLASS vector_l1_ops
|
CREATE OPERATOR CLASS vector_l1_ops
|
||||||
FOR TYPE vector USING hnsw AS
|
FOR TYPE vector USING hnsw AS
|
||||||
OPERATOR 1 <+> (vector, vector) FOR ORDER BY float_ops,
|
OPERATOR 1 <+> (vector, vector) FOR ORDER BY float_ops,
|
||||||
@@ -33,12 +51,6 @@ CREATE FUNCTION hamming_distance(bit, bit) RETURNS float8
|
|||||||
CREATE FUNCTION jaccard_distance(bit, bit) RETURNS float8
|
CREATE FUNCTION jaccard_distance(bit, bit) RETURNS float8
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
CREATE FUNCTION ivfflat_bit_support(internal) RETURNS internal
|
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
||||||
|
|
||||||
CREATE FUNCTION hnsw_bit_support(internal) RETURNS internal
|
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
||||||
|
|
||||||
CREATE OPERATOR <~> (
|
CREATE OPERATOR <~> (
|
||||||
LEFTARG = bit, RIGHTARG = bit, PROCEDURE = hamming_distance,
|
LEFTARG = bit, RIGHTARG = bit, PROCEDURE = hamming_distance,
|
||||||
COMMUTATOR = '<~>'
|
COMMUTATOR = '<~>'
|
||||||
@@ -60,13 +72,13 @@ CREATE OPERATOR CLASS bit_hamming_ops
|
|||||||
FOR TYPE bit USING hnsw AS
|
FOR TYPE bit USING hnsw AS
|
||||||
OPERATOR 1 <~> (bit, bit) FOR ORDER BY float_ops,
|
OPERATOR 1 <~> (bit, bit) FOR ORDER BY float_ops,
|
||||||
FUNCTION 1 hamming_distance(bit, bit),
|
FUNCTION 1 hamming_distance(bit, bit),
|
||||||
FUNCTION 4 hnsw_bit_support(internal);
|
FUNCTION 4 hnsw_bit_max_dims(internal);
|
||||||
|
|
||||||
CREATE OPERATOR CLASS bit_jaccard_ops
|
CREATE OPERATOR CLASS bit_jaccard_ops
|
||||||
FOR TYPE bit USING hnsw AS
|
FOR TYPE bit USING hnsw AS
|
||||||
OPERATOR 1 <%> (bit, bit) FOR ORDER BY float_ops,
|
OPERATOR 1 <%> (bit, bit) FOR ORDER BY float_ops,
|
||||||
FUNCTION 1 jaccard_distance(bit, bit),
|
FUNCTION 1 jaccard_distance(bit, bit),
|
||||||
FUNCTION 4 hnsw_bit_support(internal);
|
FUNCTION 4 hnsw_bit_max_dims(internal);
|
||||||
|
|
||||||
CREATE TYPE halfvec;
|
CREATE TYPE halfvec;
|
||||||
|
|
||||||
@@ -169,12 +181,6 @@ CREATE FUNCTION halfvec_accum(double precision[], halfvec) RETURNS double precis
|
|||||||
CREATE FUNCTION halfvec_avg(double precision[]) RETURNS halfvec
|
CREATE FUNCTION halfvec_avg(double precision[]) RETURNS halfvec
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
CREATE FUNCTION ivfflat_halfvec_support(internal) RETURNS internal
|
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
||||||
|
|
||||||
CREATE FUNCTION hnsw_halfvec_support(internal) RETURNS internal
|
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
||||||
|
|
||||||
CREATE AGGREGATE avg(halfvec) (
|
CREATE AGGREGATE avg(halfvec) (
|
||||||
SFUNC = halfvec_accum,
|
SFUNC = halfvec_accum,
|
||||||
STYPE = double precision[],
|
STYPE = double precision[],
|
||||||
@@ -352,13 +358,13 @@ CREATE OPERATOR CLASS halfvec_l2_ops
|
|||||||
FOR TYPE halfvec USING hnsw AS
|
FOR TYPE halfvec USING hnsw AS
|
||||||
OPERATOR 1 <-> (halfvec, halfvec) FOR ORDER BY float_ops,
|
OPERATOR 1 <-> (halfvec, halfvec) FOR ORDER BY float_ops,
|
||||||
FUNCTION 1 halfvec_l2_squared_distance(halfvec, halfvec),
|
FUNCTION 1 halfvec_l2_squared_distance(halfvec, halfvec),
|
||||||
FUNCTION 4 hnsw_halfvec_support(internal);
|
FUNCTION 4 hnsw_halfvec_max_dims(internal);
|
||||||
|
|
||||||
CREATE OPERATOR CLASS halfvec_ip_ops
|
CREATE OPERATOR CLASS halfvec_ip_ops
|
||||||
FOR TYPE halfvec USING hnsw AS
|
FOR TYPE halfvec USING hnsw AS
|
||||||
OPERATOR 1 <#> (halfvec, halfvec) FOR ORDER BY float_ops,
|
OPERATOR 1 <#> (halfvec, halfvec) FOR ORDER BY float_ops,
|
||||||
FUNCTION 1 halfvec_negative_inner_product(halfvec, halfvec),
|
FUNCTION 1 halfvec_negative_inner_product(halfvec, halfvec),
|
||||||
FUNCTION 4 hnsw_halfvec_support(internal);
|
FUNCTION 4 hnsw_halfvec_max_dims(internal);
|
||||||
|
|
||||||
CREATE OPERATOR CLASS halfvec_cosine_ops
|
CREATE OPERATOR CLASS halfvec_cosine_ops
|
||||||
FOR TYPE halfvec USING hnsw AS
|
FOR TYPE halfvec USING hnsw AS
|
||||||
@@ -366,13 +372,13 @@ CREATE OPERATOR CLASS halfvec_cosine_ops
|
|||||||
FUNCTION 1 halfvec_negative_inner_product(halfvec, halfvec),
|
FUNCTION 1 halfvec_negative_inner_product(halfvec, halfvec),
|
||||||
FUNCTION 2 l2_norm(halfvec),
|
FUNCTION 2 l2_norm(halfvec),
|
||||||
FUNCTION 3 l2_normalize(halfvec),
|
FUNCTION 3 l2_normalize(halfvec),
|
||||||
FUNCTION 4 hnsw_halfvec_support(internal);
|
FUNCTION 4 hnsw_halfvec_max_dims(internal);
|
||||||
|
|
||||||
CREATE OPERATOR CLASS halfvec_l1_ops
|
CREATE OPERATOR CLASS halfvec_l1_ops
|
||||||
FOR TYPE halfvec USING hnsw AS
|
FOR TYPE halfvec USING hnsw AS
|
||||||
OPERATOR 1 <+> (halfvec, halfvec) FOR ORDER BY float_ops,
|
OPERATOR 1 <+> (halfvec, halfvec) FOR ORDER BY float_ops,
|
||||||
FUNCTION 1 l1_distance(halfvec, halfvec),
|
FUNCTION 1 l1_distance(halfvec, halfvec),
|
||||||
FUNCTION 4 hnsw_halfvec_support(internal);
|
FUNCTION 4 hnsw_halfvec_max_dims(internal);
|
||||||
|
|
||||||
CREATE TYPE sparsevec;
|
CREATE TYPE sparsevec;
|
||||||
|
|
||||||
@@ -460,9 +466,6 @@ CREATE FUNCTION halfvec_to_sparsevec(halfvec, integer, boolean) RETURNS sparseve
|
|||||||
CREATE FUNCTION sparsevec_to_halfvec(sparsevec, integer, boolean) RETURNS halfvec
|
CREATE FUNCTION sparsevec_to_halfvec(sparsevec, integer, boolean) RETURNS halfvec
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
CREATE FUNCTION hnsw_sparsevec_support(internal) RETURNS internal
|
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
||||||
|
|
||||||
CREATE CAST (sparsevec AS sparsevec)
|
CREATE CAST (sparsevec AS sparsevec)
|
||||||
WITH FUNCTION sparsevec(sparsevec, integer, boolean) AS IMPLICIT;
|
WITH FUNCTION sparsevec(sparsevec, integer, boolean) AS IMPLICIT;
|
||||||
|
|
||||||
@@ -547,13 +550,15 @@ CREATE OPERATOR CLASS sparsevec_l2_ops
|
|||||||
FOR TYPE sparsevec USING hnsw AS
|
FOR TYPE sparsevec USING hnsw AS
|
||||||
OPERATOR 1 <-> (sparsevec, sparsevec) FOR ORDER BY float_ops,
|
OPERATOR 1 <-> (sparsevec, sparsevec) FOR ORDER BY float_ops,
|
||||||
FUNCTION 1 sparsevec_l2_squared_distance(sparsevec, sparsevec),
|
FUNCTION 1 sparsevec_l2_squared_distance(sparsevec, sparsevec),
|
||||||
FUNCTION 4 hnsw_sparsevec_support(internal);
|
FUNCTION 4 hnsw_sparsevec_max_dims(internal),
|
||||||
|
FUNCTION 5 hnsw_sparsevec_check_value(internal);
|
||||||
|
|
||||||
CREATE OPERATOR CLASS sparsevec_ip_ops
|
CREATE OPERATOR CLASS sparsevec_ip_ops
|
||||||
FOR TYPE sparsevec USING hnsw AS
|
FOR TYPE sparsevec USING hnsw AS
|
||||||
OPERATOR 1 <#> (sparsevec, sparsevec) FOR ORDER BY float_ops,
|
OPERATOR 1 <#> (sparsevec, sparsevec) FOR ORDER BY float_ops,
|
||||||
FUNCTION 1 sparsevec_negative_inner_product(sparsevec, sparsevec),
|
FUNCTION 1 sparsevec_negative_inner_product(sparsevec, sparsevec),
|
||||||
FUNCTION 4 hnsw_sparsevec_support(internal);
|
FUNCTION 4 hnsw_sparsevec_max_dims(internal),
|
||||||
|
FUNCTION 5 hnsw_sparsevec_check_value(internal);
|
||||||
|
|
||||||
CREATE OPERATOR CLASS sparsevec_cosine_ops
|
CREATE OPERATOR CLASS sparsevec_cosine_ops
|
||||||
FOR TYPE sparsevec USING hnsw AS
|
FOR TYPE sparsevec USING hnsw AS
|
||||||
@@ -561,10 +566,12 @@ CREATE OPERATOR CLASS sparsevec_cosine_ops
|
|||||||
FUNCTION 1 sparsevec_negative_inner_product(sparsevec, sparsevec),
|
FUNCTION 1 sparsevec_negative_inner_product(sparsevec, sparsevec),
|
||||||
FUNCTION 2 l2_norm(sparsevec),
|
FUNCTION 2 l2_norm(sparsevec),
|
||||||
FUNCTION 3 l2_normalize(sparsevec),
|
FUNCTION 3 l2_normalize(sparsevec),
|
||||||
FUNCTION 4 hnsw_sparsevec_support(internal);
|
FUNCTION 4 hnsw_sparsevec_max_dims(internal),
|
||||||
|
FUNCTION 5 hnsw_sparsevec_check_value(internal);
|
||||||
|
|
||||||
CREATE OPERATOR CLASS sparsevec_l1_ops
|
CREATE OPERATOR CLASS sparsevec_l1_ops
|
||||||
FOR TYPE sparsevec USING hnsw AS
|
FOR TYPE sparsevec USING hnsw AS
|
||||||
OPERATOR 1 <+> (sparsevec, sparsevec) FOR ORDER BY float_ops,
|
OPERATOR 1 <+> (sparsevec, sparsevec) FOR ORDER BY float_ops,
|
||||||
FUNCTION 1 l1_distance(sparsevec, sparsevec),
|
FUNCTION 1 l1_distance(sparsevec, sparsevec),
|
||||||
FUNCTION 4 hnsw_sparsevec_support(internal);
|
FUNCTION 4 hnsw_sparsevec_max_dims(internal),
|
||||||
|
FUNCTION 5 hnsw_sparsevec_check_value(internal);
|
||||||
|
|||||||
@@ -261,6 +261,26 @@ CREATE ACCESS METHOD hnsw TYPE INDEX HANDLER hnswhandler;
|
|||||||
|
|
||||||
COMMENT ON ACCESS METHOD hnsw IS 'hnsw index access method';
|
COMMENT ON ACCESS METHOD hnsw IS 'hnsw index access method';
|
||||||
|
|
||||||
|
-- private access method functions
|
||||||
|
|
||||||
|
CREATE FUNCTION ivfflat_bit_support(internal) RETURNS internal
|
||||||
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
|
CREATE FUNCTION ivfflat_halfvec_support(internal) RETURNS internal
|
||||||
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
|
CREATE FUNCTION hnsw_bit_max_dims(internal) RETURNS internal
|
||||||
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
|
CREATE FUNCTION hnsw_halfvec_max_dims(internal) RETURNS internal
|
||||||
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
|
CREATE FUNCTION hnsw_sparsevec_max_dims(internal) RETURNS internal
|
||||||
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
|
CREATE FUNCTION hnsw_sparsevec_check_value(internal) RETURNS internal
|
||||||
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
-- vector opclasses
|
-- vector opclasses
|
||||||
|
|
||||||
CREATE OPERATOR CLASS vector_ops
|
CREATE OPERATOR CLASS vector_ops
|
||||||
@@ -322,14 +342,6 @@ CREATE FUNCTION hamming_distance(bit, bit) RETURNS float8
|
|||||||
CREATE FUNCTION jaccard_distance(bit, bit) RETURNS float8
|
CREATE FUNCTION jaccard_distance(bit, bit) RETURNS float8
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
-- bit private functions
|
|
||||||
|
|
||||||
CREATE FUNCTION ivfflat_bit_support(internal) RETURNS internal
|
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
||||||
|
|
||||||
CREATE FUNCTION hnsw_bit_max_dims(internal) RETURNS internal
|
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
||||||
|
|
||||||
-- bit operators
|
-- bit operators
|
||||||
|
|
||||||
CREATE OPERATOR <~> (
|
CREATE OPERATOR <~> (
|
||||||
@@ -470,12 +482,6 @@ CREATE FUNCTION halfvec_accum(double precision[], halfvec) RETURNS double precis
|
|||||||
CREATE FUNCTION halfvec_avg(double precision[]) RETURNS halfvec
|
CREATE FUNCTION halfvec_avg(double precision[]) RETURNS halfvec
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
CREATE FUNCTION ivfflat_halfvec_support(internal) RETURNS internal
|
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
||||||
|
|
||||||
CREATE FUNCTION hnsw_halfvec_max_dims(internal) RETURNS internal
|
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
||||||
|
|
||||||
-- halfvec aggregates
|
-- halfvec aggregates
|
||||||
|
|
||||||
CREATE AGGREGATE avg(halfvec) (
|
CREATE AGGREGATE avg(halfvec) (
|
||||||
@@ -779,12 +785,6 @@ CREATE FUNCTION halfvec_to_sparsevec(halfvec, integer, boolean) RETURNS sparseve
|
|||||||
CREATE FUNCTION sparsevec_to_halfvec(sparsevec, integer, boolean) RETURNS halfvec
|
CREATE FUNCTION sparsevec_to_halfvec(sparsevec, integer, boolean) RETURNS halfvec
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
CREATE FUNCTION hnsw_sparsevec_max_dims(internal) RETURNS internal
|
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
||||||
|
|
||||||
CREATE FUNCTION hnsw_sparsevec_check_value(internal) RETURNS internal
|
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
||||||
|
|
||||||
-- sparsevec casts
|
-- sparsevec casts
|
||||||
|
|
||||||
CREATE CAST (sparsevec AS sparsevec)
|
CREATE CAST (sparsevec AS sparsevec)
|
||||||
|
|||||||
Reference in New Issue
Block a user