-- ============================================================ -- EKB Schema 索引创建脚本 -- 执行时机:prisma migrate 之后手动执行 -- 参考文档:docs/02-通用能力层/03-RAG引擎/04-数据模型设计.md -- ============================================================ -- 1. 确保 pgvector 扩展已启用 CREATE EXTENSION IF NOT EXISTS vector; -- 2. 确保 pg_bigm 扩展已启用(中文关键词检索) CREATE EXTENSION IF NOT EXISTS pg_bigm; -- ===== MVP 阶段必须创建 ===== -- 3. HNSW 向量索引(语义检索核心) -- 参数说明:m=16 每层最大连接数,ef_construction=64 构建时搜索范围 CREATE INDEX IF NOT EXISTS idx_ekb_chunk_embedding ON "ekb_schema"."ekb_chunk" USING hnsw (embedding vector_cosine_ops) WITH (m = 16, ef_construction = 64); -- ===== Phase 2 阶段使用(可预创建)===== -- 4. pg_bigm 中文关键词索引 CREATE INDEX IF NOT EXISTS idx_ekb_chunk_content_bigm ON "ekb_schema"."ekb_chunk" USING gin (content gin_bigm_ops); -- 5. 文档摘要关键词索引 CREATE INDEX IF NOT EXISTS idx_ekb_doc_summary_bigm ON "ekb_schema"."ekb_document" USING gin (summary gin_bigm_ops); -- 6. 全文内容关键词索引 CREATE INDEX IF NOT EXISTS idx_ekb_doc_text_bigm ON "ekb_schema"."ekb_document" USING gin (extracted_text gin_bigm_ops); -- ===== Phase 3 阶段使用(可预创建)===== -- 7. JSONB GIN 索引(metadata 查询加速) CREATE INDEX IF NOT EXISTS idx_ekb_doc_metadata_gin ON "ekb_schema"."ekb_document" USING gin (metadata jsonb_path_ops); -- 8. JSONB GIN 索引(structuredData 查询加速) CREATE INDEX IF NOT EXISTS idx_ekb_doc_structured_gin ON "ekb_schema"."ekb_document" USING gin (structured_data jsonb_path_ops); -- 9. 标签数组索引 CREATE INDEX IF NOT EXISTS idx_ekb_doc_tags_gin ON "ekb_schema"."ekb_document" USING gin (tags); -- 10. 切片元数据索引 CREATE INDEX IF NOT EXISTS idx_ekb_chunk_metadata_gin ON "ekb_schema"."ekb_chunk" USING gin (metadata jsonb_path_ops); -- ===== 验证索引创建 ===== -- SELECT indexname, indexdef FROM pg_indexes WHERE schemaname = 'ekb_schema';