-- First, make sure you have the vector extension enabled -- First, make sure you have the vector extension enabled CREATE EXTENSION IF NOT EXISTS vector; -- Create the documents table if it doesn't exist CREATE TABLE IF NOT EXISTS documents ( id SERIAL PRIMARY KEY, content TEXT, metadata JSONB, embedding VECTOR(768) ); -- Create the similarity search function that LangChain expects CREATE OR REPLACE FUNCTION match_documents_langchain_2( query_embedding VECTOR(768), match_threshold FLOAT DEFAULT 0.6, match_count INT DEFAULT 10 ) RETURNS TABLE ( id BIGINT, content TEXT, metadata JSONB, similarity FLOAT ) LANGUAGE SQL STABLE AS $$ SELECT documents.id, documents.content, documents.metadata, 1 - (documents.embedding <=> query_embedding) AS similarity FROM documents WHERE 1 - (documents.embedding <=> query_embedding) > match_threshold ORDER BY documents.embedding <=> query_embedding LIMIT match_count; $$; -- Create an index on the embedding column for better performance CREATE INDEX IF NOT EXISTS documents_embedding_idx ON documents USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100);