- 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>
25 lines
890 B
PL/PgSQL
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();
|