mirror of
https://github.com/pgvector/pgvector.git
synced 2026-06-06 14:01:31 +08:00
44 lines
1.4 KiB
SQL
44 lines
1.4 KiB
SQL
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
|
|
\echo Use "ALTER EXTENSION vector UPDATE TO '0.5.0'" to load this file. \quit
|
|
|
|
CREATE FUNCTION l1_distance(vector, vector) RETURNS float8
|
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
|
|
CREATE FUNCTION vector_mul(vector, vector) RETURNS vector
|
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
|
|
CREATE OPERATOR * (
|
|
LEFTARG = vector, RIGHTARG = vector, PROCEDURE = vector_mul,
|
|
COMMUTATOR = *
|
|
);
|
|
|
|
CREATE AGGREGATE sum(vector) (
|
|
SFUNC = vector_add,
|
|
STYPE = vector,
|
|
COMBINEFUNC = vector_add,
|
|
PARALLEL = SAFE
|
|
);
|
|
|
|
CREATE FUNCTION hnswhandler(internal) RETURNS index_am_handler
|
|
AS 'MODULE_PATHNAME' LANGUAGE C;
|
|
|
|
CREATE ACCESS METHOD hnsw TYPE INDEX HANDLER hnswhandler;
|
|
|
|
COMMENT ON ACCESS METHOD hnsw IS 'hnsw index access method';
|
|
|
|
CREATE OPERATOR CLASS vector_l2_ops
|
|
FOR TYPE vector USING hnsw AS
|
|
OPERATOR 1 <-> (vector, vector) FOR ORDER BY float_ops,
|
|
FUNCTION 1 vector_l2_squared_distance(vector, vector);
|
|
|
|
CREATE OPERATOR CLASS vector_ip_ops
|
|
FOR TYPE vector USING hnsw AS
|
|
OPERATOR 1 <#> (vector, vector) FOR ORDER BY float_ops,
|
|
FUNCTION 1 vector_negative_inner_product(vector, vector);
|
|
|
|
CREATE OPERATOR CLASS vector_cosine_ops
|
|
FOR TYPE vector USING hnsw AS
|
|
OPERATOR 1 <=> (vector, vector) FOR ORDER BY float_ops,
|
|
FUNCTION 1 vector_negative_inner_product(vector, vector),
|
|
FUNCTION 2 vector_norm(vector);
|