news 2026/5/1 10:10:06

TiDB 向量能力上手指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TiDB 向量能力上手指南

作者: MrSylar 原文来源: https://tidb.net/blog/41420212

Preface

TiDB v8.4(DMR) 版本开始提供向量搜索的实验特性,其向量能力基于 tiflash 构建。向量数据类型 vector 向量最大支持 16383 维, 向量搜索索引类型支持 HNSW (Hierarchical Navigable Small World) 。本文使用 TiDB v8.5.2 版本。

使用基础

创建向量索引

TiDB支持两种方式创建向量索引:

1)随建表对向量类型 vector 列创建 HNSW 索引

sql CREATE TABLE foo ( id INT PRIMARY KEY, embedding VECTOR(5), VECTOR INDEX idx_embedding ((VEC_COSINE_DISTANCE(embedding))) );

2)建表后对向量类型 vector 列创建 HNSW 索引

sql CREATE VECTOR INDEX idx_embedding ON foo ((VEC_COSINE_DISTANCE(embedding))); ALTER TABLE foo ADD VECTOR INDEX idx_embedding ((VEC_COSINE_DISTANCE(embedding))); -- 你也可以显式指定 "USING HNSW" 使用 HNSW 构建向量搜索索引 CREATE VECTOR INDEX idx_embedding ON foo ((VEC_COSINE_DISTANCE(embedding))) USING HNSW; ALTER TABLE foo ADD VECTOR INDEX idx_embedding ((VEC_COSINE_DISTANCE(embedding))) USING HNSW; -- 查看索引构建进度 SELECT * FROM INFORMATION_SCHEMA.TIFLASH_INDEXES; 通过字段 ROWS_STABLE_INDEXED 和 ROWS_STABLE_NOT_INDEXED 列查看索引构建进度,当 ROWS_STABLE_NOT_INDEXED 变为 0 时,表示索引构建完成

使用向量索引

TiDB 支持 SQL 和 Python SDK 两种方式使用向量搜索功能,其中 SQL 方式通过 ORDER BY ... LIMIT 子句来使用向量搜索索引,示例所示:

SQL

SELECT *FROM foo ORDER BY VEC_COSINE_DISTANCE(embedding, '[1, 2, 3, 4, 5]') LIMIT 10

性能测试

VectorDBBench 是一款对向量数据库进行基准性能和容量测试的工具,

[VectorDBBbench 项目地址]( https://github.com/zilliztech/VectorDBBench "VectorDBBbench github"),测试结果的指标中主要关注包括 qps、recall(召回率)、响应时间等。本文采用 5 台服务器做了初步性能测试,数据集 dataset 采用 biaosq_10m,向量维度1024维,服务器角色分配如下:

| 服务器 | 角色 | | ----------- | ----------- | | Server1 | tidb、tikv、pd | | Server2 | tidb、tikv、pd | | Server3 | tidb、tikv、pd | | Server4 | tiflash | | Server5 | tiflash | | Server6 | vectordbbench、haproxy |

性能测试结果(仅供参考,未尝试任何优化)如下:

|TiFlash 实例数量| QPS | latency(p99) |Recall | |-----------| ----------- | ----------- |------- | |1 | 108 | 0.0694 |0.9256| |2 | 45 | 0.1514 | 0.9558 |

\

业界产品性能可以参考 [VectorDB leader board]( https://zilliz.com/vdbbench-leaderboard?dataset=vectorSearch )

展望

本次测试中,向量的功能和性能已经基本满足业务使用。当然对比同类产品,也客观存在一些不足,例如 ivf 向量索引、混合搜索、向量内存管理等还不支持。通过线下交流了解到,TiDB 团队正紧锣密鼓深耕向量存储、检索效率及生态适配等核心方向,很快将推出集成更多实用功能、性能进一步优化的新版本,值得期待。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 4:48:23

AI一键生成CSS文字渐变代码,告别手动调试

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 请生成一个CSS文字渐变效果的代码,要求:1. 从左到右的渐变方向 2. 使用三种颜色过渡(#FF5733、#33FF57、#3357FF)3. 包含hover状态下…

作者头像 李华