41 lines
1.9 KiB
SQL
41 lines
1.9 KiB
SQL
-- =============================================================================
|
||
-- Migration 034: rag_query_log / learning_episodes embedding_signature
|
||
-- Operation Ollama-First v5.0 — BGE-M3 cross-table guardrail
|
||
-- 日期: 2026-05-12 台北
|
||
-- =============================================================================
|
||
-- 背景:
|
||
-- migration 026 已替 ai_insights.embedding 加 embedding_signature,但
|
||
-- rag_query_log.query_embedding 與 learning_episodes.embedding 仍缺同一護欄。
|
||
-- 一旦 bge-m3:latest / normalize / dim 漂移,跨表 cosine 會退化且無法定位。
|
||
--
|
||
-- 設計:
|
||
-- 1. 新增 nullable VARCHAR(64),metadata-only,不回填、不重寫大表。
|
||
-- 2. 新寫入由 services/rag_service.py 與 services/openclaw_learning_service.py 補簽名。
|
||
-- 3. 既有 NULL 代表歷史資料,查詢端可保守放行或在後續 backfill 後收緊。
|
||
-- =============================================================================
|
||
|
||
ALTER TABLE IF EXISTS rag_query_log
|
||
ADD COLUMN IF NOT EXISTS embedding_signature VARCHAR(64);
|
||
|
||
COMMENT ON COLUMN rag_query_log.embedding_signature IS
|
||
'BGE-M3 一致性簽名;對應 query_embedding,NULL = 歷史資料或 embedding 失敗';
|
||
|
||
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_rag_query_log_embedding_signature
|
||
ON rag_query_log (embedding_signature)
|
||
WHERE query_embedding IS NOT NULL AND embedding_signature IS NOT NULL;
|
||
|
||
ALTER TABLE IF EXISTS learning_episodes
|
||
ADD COLUMN IF NOT EXISTS embedding_signature VARCHAR(64);
|
||
|
||
COMMENT ON COLUMN learning_episodes.embedding_signature IS
|
||
'BGE-M3 一致性簽名;對應 embedding,NULL = 尚未 embedding 或歷史資料';
|
||
|
||
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_le_embedding_signature
|
||
ON learning_episodes (embedding_signature)
|
||
WHERE embedding IS NOT NULL AND embedding_signature IS NOT NULL;
|
||
|
||
DO $$
|
||
BEGIN
|
||
RAISE NOTICE 'Migration 034 done: embedding_signature added to rag_query_log and learning_episodes';
|
||
END $$;
|