Merge commit 'd803bfe2b1fe7f5e219e50ac20d6801a0a58ac75' as 'vendor/ruvector'
This commit is contained in:
91
vendor/ruvector/crates/ruvector-postgres/docker/init.sql
vendored
Normal file
91
vendor/ruvector/crates/ruvector-postgres/docker/init.sql
vendored
Normal file
@@ -0,0 +1,91 @@
|
||||
-- RuVector-Postgres Initialization Script
|
||||
-- Creates extension and verifies basic functionality
|
||||
|
||||
-- Create the extension
|
||||
CREATE EXTENSION IF NOT EXISTS ruvector;
|
||||
|
||||
-- Create test schema
|
||||
CREATE SCHEMA IF NOT EXISTS ruvector_test;
|
||||
|
||||
-- Test table for basic usage
|
||||
CREATE TABLE ruvector_test.test_basic (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
category TEXT,
|
||||
metadata JSONB,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- Create ruvector role if it doesn't exist (optional app user)
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT FROM pg_roles WHERE rolname = 'ruvector') THEN
|
||||
CREATE ROLE ruvector WITH LOGIN PASSWORD 'ruvector';
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- Grant permissions to ruvector role and public
|
||||
GRANT USAGE ON SCHEMA ruvector_test TO PUBLIC;
|
||||
GRANT ALL ON SCHEMA ruvector_test TO ruvector;
|
||||
GRANT ALL ON ALL TABLES IN SCHEMA ruvector_test TO ruvector;
|
||||
GRANT ALL ON ALL SEQUENCES IN SCHEMA ruvector_test TO ruvector;
|
||||
|
||||
-- Log initialization and test basic functions
|
||||
DO $$
|
||||
DECLARE
|
||||
version_info TEXT;
|
||||
simd_info TEXT;
|
||||
BEGIN
|
||||
-- Test version function
|
||||
SELECT ruvector_version() INTO version_info;
|
||||
RAISE NOTICE 'RuVector-Postgres initialized successfully';
|
||||
RAISE NOTICE 'Extension version: %', version_info;
|
||||
|
||||
-- Test SIMD info function
|
||||
SELECT ruvector_simd_info() INTO simd_info;
|
||||
RAISE NOTICE 'SIMD info: %', simd_info;
|
||||
|
||||
-- Test distance functions with array functions
|
||||
RAISE NOTICE 'Testing distance functions...';
|
||||
RAISE NOTICE 'Inner product: %', inner_product_arr(ARRAY[1.0, 2.0, 3.0]::real[], ARRAY[1.0, 2.0, 3.0]::real[]);
|
||||
RAISE NOTICE 'Cosine distance: %', cosine_distance_arr(ARRAY[1.0, 0.0, 0.0]::real[], ARRAY[0.0, 1.0, 0.0]::real[]);
|
||||
|
||||
RAISE NOTICE 'All basic tests passed!';
|
||||
|
||||
-- ================================================================
|
||||
-- v0.3 Module Tests
|
||||
-- ================================================================
|
||||
RAISE NOTICE '--- v0.3 Module Tests ---';
|
||||
|
||||
-- Solver: PageRank
|
||||
RAISE NOTICE 'Solver PageRank: %', ruvector_pagerank('{"edges":[[0,1],[1,2],[2,0]]}'::jsonb);
|
||||
|
||||
-- Solver: Info
|
||||
RAISE NOTICE 'Solver algorithms available';
|
||||
|
||||
-- Solver: Matrix analyze
|
||||
RAISE NOTICE 'Matrix analyze: %', ruvector_matrix_analyze('{"rows":3,"cols":3,"entries":[[0,0,4],[0,1,-1],[1,0,-1],[1,1,4],[2,2,2]]}'::jsonb);
|
||||
|
||||
-- Math: Wasserstein distance
|
||||
RAISE NOTICE 'Wasserstein distance: %', ruvector_wasserstein_distance(ARRAY[0.5,0.5]::real[], ARRAY[0.3,0.7]::real[]);
|
||||
|
||||
-- Math: KL divergence
|
||||
RAISE NOTICE 'KL divergence: %', ruvector_kl_divergence(ARRAY[0.5,0.5]::real[], ARRAY[0.3,0.7]::real[]);
|
||||
|
||||
-- Math: Jensen-Shannon
|
||||
RAISE NOTICE 'Jensen-Shannon: %', ruvector_jensen_shannon(ARRAY[0.5,0.5]::real[], ARRAY[0.3,0.7]::real[]);
|
||||
|
||||
-- TDA: Persistent homology
|
||||
RAISE NOTICE 'Persistent homology: %', ruvector_persistent_homology('[[1,0],[0,1],[-1,0],[0,-1]]'::jsonb, 1, 3.0);
|
||||
|
||||
-- TDA: Betti numbers
|
||||
RAISE NOTICE 'Betti numbers: %', ruvector_betti_numbers('[[0,0],[1,0],[0,1]]'::jsonb, 1.5);
|
||||
|
||||
-- Attention: Linear attention
|
||||
RAISE NOTICE 'Linear attention: %', ruvector_linear_attention(ARRAY[1,0,0,0]::real[], '[[1,0,0,0],[0,1,0,0]]'::jsonb, '[[5,10],[15,20]]'::jsonb);
|
||||
|
||||
-- Attention: Benchmark
|
||||
RAISE NOTICE 'Attention benchmark: %', ruvector_attention_benchmark(64, 128, 'scaled_dot');
|
||||
|
||||
RAISE NOTICE 'All v0.3 tests passed!';
|
||||
END $$;
|
||||
Reference in New Issue
Block a user