mirror of
https://github.com/pgvector/pgvector.git
synced 2026-07-11 15:16:54 +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
|
cosine_distance(halfvec, halfvec) → double precision | cosine distance | unreleased
|
||||||
halfvec_dims(halfvec) → integer | number of dimensions | 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
|
inner_product(halfvec, halfvec) → double precision | inner product | unreleased
|
||||||
l1_distance(halfvec, halfvec) → double precision | taxicab distance | unreleased
|
l1_distance(halfvec, halfvec) → double precision | taxicab distance | unreleased
|
||||||
l2_distance(halfvec, halfvec) → double precision | Euclidean 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
|
quantize_binary(halfvec) → bit | quantize | unreleased
|
||||||
subvector(halfvec, integer, integer) → halfvec | subvector | 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
|
inner_product(sparsevec, sparsevec) → double precision | inner product | unreleased
|
||||||
l1_distance(sparsevec, sparsevec) → double precision | taxicab distance | unreleased
|
l1_distance(sparsevec, sparsevec) → double precision | taxicab distance | unreleased
|
||||||
l2_distance(sparsevec, sparsevec) → double precision | Euclidean 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
|
## Installation Notes - Linux and Mac
|
||||||
|
|
||||||
|
|||||||
@@ -74,8 +74,8 @@ CREATE FUNCTION l1_distance(halfvec, halfvec) RETURNS float8
|
|||||||
CREATE FUNCTION halfvec_dims(halfvec) RETURNS integer
|
CREATE FUNCTION halfvec_dims(halfvec) RETURNS integer
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
CREATE FUNCTION halfvec_norm(halfvec) RETURNS float8
|
CREATE FUNCTION l2_norm(halfvec) RETURNS float8
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
AS 'MODULE_PATHNAME', 'halfvec_l2_norm' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
CREATE FUNCTION halfvec_add(halfvec, halfvec) RETURNS halfvec
|
CREATE FUNCTION halfvec_add(halfvec, halfvec) RETURNS halfvec
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
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,
|
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 3 halfvec_spherical_distance(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
|
CREATE OPERATOR CLASS halfvec_cosine_ops
|
||||||
FOR TYPE halfvec USING ivfflat AS
|
FOR TYPE halfvec USING ivfflat 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 2 halfvec_norm(halfvec),
|
FUNCTION 2 l2_norm(halfvec),
|
||||||
FUNCTION 3 halfvec_spherical_distance(halfvec, halfvec),
|
FUNCTION 3 halfvec_spherical_distance(halfvec, halfvec),
|
||||||
FUNCTION 4 halfvec_norm(halfvec);
|
FUNCTION 4 l2_norm(halfvec);
|
||||||
|
|
||||||
CREATE OPERATOR CLASS halfvec_l2_ops
|
CREATE OPERATOR CLASS halfvec_l2_ops
|
||||||
FOR TYPE halfvec USING hnsw AS
|
FOR TYPE halfvec USING hnsw AS
|
||||||
@@ -301,7 +301,7 @@ CREATE OPERATOR CLASS halfvec_cosine_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 2 halfvec_norm(halfvec);
|
FUNCTION 2 l2_norm(halfvec);
|
||||||
|
|
||||||
CREATE TYPE sparsevec;
|
CREATE TYPE sparsevec;
|
||||||
|
|
||||||
@@ -338,8 +338,8 @@ CREATE FUNCTION inner_product(sparsevec, sparsevec) RETURNS float8
|
|||||||
CREATE FUNCTION cosine_distance(sparsevec, sparsevec) RETURNS float8
|
CREATE FUNCTION cosine_distance(sparsevec, sparsevec) RETURNS float8
|
||||||
AS 'MODULE_PATHNAME', 'sparsevec_cosine_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
AS 'MODULE_PATHNAME', 'sparsevec_cosine_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
CREATE FUNCTION sparsevec_norm(sparsevec) RETURNS float8
|
CREATE FUNCTION l2_norm(sparsevec) RETURNS float8
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
AS 'MODULE_PATHNAME', 'sparsevec_l2_norm' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
CREATE FUNCTION sparsevec_lt(sparsevec, sparsevec) RETURNS bool
|
CREATE FUNCTION sparsevec_lt(sparsevec, sparsevec) RETURNS bool
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
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
|
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 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
|
CREATE FUNCTION halfvec_dims(halfvec) RETURNS integer
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
CREATE FUNCTION halfvec_norm(halfvec) RETURNS float8
|
CREATE FUNCTION l2_norm(halfvec) RETURNS float8
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
AS 'MODULE_PATHNAME', 'halfvec_l2_norm' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
CREATE FUNCTION halfvec_add(halfvec, halfvec) RETURNS halfvec
|
CREATE FUNCTION halfvec_add(halfvec, halfvec) RETURNS halfvec
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
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,
|
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 3 halfvec_spherical_distance(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
|
CREATE OPERATOR CLASS halfvec_cosine_ops
|
||||||
FOR TYPE halfvec USING ivfflat AS
|
FOR TYPE halfvec USING ivfflat 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 2 halfvec_norm(halfvec),
|
FUNCTION 2 l2_norm(halfvec),
|
||||||
FUNCTION 3 halfvec_spherical_distance(halfvec, halfvec),
|
FUNCTION 3 halfvec_spherical_distance(halfvec, halfvec),
|
||||||
FUNCTION 4 halfvec_norm(halfvec);
|
FUNCTION 4 l2_norm(halfvec);
|
||||||
|
|
||||||
CREATE OPERATOR CLASS halfvec_l2_ops
|
CREATE OPERATOR CLASS halfvec_l2_ops
|
||||||
FOR TYPE halfvec USING hnsw AS
|
FOR TYPE halfvec USING hnsw AS
|
||||||
@@ -606,7 +606,7 @@ CREATE OPERATOR CLASS halfvec_cosine_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 2 halfvec_norm(halfvec);
|
FUNCTION 2 l2_norm(halfvec);
|
||||||
|
|
||||||
--- sparsevec type
|
--- sparsevec type
|
||||||
|
|
||||||
@@ -647,8 +647,8 @@ CREATE FUNCTION inner_product(sparsevec, sparsevec) RETURNS float8
|
|||||||
CREATE FUNCTION cosine_distance(sparsevec, sparsevec) RETURNS float8
|
CREATE FUNCTION cosine_distance(sparsevec, sparsevec) RETURNS float8
|
||||||
AS 'MODULE_PATHNAME', 'sparsevec_cosine_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
AS 'MODULE_PATHNAME', 'sparsevec_cosine_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
CREATE FUNCTION sparsevec_norm(sparsevec) RETURNS float8
|
CREATE FUNCTION l2_norm(sparsevec) RETURNS float8
|
||||||
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
AS 'MODULE_PATHNAME', 'sparsevec_l2_norm' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||||
|
|
||||||
-- sparsevec private functions
|
-- sparsevec private functions
|
||||||
|
|
||||||
@@ -779,4 +779,4 @@ CREATE OPERATOR CLASS sparsevec_cosine_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 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
|
* Get the L2 norm of a half vector
|
||||||
*/
|
*/
|
||||||
PGDLLEXPORT PG_FUNCTION_INFO_V1(halfvec_norm);
|
PGDLLEXPORT PG_FUNCTION_INFO_V1(halfvec_l2_norm);
|
||||||
Datum
|
Datum
|
||||||
halfvec_norm(PG_FUNCTION_ARGS)
|
halfvec_l2_norm(PG_FUNCTION_ARGS)
|
||||||
{
|
{
|
||||||
HalfVector *a = PG_GETARG_HALFVEC_P(0);
|
HalfVector *a = PG_GETARG_HALFVEC_P(0);
|
||||||
half *ax = a->x;
|
half *ax = a->x;
|
||||||
|
|||||||
@@ -784,9 +784,9 @@ sparsevec_cosine_distance(PG_FUNCTION_ARGS)
|
|||||||
/*
|
/*
|
||||||
* Get the L2 norm of a sparse vector
|
* Get the L2 norm of a sparse vector
|
||||||
*/
|
*/
|
||||||
PGDLLEXPORT PG_FUNCTION_INFO_V1(sparsevec_norm);
|
PGDLLEXPORT PG_FUNCTION_INFO_V1(sparsevec_l2_norm);
|
||||||
Datum
|
Datum
|
||||||
sparsevec_norm(PG_FUNCTION_ARGS)
|
sparsevec_l2_norm(PG_FUNCTION_ARGS)
|
||||||
{
|
{
|
||||||
SparseVector *a = PG_GETARG_SPARSEVEC_P(0);
|
SparseVector *a = PG_GETARG_SPARSEVEC_P(0);
|
||||||
float *ax = SPARSEVEC_VALUES(a);
|
float *ax = SPARSEVEC_VALUES(a);
|
||||||
|
|||||||
@@ -144,22 +144,22 @@ SELECT halfvec_dims('[1,2,3]'::halfvec);
|
|||||||
3
|
3
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT round(halfvec_norm('[1,1]')::numeric, 5);
|
SELECT round(l2_norm('[1,1]'::halfvec)::numeric, 5);
|
||||||
round
|
round
|
||||||
---------
|
---------
|
||||||
1.41421
|
1.41421
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT halfvec_norm('[3,4]');
|
SELECT l2_norm('[3,4]'::halfvec);
|
||||||
halfvec_norm
|
l2_norm
|
||||||
--------------
|
---------
|
||||||
5
|
5
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT halfvec_norm('[0,1]');
|
SELECT l2_norm('[0,1]'::halfvec);
|
||||||
halfvec_norm
|
l2_norm
|
||||||
--------------
|
---------
|
||||||
1
|
1
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT l2_distance('[0,0]'::halfvec, '[3,4]');
|
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
|
||||||
(1 row)
|
(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
|
round
|
||||||
---------
|
---------
|
||||||
1.41421
|
1.41421
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT sparsevec_norm('{1:3,2:4}/2');
|
SELECT l2_norm('{1:3,2:4}/2'::sparsevec);
|
||||||
sparsevec_norm
|
l2_norm
|
||||||
----------------
|
---------
|
||||||
5
|
5
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT sparsevec_norm('{2:1}/2');
|
SELECT l2_norm('{2:1}/2'::sparsevec);
|
||||||
sparsevec_norm
|
l2_norm
|
||||||
----------------
|
---------
|
||||||
1
|
1
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT sparsevec_norm('{1:3e37,2:4e37}/2')::real;
|
SELECT l2_norm('{1:3e37,2:4e37}/2'::sparsevec)::real;
|
||||||
sparsevec_norm
|
l2_norm
|
||||||
----------------
|
---------
|
||||||
5e+37
|
5e+37
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT l2_distance('{}/2'::sparsevec, '{1:3,2:4}/2');
|
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 halfvec_dims('[1,2,3]'::halfvec);
|
||||||
|
|
||||||
SELECT round(halfvec_norm('[1,1]')::numeric, 5);
|
SELECT round(l2_norm('[1,1]'::halfvec)::numeric, 5);
|
||||||
SELECT halfvec_norm('[3,4]');
|
SELECT l2_norm('[3,4]'::halfvec);
|
||||||
SELECT halfvec_norm('[0,1]');
|
SELECT l2_norm('[0,1]'::halfvec);
|
||||||
|
|
||||||
SELECT l2_distance('[0,0]'::halfvec, '[3,4]');
|
SELECT l2_distance('[0,0]'::halfvec, '[3,4]');
|
||||||
SELECT l2_distance('[0,0]'::halfvec, '[0,1]');
|
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: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 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 round(l2_norm('{1:1,2:1}/2'::sparsevec)::numeric, 5);
|
||||||
SELECT sparsevec_norm('{1:3,2:4}/2');
|
SELECT l2_norm('{1:3,2:4}/2'::sparsevec);
|
||||||
SELECT sparsevec_norm('{2:1}/2');
|
SELECT l2_norm('{2:1}/2'::sparsevec);
|
||||||
SELECT sparsevec_norm('{1:3e37,2:4e37}/2')::real;
|
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, '{1:3,2:4}/2');
|
||||||
SELECT l2_distance('{}/2'::sparsevec, '{2:1}/2');
|
SELECT l2_distance('{}/2'::sparsevec, '{2:1}/2');
|
||||||
|
|||||||
Reference in New Issue
Block a user