24 lines
1.2 KiB
MySQL
24 lines
1.2 KiB
MySQL
|
|
-- KB spine: document_summary — summaries + tags per document, half-product of compilation
|
||
|
|
-- Additive: does not modify 001_envelope.sql, 002_chunks.sql, or 003_chunk_model_key.sql.
|
||
|
|
-- Version: 004 — document_summary (module 5, phase 3, plan §4)
|
||
|
|
--
|
||
|
|
-- 1:N to envelope by model: the same envelope can carry summaries from multiple models
|
||
|
|
-- (pilot A/B: API vs local GPU); retrieval selects a model via config.
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS document_summary (
|
||
|
|
id BIGSERIAL PRIMARY KEY,
|
||
|
|
envelope_id TEXT NOT NULL REFERENCES envelope(id) ON DELETE CASCADE,
|
||
|
|
summary TEXT NOT NULL,
|
||
|
|
tags JSONB NOT NULL DEFAULT '[]',
|
||
|
|
model TEXT NOT NULL, -- model that WROTE the summary
|
||
|
|
embedding VECTOR(1024), -- NULL until embedded
|
||
|
|
embedding_model TEXT, -- embedding model (bge-m3); NULL with embedding
|
||
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||
|
|
UNIQUE (envelope_id, model)
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS document_summary_envelope_idx
|
||
|
|
ON document_summary (envelope_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS document_summary_embedding_hnsw_idx
|
||
|
|
ON document_summary USING hnsw (embedding vector_cosine_ops);
|