本文来源公众号“PingCAP”,仅用于学术分享,侵权删,干货满满。
1 导读
TiDB Serverless 上的向量化功能终于开始邀约体验啦!本文是来自 TiDB 社区用户对 TiDB Vector 功能初体验的详细分享,hey-hoho 介绍了他从申请体验到实际操作的全过程,包括创建 TiDB Vector 实例、进行向量检索的初体验,以及实现以图搜图和自然语言搜图的基础应用。如果你对 TiDB Serverless 感兴趣,欢迎了解 TiDB Vector,一起开启 TiDB Serverless 数据库之旅吧!
作者丨hey-hoho
来自神州数码钛合金战队
神州数码钛合金战队是一支致力于为企业提供分布式数据库 TiDB 整体解决方案的专业技术团队。团队成员拥有丰富的数据库从业背景,全部拥有 TiDB 高级资格证书,并活跃于 TiDB 开源社区,是官方认证合作伙伴。目前已为 10+客户提供了专业的 TiDB 交付服务,涵盖金融、证券、物流、电力、政府、零售等重点行业。
最早知道 TiDB 要支持向量化的消息应该是在 23 年 10 月份左右,到第一次见到 TiDB Vector 的样子是在今年 1 月初,当时 dongxu 在朋友圈发了一张图:
去年我研究了一段时间的向量数据库,一直对 TiDB 向量特性非常期待,看到这张图真的就激动万分,于是第一时间提交了 waitlist 等待体验 private beta。
苦等几个月,它终于来了(目前只对 TiDB Serverless 开放)。迫不及待做个小应用尝尝鲜。
-
waitlist 申请入口:https://tidb.cloud/ai
-
体验入口:https://tidbcloud.com/
2 创建TiDB Vector实例
在收到体验邀请邮件后,恭喜你可以开始 TiDB Vector 之旅了。
TiDB Serverless 提供了免费试用额度,对于测试用途绰绰有余,只需要注册一个 TiDB Cloud 账号即可。
创建 TiDB Vector 实例和普通的 TiDB 实例并没有太大区别,在创建集群页面可以看到加入了如下开关:
不过要注意的是目前 TiDB Vector 只在部分区域开放,大家可以根据实际情况选择。
这里只需要填一个集群名称就可以开始创建,创建成功后的样子如下所示:
下面开始进入正题。
3 关于向量的那些事
3.1 一些基础概念
-
向量:向量就是一组浮点数,在编程语言中通常体现为 float 数组,数组的长度叫做维度(dim),维度越大精度越高,向量的数学表示是多维坐标系中的一个点。例如 RGB 颜色表示法就是一个简单的向量示例。
-
embedding:中文翻译叫嵌入,感觉不好理解,实质上就是把非结构化数据(文本、语音、图片、视频等)通过一系列算法加工变成向量的过程,这里面的算法叫做模型(model)。
-
向量检索:计算两个向量之间的相似度。
3.2 向量检索初体验
连接到 TiDB Serverless 后,就可以体验文章开头图片中的向量操作。
创建一张带有向量字段的表,长度是 3 维。
CREATE TABLE vector_table (
id int PRIMARY KEY,
doc TEXT,
embedding vector < float > (3)
);
往表中插入向量数据:
INSERT INTO vector_table VALUES (1, 'apple', '[1,1,1]'), (2, 'banana', '[1,1,2]'), (3, 'dog', '[2,2,2]');
</