mirror of
https://github.com/pgvector/pgvector.git
synced 2026-06-06 05:51:21 +08:00
Renamed functions to l2_norm [skip ci]
This commit is contained in:
@@ -895,10 +895,10 @@ Function | Description | Added
|
||||
--- | --- | ---
|
||||
cosine_distance(halfvec, halfvec) → double precision | cosine distance | unreleased
|
||||
halfvec_dims(halfvec) → integer | number of dimensions | unreleased
|
||||
halfvec_norm(halfvec) → double precision | Euclidean norm | unreleased
|
||||
inner_product(halfvec, halfvec) → double precision | inner product | unreleased
|
||||
l1_distance(halfvec, halfvec) → double precision | taxicab distance | unreleased
|
||||
l2_distance(halfvec, halfvec) → double precision | Euclidean distance | unreleased
|
||||
l2_norm(halfvec) → double precision | Euclidean norm | unreleased
|
||||
quantize_binary(halfvec) → bit | quantize | unreleased
|
||||
subvector(halfvec, integer, integer) → halfvec | subvector | unreleased
|
||||
|
||||
@@ -947,7 +947,7 @@ cosine_distance(sparsevec, sparsevec) → double precision | cosine distance | u
|
||||
inner_product(sparsevec, sparsevec) → double precision | inner product | unreleased
|
||||
l1_distance(sparsevec, sparsevec) → double precision | taxicab distance | unreleased
|
||||
l2_distance(sparsevec, sparsevec) → double precision | Euclidean distance | unreleased
|
||||
sparsevec_norm(sparsevec) → double precision | Euclidean norm | unreleased
|
||||
l2_norm(sparsevec) → double precision | Euclidean norm | unreleased
|
||||
|
||||
## Installation Notes - Linux and Mac
|
||||
|
||||
|
||||
@@ -74,8 +74,8 @@ CREATE FUNCTION l1_distance(halfvec, halfvec) RETURNS float8
|
||||
CREATE FUNCTION halfvec_dims(halfvec) RETURNS integer
|
||||
AS 'MODULE_PATHNAME' 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 halfvec_add(halfvec, halfvec) RETURNS halfvec
|
||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||
@@ -277,15 +277,15 @@ CREATE OPERATOR CLASS halfvec_ip_ops
|
||||
OPERATOR 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 halfvec_norm(halfvec);
|
||||
FUNCTION 4 l2_norm(halfvec);
|
||||
|
||||
CREATE OPERATOR CLASS halfvec_cosine_ops
|
||||
FOR TYPE halfvec USING ivfflat 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),
|
||||
FUNCTION 3 halfvec_spherical_distance(halfvec, halfvec),
|
||||
FUNCTION 4 halfvec_norm(halfvec);
|
||||
FUNCTION 4 l2_norm(halfvec);
|
||||
|
||||
CREATE OPERATOR CLASS halfvec_l2_ops
|
||||
FOR TYPE halfvec USING hnsw AS
|
||||
@@ -301,7 +301,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 TYPE sparsevec;
|
||||
|
||||
@@ -338,8 +338,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_lt(sparsevec, sparsevec) RETURNS bool
|
||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||
@@ -460,4 +460,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);
|
||||
|
||||
@@ -367,8 +367,8 @@ CREATE FUNCTION l1_distance(halfvec, halfvec) RETURNS float8
|
||||
CREATE FUNCTION halfvec_dims(halfvec) RETURNS integer
|
||||
AS 'MODULE_PATHNAME' 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 halfvec_add(halfvec, halfvec) RETURNS halfvec
|
||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||
@@ -582,15 +582,15 @@ CREATE OPERATOR CLASS halfvec_ip_ops
|
||||
OPERATOR 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 halfvec_norm(halfvec);
|
||||
FUNCTION 4 l2_norm(halfvec);
|
||||
|
||||
CREATE OPERATOR CLASS halfvec_cosine_ops
|
||||
FOR TYPE halfvec USING ivfflat 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),
|
||||
FUNCTION 3 halfvec_spherical_distance(halfvec, halfvec),
|
||||
FUNCTION 4 halfvec_norm(halfvec);
|
||||
FUNCTION 4 l2_norm(halfvec);
|
||||
|
||||
CREATE OPERATOR CLASS halfvec_l2_ops
|
||||
FOR TYPE halfvec USING hnsw AS
|
||||
@@ -606,7 +606,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);
|
||||
|
||||
--- sparsevec type
|
||||
|
||||
@@ -647,8 +647,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
|
||||
|
||||
@@ -779,4 +779,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);
|
||||
|
||||
@@ -727,9 +727,9 @@ halfvec_dims(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;
|
||||
|
||||
@@ -784,9 +784,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);
|
||||
|
||||
@@ -144,22 +144,22 @@ SELECT halfvec_dims('[1,2,3]'::halfvec);
|
||||
3
|
||||
(1 row)
|
||||
|
||||
SELECT round(halfvec_norm('[1,1]')::numeric, 5);
|
||||
SELECT round(l2_norm('[1,1]'::halfvec)::numeric, 5);
|
||||
round
|
||||
---------
|
||||
1.41421
|
||||
(1 row)
|
||||
|
||||
SELECT halfvec_norm('[3,4]');
|
||||
halfvec_norm
|
||||
--------------
|
||||
5
|
||||
SELECT l2_norm('[3,4]'::halfvec);
|
||||
l2_norm
|
||||
---------
|
||||
5
|
||||
(1 row)
|
||||
|
||||
SELECT halfvec_norm('[0,1]');
|
||||
halfvec_norm
|
||||
--------------
|
||||
1
|
||||
SELECT l2_norm('[0,1]'::halfvec);
|
||||
l2_norm
|
||||
---------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT l2_distance('[0,0]'::halfvec, '[3,4]');
|
||||
|
||||
@@ -112,28 +112,28 @@ SELECT sparsevec_cmp('{1:2,2:3}/2', '{1:1,2:2,3:3}/3');
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT round(sparsevec_norm('{1:1,2:1}/2')::numeric, 5);
|
||||
SELECT round(l2_norm('{1:1,2:1}/2'::sparsevec)::numeric, 5);
|
||||
round
|
||||
---------
|
||||
1.41421
|
||||
(1 row)
|
||||
|
||||
SELECT sparsevec_norm('{1:3,2:4}/2');
|
||||
sparsevec_norm
|
||||
----------------
|
||||
5
|
||||
SELECT l2_norm('{1:3,2:4}/2'::sparsevec);
|
||||
l2_norm
|
||||
---------
|
||||
5
|
||||
(1 row)
|
||||
|
||||
SELECT sparsevec_norm('{2:1}/2');
|
||||
sparsevec_norm
|
||||
----------------
|
||||
1
|
||||
SELECT l2_norm('{2:1}/2'::sparsevec);
|
||||
l2_norm
|
||||
---------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT sparsevec_norm('{1:3e37,2:4e37}/2')::real;
|
||||
sparsevec_norm
|
||||
----------------
|
||||
5e+37
|
||||
SELECT l2_norm('{1:3e37,2:4e37}/2'::sparsevec)::real;
|
||||
l2_norm
|
||||
---------
|
||||
5e+37
|
||||
(1 row)
|
||||
|
||||
SELECT l2_distance('{}/2'::sparsevec, '{1:3,2:4}/2');
|
||||
|
||||
@@ -29,9 +29,9 @@ SELECT halfvec_cmp('[2,3]', '[1,2,3]');
|
||||
|
||||
SELECT halfvec_dims('[1,2,3]'::halfvec);
|
||||
|
||||
SELECT round(halfvec_norm('[1,1]')::numeric, 5);
|
||||
SELECT halfvec_norm('[3,4]');
|
||||
SELECT halfvec_norm('[0,1]');
|
||||
SELECT round(l2_norm('[1,1]'::halfvec)::numeric, 5);
|
||||
SELECT l2_norm('[3,4]'::halfvec);
|
||||
SELECT l2_norm('[0,1]'::halfvec);
|
||||
|
||||
SELECT l2_distance('[0,0]'::halfvec, '[3,4]');
|
||||
SELECT l2_distance('[0,0]'::halfvec, '[0,1]');
|
||||
|
||||
@@ -19,10 +19,10 @@ SELECT sparsevec_cmp('{1:1,2:2,3:3}/3', '{1:1,2:2}/2');
|
||||
SELECT sparsevec_cmp('{1:1,2:2}/2', '{1:2,2:3,3:4}/3');
|
||||
SELECT sparsevec_cmp('{1:2,2:3}/2', '{1:1,2:2,3:3}/3');
|
||||
|
||||
SELECT round(sparsevec_norm('{1:1,2:1}/2')::numeric, 5);
|
||||
SELECT sparsevec_norm('{1:3,2:4}/2');
|
||||
SELECT sparsevec_norm('{2:1}/2');
|
||||
SELECT sparsevec_norm('{1:3e37,2:4e37}/2')::real;
|
||||
SELECT round(l2_norm('{1:1,2:1}/2'::sparsevec)::numeric, 5);
|
||||
SELECT l2_norm('{1:3,2:4}/2'::sparsevec);
|
||||
SELECT l2_norm('{2:1}/2'::sparsevec);
|
||||
SELECT l2_norm('{1:3e37,2:4e37}/2'::sparsevec)::real;
|
||||
|
||||
SELECT l2_distance('{}/2'::sparsevec, '{1:3,2:4}/2');
|
||||
SELECT l2_distance('{}/2'::sparsevec, '{2:1}/2');
|
||||
|
||||
Reference in New Issue
Block a user