当前位置: 首页 > news >正文

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

http://www.cnnetsun.cn/news/165132.html

相关文章:

  • 从实验室到乡村课堂,Open-AutoGLM如何改变千万人命运?
  • Linly-Talker能否支持触觉反馈实现多感官交互?
  • 为什么顶尖团队都在布局Open-AutoGLM?一文看懂其与大模型的协同潜力
  • 等效氢气消耗最小的燃料电池混合动力能量管理策略 基于matlab平台开展,纯编程,.m文件 该...
  • GSV2221G@ACP#2221G产品规格详解及产品应用分享(1220总结)
  • 基于Web的学生学业质量分析系统-计算机毕业设计源码+LW文档分享
  • 从欧盟AI法案到中国生成式AI新规:Open-AutoGLM如何实现跨国合规?
  • 【Open-AutoGLM安全防线构建指南】:5步实现模型推理中的数据零泄露
  • Linly-Talker在智能家居控制中的语音交互演示
  • 复杂业务逻辑的分层测试策略拆解
  • Open-AutoGLM如何重塑隐私计算?:3大关键技术路径深度解析
  • 零基础图解教程:CV2库安装的每一步都带截图
  • 【Open-AutoGLM竞争格局深度解析】:揭秘未来三年行业洗牌关键趋势
  • 数字人语速控制技巧:Linly-Talker参数调节指南
  • 【Linux网络基础】TCP 数据包传输全流程深度解析
  • AI如何帮你快速掌握CSS nth-child选择器
  • 可控 AI 技术:企业在多模态时代如何治理 AI 行为(工程视角)
  • 快速验证:用AI 10分钟搭建文件转换微服务
  • 如何用AI快速解决Python库版本冲突问题
  • 5分钟搭建python八股文原型
  • DeskGo实战:打造个人效率工作台的5个案例
  • Java新手必看:5分钟学会File转MultipartFile
  • AI自动生成BAT清理脚本:告别手动写代码
  • 【稀缺技术曝光】:Open-AutoGLM内部协同算法首次公开,仅限本次解读
  • 数字人疲劳感规避:Linly-Talker表情多样性优化
  • CSS nth-child在电商网站商品列表中的实战应用
  • 数字人交互延迟优化:Linly-Talker实时性提升方案
  • 产品经理学AI-9:AI黑话秒懂指南,Embedding
  • 5分钟快速验证:免安装体验npm功能的创新方案
  • Linly-Talker能否实现双语交替讲解视频生成?