MySQL 8.4 官方原生支持向量数据类型和向量索引(基于 IVFFLAT 算法),专门用于向量检索(AI 大模型、图片检索、文本匹配等场景),直接给你可复制运行的完整 SQL。
核心说明
- 向量类型:
vecf32(32 位浮点型向量,MySQL 8.0.36 标准向量类型) - 维度:固定 512 维
- 索引:IVFFLAT 向量索引(MySQL 唯一支持的向量索引类型,高效做近似最近邻检索)
- 必须指定向量维度,索引必须绑定向量列
- 可结合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)