From 7dc3182edd2a4b3a4d24b3c756778857562022f1 Mon Sep 17 00:00:00 2001 From: dolliecoder Date: Fri, 13 Feb 2026 20:13:09 +0530 Subject: [PATCH] Add similarity search functions for tasks and tickets --- ...251021110000_task_ticket_vector_search.sql | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 supabase/migrations/20251021110000_task_ticket_vector_search.sql diff --git a/supabase/migrations/20251021110000_task_ticket_vector_search.sql b/supabase/migrations/20251021110000_task_ticket_vector_search.sql new file mode 100644 index 0000000..70d2892 --- /dev/null +++ b/supabase/migrations/20251021110000_task_ticket_vector_search.sql @@ -0,0 +1,48 @@ +CREATE OR REPLACE FUNCTION get_similar_tasks( + query_embedding vector(768), + match_count INT DEFAULT 3 +) +RETURNS TABLE ( + task_id UUID, + title TEXT, + description TEXT, + similarity FLOAT +) AS $$ +BEGIN + RETURN QUERY + SELECT + t.id AS task_id, + t.title, + t.description, + 1 - (t.description_embedding <=> query_embedding) AS similarity + FROM tasks t + WHERE t.description_embedding IS NOT NULL + ORDER BY t.description_embedding <=> query_embedding + LIMIT match_count; +END; +$$ LANGUAGE plpgsql; + + +CREATE OR REPLACE FUNCTION get_similar_tickets( + query_embedding vector(768), + match_count INT DEFAULT 3 +) +RETURNS TABLE ( + ticket_id UUID, + title TEXT, + description TEXT, + similarity FLOAT +) AS $$ +BEGIN + RETURN QUERY + SELECT + tk.id AS ticket_id, + tk.title, + tk.description, + 1 - (tk.description_embedding <=> query_embedding) AS similarity + FROM tickets tk + WHERE tk.description_embedding IS NOT NULL + ORDER BY tk.description_embedding <=> query_embedding + LIMIT match_count; +END; +$$ LANGUAGE plpgsql;