19 lines
996 B
MySQL
19 lines
996 B
MySQL
|
|
-- KB spine: document_chunk — chunk-level embeddings, 1:N against envelope
|
||
|
|
-- Additive: does not modify 001_envelope.sql. envelope stays untouched.
|
||
|
|
-- Version: 002 — chunks (bge-m3 dense embeddings, dim=1024)
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS document_chunk (
|
||
|
|
id BIGSERIAL PRIMARY KEY,
|
||
|
|
envelope_id TEXT NOT NULL REFERENCES envelope(id) ON DELETE CASCADE,
|
||
|
|
chunk_index INT NOT NULL, -- order within envelope, 0-based
|
||
|
|
text TEXT NOT NULL,
|
||
|
|
embedding VECTOR(1024), -- bge-m3 dense; NULL until embedded
|
||
|
|
model TEXT NOT NULL, -- e.g. 'bge-m3' — tracks re-index on model change
|
||
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||
|
|
UNIQUE (envelope_id, chunk_index)
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS document_chunk_envelope_idx ON document_chunk (envelope_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS document_chunk_embedding_hnsw_idx
|
||
|
|
ON document_chunk USING hnsw (embedding vector_cosine_ops);
|