create table if not exists thoughts (
  id         bigserial   primary key,
  guid       uuid        not null default gen_random_uuid(),
  content    text        not null,
  embedding  vector(1536),
  metadata   jsonb       default '{}'::jsonb,
  created_at timestamptz default now(),
  updated_at timestamptz default now(),
  constraint thoughts_guid_unique unique (guid)
);

create index if not exists thoughts_embedding_hnsw_idx
  on thoughts using hnsw (embedding vector_cosine_ops);

create index if not exists thoughts_metadata_gin_idx
  on thoughts using gin (metadata);

create index if not exists thoughts_created_at_idx
  on thoughts (created_at desc);
