aftersales_policy_pgvector.sql 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. CREATE EXTENSION IF NOT EXISTS vector;
  2. CREATE TABLE IF NOT EXISTS aftersales_policy_doc (
  3. id BIGSERIAL PRIMARY KEY,
  4. doc_code VARCHAR(64) NOT NULL,
  5. title VARCHAR(256) NOT NULL,
  6. category VARCHAR(64) NOT NULL,
  7. issue_type VARCHAR(64) NOT NULL,
  8. version VARCHAR(32) NOT NULL,
  9. content TEXT NOT NULL,
  10. content_hash CHAR(64) NOT NULL,
  11. source_type VARCHAR(32) NOT NULL DEFAULT 'manual',
  12. source_uri VARCHAR(512),
  13. effective_at TIMESTAMPTZ,
  14. expired_at TIMESTAMPTZ,
  15. enabled BOOLEAN NOT NULL DEFAULT TRUE,
  16. metadata JSONB,
  17. create_time TIMESTAMPTZ NOT NULL DEFAULT now(),
  18. update_time TIMESTAMPTZ NOT NULL DEFAULT now(),
  19. UNIQUE (doc_code, version)
  20. );
  21. CREATE INDEX IF NOT EXISTS idx_policy_doc_issue_enabled
  22. ON aftersales_policy_doc (issue_type, enabled);
  23. CREATE INDEX IF NOT EXISTS idx_policy_doc_category
  24. ON aftersales_policy_doc (category);
  25. CREATE TABLE IF NOT EXISTS aftersales_policy_chunk (
  26. id BIGSERIAL PRIMARY KEY,
  27. doc_id BIGINT NOT NULL REFERENCES aftersales_policy_doc(id),
  28. chunk_no INT NOT NULL,
  29. chunk_text TEXT NOT NULL,
  30. token_count INT,
  31. embedding VECTOR(1536) NOT NULL,
  32. content_hash CHAR(64) NOT NULL,
  33. issue_type VARCHAR(64) NOT NULL,
  34. metadata JSONB,
  35. enabled BOOLEAN NOT NULL DEFAULT TRUE,
  36. create_time TIMESTAMPTZ NOT NULL DEFAULT now(),
  37. update_time TIMESTAMPTZ NOT NULL DEFAULT now(),
  38. UNIQUE (doc_id, chunk_no)
  39. );
  40. CREATE INDEX IF NOT EXISTS idx_policy_chunk_doc
  41. ON aftersales_policy_chunk (doc_id);
  42. CREATE INDEX IF NOT EXISTS idx_policy_chunk_issue_enabled
  43. ON aftersales_policy_chunk (issue_type, enabled);
  44. CREATE INDEX IF NOT EXISTS idx_policy_chunk_metadata
  45. ON aftersales_policy_chunk USING GIN (metadata);
  46. CREATE INDEX IF NOT EXISTS idx_policy_chunk_embedding
  47. ON aftersales_policy_chunk USING hnsw (embedding vector_cosine_ops);