bookwiz.io / supabase / migrations / 065_readd_debug_similarity_function.sql
065_readd_debug_similarity_function.sql
Raw
-- Function to debug similarity scores
-- This will help us see what similarity values are being calculated

CREATE OR REPLACE FUNCTION debug_similarity(
    search_book_id UUID,
    query_embedding vector(1536)
)
RETURNS TABLE (
    chunk_id UUID,
    file_name TEXT,
    content_preview TEXT,
    similarity FLOAT,
    distance FLOAT
) 
SECURITY DEFINER
SET search_path = public, extensions
AS $$
BEGIN
    RETURN QUERY
    SELECT 
        fc.id as chunk_id,
        fsi.name as file_name,
        LEFT(fc.content, 100) as content_preview,
        (1 - (fc.embedding <-> query_embedding)) as similarity,
        (fc.embedding <-> query_embedding) as distance
    FROM file_chunks fc
    JOIN file_system_items fsi ON fc.file_id = fsi.id
    WHERE fc.book_id = search_book_id
    ORDER BY distance ASC;
END;
$$ LANGUAGE plpgsql;