写点什么

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 索引


sqlCREATE TABLE foo (id INT PRIMARY KEY,embedding VECTOR(5),VECTOR INDEX idx_embedding ((VEC_COSINE_DISTANCE(embedding))));
复制代码


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


sqlCREATE 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 fooORDER 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 团队正紧锣密鼓深耕向量存储、检索效率及生态适配等核心方向,很快将推出集成更多实用功能、性能进一步优化的新版本,值得期待。


发布于: 刚刚阅读数: 1
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
TiDB 向量能力上手指南_向量 & AI_TiDB 社区干货传送门_InfoQ写作社区