Spaces:
Sleeping
Sleeping
-- 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); |