package initialize import ( "git.echol.cn/loser/st/server/global" "go.uber.org/zap" ) // InitPgSQLExtension 初始化 PostgreSQL 扩展(仅创建 pgvector 扩展) // 必须在 AutoMigrate 之前调用 func InitPgSQLExtension() { if global.GVA_CONFIG.System.DbType != "pgsql" { return } db := global.GVA_DB // 安装 pgvector 扩展(用于向量存储) if err := db.Exec("CREATE EXTENSION IF NOT EXISTS vector").Error; err != nil { global.GVA_LOG.Error("failed to create pgvector extension", zap.Error(err)) global.GVA_LOG.Warn("请确保 PostgreSQL 已安装 pgvector 扩展") } else { global.GVA_LOG.Info("pgvector extension is ready") } } // CreateVectorIndexes 创建向量索引 // 必须在 AutoMigrate 之后调用(确保表已存在) func CreateVectorIndexes() { if global.GVA_CONFIG.System.DbType != "pgsql" { return } db := global.GVA_DB // 为 ai_memory_vectors 表创建 HNSW 索引(余弦相似度) sql := ` CREATE INDEX IF NOT EXISTS idx_memory_vectors_embedding ON ai_memory_vectors USING hnsw (embedding vector_cosine_ops) ` if err := db.Exec(sql).Error; err != nil { global.GVA_LOG.Error("failed to create vector indexes", zap.Error(err)) return } global.GVA_LOG.Info("vector indexes created successfully") }