mirror of
https://github.com/pgvector/pgvector.git
synced 2026-06-29 09:11:17 +08:00
73 lines
2.7 KiB
SQL
73 lines
2.7 KiB
SQL
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
|
|
\echo Use "ALTER EXTENSION vector UPDATE TO '0.8.0'" to load this file. \quit
|
|
|
|
CREATE FUNCTION hnsw_minivec_support(internal) RETURNS internal
|
|
AS 'MODULE_PATHNAME' LANGUAGE C;
|
|
|
|
CREATE TYPE minivec;
|
|
|
|
CREATE FUNCTION minivec_in(cstring, oid, integer) RETURNS minivec
|
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
|
|
CREATE FUNCTION minivec_out(minivec) RETURNS cstring
|
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
|
|
CREATE FUNCTION minivec_typmod_in(cstring[]) RETURNS integer
|
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
|
|
CREATE FUNCTION minivec_recv(internal, oid, integer) RETURNS minivec
|
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
|
|
CREATE FUNCTION minivec_send(minivec) RETURNS bytea
|
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
|
|
CREATE TYPE minivec (
|
|
INPUT = minivec_in,
|
|
OUTPUT = minivec_out,
|
|
TYPMOD_IN = minivec_typmod_in,
|
|
RECEIVE = minivec_recv,
|
|
SEND = minivec_send,
|
|
STORAGE = external
|
|
);
|
|
|
|
CREATE FUNCTION l2_distance(minivec, minivec) RETURNS float8
|
|
AS 'MODULE_PATHNAME', 'minivec_l2_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
|
|
CREATE FUNCTION minivec_l2_squared_distance(minivec, minivec) RETURNS float8
|
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
|
|
CREATE OPERATOR <-> (
|
|
LEFTARG = minivec, RIGHTARG = minivec, PROCEDURE = l2_distance,
|
|
COMMUTATOR = '<->'
|
|
);
|
|
|
|
CREATE OPERATOR CLASS minivec_l2_ops
|
|
FOR TYPE minivec USING hnsw AS
|
|
OPERATOR 1 <-> (minivec, minivec) FOR ORDER BY float_ops,
|
|
FUNCTION 1 minivec_l2_squared_distance(minivec, minivec),
|
|
FUNCTION 3 hnsw_minivec_support(internal);
|
|
|
|
CREATE FUNCTION array_to_sparsevec(integer[], integer, boolean) RETURNS sparsevec
|
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
|
|
CREATE FUNCTION array_to_sparsevec(real[], integer, boolean) RETURNS sparsevec
|
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
|
|
CREATE FUNCTION array_to_sparsevec(double precision[], integer, boolean) RETURNS sparsevec
|
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
|
|
CREATE FUNCTION array_to_sparsevec(numeric[], integer, boolean) RETURNS sparsevec
|
|
AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
|
|
CREATE CAST (integer[] AS sparsevec)
|
|
WITH FUNCTION array_to_sparsevec(integer[], integer, boolean) AS ASSIGNMENT;
|
|
|
|
CREATE CAST (real[] AS sparsevec)
|
|
WITH FUNCTION array_to_sparsevec(real[], integer, boolean) AS ASSIGNMENT;
|
|
|
|
CREATE CAST (double precision[] AS sparsevec)
|
|
WITH FUNCTION array_to_sparsevec(double precision[], integer, boolean) AS ASSIGNMENT;
|
|
|
|
CREATE CAST (numeric[] AS sparsevec)
|
|
WITH FUNCTION array_to_sparsevec(numeric[], integer, boolean) AS ASSIGNMENT;
|