schema.sql 1019 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. -- Enable the pgvector extension to work with embedding vectors
  2. create extension vector;
  3. -- Create a table to store your documents
  4. create table documents (
  5. id bigserial primary key,
  6. content text, -- corresponds to Document.pageContent
  7. metadata jsonb, -- corresponds to Document.metadata
  8. embedding vector(1536) -- 1536 works for OpenAI embeddings, change if needed
  9. );
  10. -- Create a function to search for documents
  11. create function match_documents (
  12. query_embedding vector(1536),
  13. match_count int
  14. ) returns table (
  15. id bigint,
  16. content text,
  17. metadata jsonb,
  18. similarity float
  19. )
  20. language plpgsql
  21. as $$
  22. #variable_conflict use_column
  23. begin
  24. return query
  25. select
  26. id,
  27. content,
  28. metadata,
  29. 1 - (documents.embedding <=> query_embedding) as similarity
  30. from documents
  31. order by documents.embedding <=> query_embedding
  32. limit match_count;
  33. end;
  34. $$;
  35. -- Create an index to be used by the search function
  36. create index on documents
  37. using ivfflat (embedding vector_cosine_ops)
  38. with (lists = 100);