| command to run to activate pgvector extgension which is required to create a vector store on supabase |
|
|
|
|
| note: change the embedding size to your model here it is 1536 |
|
|
| [ref](https://js.langchain.com/docs/integrations/vectorstores/supabase/) |
| ``` |
| -- Enable the pgvector extension to work with embedding vectors |
| create extension vector; |
| |
| -- Create a table to store your documents |
| create table documents ( |
| id bigserial primary key, |
| content text, -- corresponds to Document.pageContent |
| metadata jsonb, -- corresponds to Document.metadata |
| embedding vector(1536) -- 1536 works for OpenAI embeddings, change if needed |
| ); |
| |
| -- Create a function to search for documents |
| create function match_documents ( |
| query_embedding vector(1536), |
| match_count int DEFAULT null, |
| filter jsonb DEFAULT '{}' |
| ) returns table ( |
| id bigint, |
| content text, |
| metadata jsonb, |
| embedding jsonb, |
| similarity float |
| ) |
| language plpgsql |
| as $$ |
| #variable_conflict use_column |
| begin |
| return query |
| select |
| id, |
| content, |
| metadata, |
| (embedding::text)::jsonb as embedding, |
| 1 - (documents.embedding <=> query_embedding) as similarity |
| from documents |
| where metadata @> filter |
| order by documents.embedding <=> query_embedding |
| limit match_count; |
| end; |
| $$; |
| ``` |