Spaces:
Runtime error
Runtime error
| -- This script sets up the 'documents' table for pgvector and the corresponding search function. | |
| -- Step 1: Create the table to store documents and embeddings. | |
| CREATE TABLE public.documents ( | |
| id uuid PRIMARY KEY DEFAULT uuid_generate_v4(), | |
| content text, | |
| metadata jsonb, | |
| embedding vector(384) -- Corresponds to the all-MiniLM-L6-v2 model | |
| ); | |
| -- Step 2: Create the function to search for similar documents. | |
| CREATE OR REPLACE FUNCTION match_documents ( | |
| query_embedding vector(384), | |
| match_count int DEFAULT 10, | |
| filter jsonb DEFAULT '{}' | |
| ) | |
| RETURNS TABLE ( | |
| id uuid, | |
| content text, | |
| metadata jsonb, | |
| similarity float | |
| ) | |
| LANGUAGE plpgsql | |
| AS $$ | |
| BEGIN | |
| RETURN QUERY | |
| SELECT | |
| documents.id, | |
| documents.content, | |
| documents.metadata, | |
| 1 - (documents.embedding <=> query_embedding) as similarity | |
| FROM documents | |
| WHERE documents.metadata @> filter | |
| ORDER BY documents.embedding <=> query_embedding | |
| LIMIT match_count; | |
| END; | |
| $$; | |
| -- Step 3: Grant permissions on the new table and function to the API roles. | |
| GRANT ALL ON TABLE public.documents TO service_role; | |
| GRANT ALL ON TABLE public.documents TO anon; | |
| GRANT EXECUTE ON FUNCTION public.match_documents(vector, integer, jsonb) TO service_role; | |
| GRANT EXECUTE ON FUNCTION public.match_documents(vector, integer, jsonb) TO anon; | |