-- Phase 4 飛輪修復 (ADR-067 延伸): Playbook Embeddings 持久化表
-- 2026-04-10 Claude Sonnet 4.6 Asia/Taipei
-- 目的: 解決冷啟動飛輪斷層 — Playbook 語義相似度查詢
--
-- 前置: pgvector extension 已安裝 (phase28_rag_pgvector.sql)
-- 向量模型: nomic-embed-text (Ollama 192.168.0.188:11434) → 768 維
--
-- 索引策略:
--   < 100 筆: 線性掃描 (無需索引)
--   > 100 筆: 執行 CREATE INDEX ivfflat (phase35 已示範)

CREATE TABLE IF NOT EXISTS playbook_embeddings (
    playbook_id   TEXT PRIMARY KEY,
    embedding     vector(768),                 -- nomic-embed-text 768 維
    alert_names   TEXT[]    NOT NULL DEFAULT '{}',  -- 索引時的 alert_names 快照
    keywords      TEXT[]    NOT NULL DEFAULT '{}',  -- 索引時的 keywords 快照
    indexed_at    TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at    TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE playbook_embeddings IS
    'Playbook 向量索引 — Phase 4 飛輪修復 (2026-04-10) — nomic-embed-text 768 維';

-- 向量近鄰索引 (超過 100 筆後解開)
-- CREATE INDEX IF NOT EXISTS ix_playbook_embeddings_vec
--   ON playbook_embeddings USING ivfflat (embedding vector_cosine_ops)
--   WITH (lists = 10);
