metallkart-erp/prisma/sql/02-agent-august-indexes.sql
louis 35793b7909 feat(agent-august): M0A - Prisma models + pgvector foundations
- Models: AgentAction, AgentAuditLog, AgentEngagement, KnowledgeArticle, KnowledgeChunk
- Enums: AgentActionType, AgentActionStatus, KnowledgeArticleStatus
- pgvector extension + HNSW vectorial index (cosine ops, 512 dims for voyage-3-lite)
- GIN tsvector index (russian + simple) for hybrid fulltext retrieval
- Auto-trigger to maintain content_tsv on insert/update
- New env vars: AGENT_*, VOYAGE_AI_*
- E2E seed truncation list updated with 5 new tables

Tests: +5 Vitest (T-M0A-01..05)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-19 21:14:58 +04:00

25 lines
890 B
PL/PgSQL

-- Index vectoriel HNSW pour similarity search rapide (cosine)
CREATE INDEX IF NOT EXISTS idx_knowledge_chunks_embedding
ON knowledge_chunks
USING hnsw (embedding vector_cosine_ops)
WITH (m = 16, ef_construction = 64);
-- Index fulltext PG (GIN sur tsvector)
CREATE INDEX IF NOT EXISTS idx_knowledge_chunks_content_tsv
ON knowledge_chunks
USING GIN (content_tsv);
-- Trigger pour maintenir content_tsv à jour automatiquement
CREATE OR REPLACE FUNCTION update_knowledge_chunks_tsv() RETURNS TRIGGER AS $$
BEGIN
NEW.content_tsv := to_tsvector('russian', NEW.content) || to_tsvector('simple', NEW.content);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
DROP TRIGGER IF EXISTS trg_knowledge_chunks_tsv ON knowledge_chunks;
CREATE TRIGGER trg_knowledge_chunks_tsv
BEFORE INSERT OR UPDATE OF content ON knowledge_chunks
FOR EACH ROW EXECUTE FUNCTION update_knowledge_chunks_tsv();