CREATE EXTENSION IF NOT EXISTS vector; CREATE TABLE documents ( id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, title TEXT NOT NULL, source TEXT, status TEXT NOT NULL DEFAULT 'pending' CHECK (status IN ('pending', 'processing', 'completed', 'failed')), created_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); CREATE TABLE document_chunks ( id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, document_id BIGINT NOT NULL REFERENCES documents(id) ON DELETE CASCADE, chunk_index INTEGER NOT NULL CHECK (chunk_index >= 0), content TEXT NOT NULL, embedding vector(768) NOT NULL, created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), UNIQUE (document_id, chunk_index) ); CREATE INDEX document_chunks_document_id_idx ON document_chunks (document_id);