diff --git a/README.md b/README.md index ad20db6..cbf4b7e 100644 --- a/README.md +++ b/README.md @@ -777,6 +777,7 @@ Function | Description | Added cosine_distance(halfvec, halfvec) → double precision | cosine distance | unreleased inner_product(halfvec, halfvec) → double precision | inner product | unreleased l2_distance(halfvec, halfvec) → double precision | Euclidean distance | unreleased +l2_norm(halfvec) → double precision | Euclidean norm | unreleased l1_distance(halfvec, halfvec) → double precision | taxicab distance | unreleased quantize_binary(halfvec) → bit | quantize | unreleased subvector(halfvec, integer, integer) → halfvec | subvector | unreleased @@ -818,6 +819,7 @@ Function | Description | Added cosine_distance(sparsevec, sparsevec) → double precision | cosine distance | unreleased inner_product(sparsevec, sparsevec) → double precision | inner product | unreleased l2_distance(sparsevec, sparsevec) → double precision | Euclidean distance | unreleased +l2_norm(sparsevec) → double precision | Euclidean norm | unreleased l1_distance(sparsevec, sparsevec) → double precision | taxicab distance | unreleased ## Installation Notes - Linux and Mac diff --git a/sql/vector--0.6.2--0.7.0.sql b/sql/vector--0.6.2--0.7.0.sql index 3fdc8f1..cf181e1 100644 --- a/sql/vector--0.6.2--0.7.0.sql +++ b/sql/vector--0.6.2--0.7.0.sql @@ -71,8 +71,8 @@ CREATE FUNCTION cosine_distance(halfvec, halfvec) RETURNS float8 CREATE FUNCTION l1_distance(halfvec, halfvec) RETURNS float8 AS 'MODULE_PATHNAME', 'halfvec_l1_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -CREATE FUNCTION halfvec_norm(halfvec) RETURNS float8 - AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; +CREATE FUNCTION l2_norm(halfvec) RETURNS float8 + AS 'MODULE_PATHNAME', 'halfvec_l2_norm' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION quantize_binary(halfvec) RETURNS bit AS 'MODULE_PATHNAME', 'halfvec_quantize_binary' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; @@ -151,7 +151,7 @@ CREATE OPERATOR CLASS halfvec_cosine_ops FOR TYPE halfvec USING hnsw AS OPERATOR 1 <=> (halfvec, halfvec) FOR ORDER BY float_ops, FUNCTION 1 halfvec_negative_inner_product(halfvec, halfvec), - FUNCTION 2 halfvec_norm(halfvec); + FUNCTION 2 l2_norm(halfvec); CREATE FUNCTION halfvec_to_vector(halfvec, integer, boolean) RETURNS vector AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; @@ -200,8 +200,8 @@ CREATE FUNCTION inner_product(sparsevec, sparsevec) RETURNS float8 CREATE FUNCTION cosine_distance(sparsevec, sparsevec) RETURNS float8 AS 'MODULE_PATHNAME', 'sparsevec_cosine_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -CREATE FUNCTION sparsevec_norm(sparsevec) RETURNS float8 - AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; +CREATE FUNCTION l2_norm(sparsevec) RETURNS float8 + AS 'MODULE_PATHNAME', 'sparsevec_l2_norm' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION sparsevec_l2_squared_distance(sparsevec, sparsevec) RETURNS float8 AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; @@ -256,4 +256,4 @@ CREATE OPERATOR CLASS sparsevec_cosine_ops FOR TYPE sparsevec USING hnsw AS OPERATOR 1 <=> (sparsevec, sparsevec) FOR ORDER BY float_ops, FUNCTION 1 sparsevec_negative_inner_product(sparsevec, sparsevec), - FUNCTION 2 sparsevec_norm(sparsevec); + FUNCTION 2 l2_norm(sparsevec); diff --git a/sql/vector.sql b/sql/vector.sql index c694b1c..ca7a716 100644 --- a/sql/vector.sql +++ b/sql/vector.sql @@ -364,8 +364,8 @@ CREATE FUNCTION cosine_distance(halfvec, halfvec) RETURNS float8 CREATE FUNCTION l1_distance(halfvec, halfvec) RETURNS float8 AS 'MODULE_PATHNAME', 'halfvec_l1_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -CREATE FUNCTION halfvec_norm(halfvec) RETURNS float8 - AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; +CREATE FUNCTION l2_norm(halfvec) RETURNS float8 + AS 'MODULE_PATHNAME', 'halfvec_l2_norm' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION quantize_binary(halfvec) RETURNS bit AS 'MODULE_PATHNAME', 'halfvec_quantize_binary' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; @@ -454,7 +454,7 @@ CREATE OPERATOR CLASS halfvec_cosine_ops FOR TYPE halfvec USING hnsw AS OPERATOR 1 <=> (halfvec, halfvec) FOR ORDER BY float_ops, FUNCTION 1 halfvec_negative_inner_product(halfvec, halfvec), - FUNCTION 2 halfvec_norm(halfvec); + FUNCTION 2 l2_norm(halfvec); -- extension casts @@ -509,8 +509,8 @@ CREATE FUNCTION inner_product(sparsevec, sparsevec) RETURNS float8 CREATE FUNCTION cosine_distance(sparsevec, sparsevec) RETURNS float8 AS 'MODULE_PATHNAME', 'sparsevec_cosine_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -CREATE FUNCTION sparsevec_norm(sparsevec) RETURNS float8 - AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; +CREATE FUNCTION l2_norm(sparsevec) RETURNS float8 + AS 'MODULE_PATHNAME', 'sparsevec_l2_norm' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- sparsevec private functions @@ -575,4 +575,4 @@ CREATE OPERATOR CLASS sparsevec_cosine_ops FOR TYPE sparsevec USING hnsw AS OPERATOR 1 <=> (sparsevec, sparsevec) FOR ORDER BY float_ops, FUNCTION 1 sparsevec_negative_inner_product(sparsevec, sparsevec), - FUNCTION 2 sparsevec_norm(sparsevec); + FUNCTION 2 l2_norm(sparsevec); diff --git a/src/halfvec.c b/src/halfvec.c index d5fbf53..ce32957 100644 --- a/src/halfvec.c +++ b/src/halfvec.c @@ -950,9 +950,9 @@ halfvec_l1_distance(PG_FUNCTION_ARGS) /* * Get the L2 norm of a half vector */ -PGDLLEXPORT PG_FUNCTION_INFO_V1(halfvec_norm); +PGDLLEXPORT PG_FUNCTION_INFO_V1(halfvec_l2_norm); Datum -halfvec_norm(PG_FUNCTION_ARGS) +halfvec_l2_norm(PG_FUNCTION_ARGS) { HalfVector *a = PG_GETARG_HALFVEC_P(0); half *ax = a->x; diff --git a/src/sparsevec.c b/src/sparsevec.c index 22649cd..3cc2754 100644 --- a/src/sparsevec.c +++ b/src/sparsevec.c @@ -762,9 +762,9 @@ sparsevec_cosine_distance(PG_FUNCTION_ARGS) /* * Get the L2 norm of a sparse vector */ -PGDLLEXPORT PG_FUNCTION_INFO_V1(sparsevec_norm); +PGDLLEXPORT PG_FUNCTION_INFO_V1(sparsevec_l2_norm); Datum -sparsevec_norm(PG_FUNCTION_ARGS) +sparsevec_l2_norm(PG_FUNCTION_ARGS) { SparseVector *a = PG_GETARG_SPARSEVEC_P(0); float *ax = SPARSEVEC_VALUES(a);