-- Enable pgvector extension (if not already enabled) CREATE EXTENSION IF NOT EXISTS vector; -- Create vector similarity search function CREATE OR REPLACE FUNCTION match_document_chunks( query_embedding VECTOR(1536), match_threshold FLOAT DEFAULT 0.7, match_count INTEGER DEFAULT 10 ) RETURNS TABLE ( id UUID, document_id TEXT, content TEXT, metadata JSONB, chunk_index INTEGER, similarity FLOAT ) LANGUAGE SQL STABLE AS $$ SELECT document_chunks.id, document_chunks.document_id, document_chunks.content, document_chunks.metadata, document_chunks.chunk_index, 1 - (document_chunks.embedding <=> query_embedding) AS similarity FROM document_chunks WHERE document_chunks.embedding IS NOT NULL AND 1 - (document_chunks.embedding <=> query_embedding) > match_threshold ORDER BY document_chunks.embedding <=> query_embedding LIMIT match_count; $$;