MySQL 8.4 创建 512 维向量表 + 向量索引完整教程

MySQL 8.4 官方原生支持向量数据类型和​向量索引(基于 IVFFLAT 算法),专门用于向量检索(AI 大模型、图片检索、文本匹配等场景),直接给你可复制运行的完整 SQL。

核心说明

  1. 向量类型:vecf32(32 位浮点型向量,MySQL 8.0.36 标准向量类型)
  2. 维度:固定 512 维
  3. 索引:IVFFLAT 向量索引(MySQL 唯一支持的向量索引类型,高效做近似最近邻检索)
  4. 必须指定向量维度,索引必须绑定向量列
  5. 可结合BAAI_bge-small-zh模型使用

完整示例

-- 1. 创建512维向量表
CREATE TABLE vector_data (
    id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    embedding vecf32(512) NOT NULL,
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 2. 创建向量索引(L2距离,512维)
CREATE INDEX idx_vector_embedding 
ON vector_data(embedding) 
USING vecf32_ivfflat 
WITH (distance_metric = L2);

-- 3. 测试插入(512维向量,仅示例)
INSERT INTO vector_data (embedding) 
VALUES (vecf32(0.1,0.2,0.3,0.4,0.5)); -- 实际使用替换为512个数值

-- 4. 测试向量检索
SELECT 
    id,
    embedding <-> vecf32(0.1,0.2,0.3,0.4,0.5) AS distance
FROM vector_data
ORDER BY distance ASC
LIMIT 5;

评论 (0)

暂无评论