Squashed 'vendor/ruvector/' content from commit b64c2172
git-subtree-dir: vendor/ruvector git-subtree-split: b64c21726f2bb37286d9ee36a7869fef60cc6900
This commit is contained in:
43
crates/ruvector-postgres/sql/access_methods.sql
Normal file
43
crates/ruvector-postgres/sql/access_methods.sql
Normal file
@@ -0,0 +1,43 @@
|
||||
-- ============================================================================
|
||||
-- HNSW Access Method
|
||||
-- ============================================================================
|
||||
|
||||
-- HNSW Access Method Handler
|
||||
CREATE OR REPLACE FUNCTION hnsw_handler(internal)
|
||||
RETURNS index_am_handler
|
||||
AS 'MODULE_PATHNAME', 'hnsw_handler_wrapper'
|
||||
LANGUAGE C STRICT;
|
||||
|
||||
-- Create HNSW Access Method
|
||||
CREATE ACCESS METHOD hnsw TYPE INDEX HANDLER hnsw_handler;
|
||||
|
||||
-- ============================================================================
|
||||
-- Operator Classes for HNSW
|
||||
-- ============================================================================
|
||||
|
||||
-- HNSW Operator Class for L2 (Euclidean) distance
|
||||
CREATE OPERATOR CLASS ruvector_l2_ops
|
||||
DEFAULT FOR TYPE ruvector USING hnsw AS
|
||||
OPERATOR 1 <-> (ruvector, ruvector) FOR ORDER BY float_ops,
|
||||
FUNCTION 1 ruvector_l2_distance(ruvector, ruvector);
|
||||
|
||||
COMMENT ON OPERATOR CLASS ruvector_l2_ops USING hnsw IS
|
||||
'ruvector HNSW operator class for L2/Euclidean distance';
|
||||
|
||||
-- HNSW Operator Class for Cosine distance
|
||||
CREATE OPERATOR CLASS ruvector_cosine_ops
|
||||
FOR TYPE ruvector USING hnsw AS
|
||||
OPERATOR 1 <=> (ruvector, ruvector) FOR ORDER BY float_ops,
|
||||
FUNCTION 1 ruvector_cosine_distance(ruvector, ruvector);
|
||||
|
||||
COMMENT ON OPERATOR CLASS ruvector_cosine_ops USING hnsw IS
|
||||
'ruvector HNSW operator class for cosine distance';
|
||||
|
||||
-- HNSW Operator Class for Inner Product
|
||||
CREATE OPERATOR CLASS ruvector_ip_ops
|
||||
FOR TYPE ruvector USING hnsw AS
|
||||
OPERATOR 1 <#> (ruvector, ruvector) FOR ORDER BY float_ops,
|
||||
FUNCTION 1 ruvector_inner_product(ruvector, ruvector);
|
||||
|
||||
COMMENT ON OPERATOR CLASS ruvector_ip_ops USING hnsw IS
|
||||
'ruvector HNSW operator class for inner product (max similarity)';
|
||||
Reference in New Issue
Block a user