#!/usr/bin/env node const { createClient } = require('@supabase/supabase-js'); require('dotenv').config(); const supabaseUrl = process.env.SUPABASE_URL; const supabaseServiceKey = process.env.SUPABASE_SERVICE_KEY; const supabase = createClient(supabaseUrl, supabaseServiceKey); async function createVectorFunctions() { console.log('šŸ”§ Creating vector similarity search functions...\n'); try { // Create the match_document_chunks function console.log('šŸ“‹ Creating match_document_chunks function...'); const { error: functionError } = await supabase.rpc('exec_sql', { sql: ` CREATE OR REPLACE FUNCTION match_document_chunks( query_embedding vector(1536), match_threshold float, match_count int ) RETURNS TABLE ( id uuid, document_id uuid, content text, metadata jsonb, similarity float ) LANGUAGE plpgsql AS $$ BEGIN RETURN QUERY SELECT dc.id, dc.document_id, dc.content, dc.metadata, 1 - (dc.embedding <=> query_embedding) as similarity FROM document_chunks dc WHERE 1 - (dc.embedding <=> query_embedding) > match_threshold ORDER BY dc.embedding <=> query_embedding LIMIT match_count; END; $$; ` }); if (functionError) { console.log(`āŒ Function creation error: ${functionError.message}`); } else { console.log('āœ… match_document_chunks function created successfully'); } console.log('\nšŸŽ‰ Vector functions created successfully!'); } catch (error) { console.log('āŒ Error creating vector functions:', error.message); } } createVectorFunctions();