【腾讯云生态大会】腾讯云向量数据库


  • 个人主页: ζ小菜鸡
  • 大家好我是ζ小菜鸡,让我们一起来体验腾讯云向量数据库
  • 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)

一、 腾讯云向量数据库介绍

1.腾讯云向量数据库是什么
腾讯云向量数据库(Tencent Cloud VectorDB)是一款全托管的自研企业级分布式数据库服务,专用于存储、检索、分析多维向量数据。该数据库支持多种索引类型和相似度计算方法,单索引支持 10 亿级向量规模,可支持百万级 QPS 及毫秒级查询延迟。腾讯云向量数据库不仅能为大模型提供外部知识库,提高大模型回答的准确性,还可广泛应用于推荐系统、自然语言处理等 AI 领域。


2.腾讯云向量数据库的产品特性及优点
(1)高性能
向量数据库 Tencent Cloud VectorDB 单索引支持 10 亿级向量数据规模,可支持百万级 QPS 及毫秒级查询延迟。
(2)低成本
只需按照控制台的指引简单操作,即可快速创建向量数据库实例,全流程平台托管,无需进行任何安装、部署、运维操作,减少机器成本、运维成本、人力成本开销。
(3)高可用
向量数据库 Tencent Cloud VectorDB 提供多副本高可用特性,提高容灾能力,确保数据库在面临节点故障和负载变化等挑战时仍能正常运行。
(4)简单易用
支持丰富的向量检索能力,用户通过 API 即可快速操作数据库,开发效率高。同时控制台提供了完善的数据管理和监控能力,操作简单便捷。
(5)大规模
向量数据库架构支持水平扩展,单实例可支持百亿级 QPS,轻松满足 AI 场景下的向量存储与检索需求。
(6)稳定可靠
向量数据库 Tencent Cloud VectorDB 源自腾讯集团自研的向量检索引擎 OLAMA,近 40 个业务线上稳定运行,日均处理的搜索请求高达千亿次,服务连续性、稳定性有保障。


二、向量数据库的产品规格

(1)产品规格
腾讯云向量数据库(Tencent Cloud VectorDB)采用分布式部署架构,每个节点相互通信和协调,实现数据存储与检索。客户端请求通过 Load balance 分发到各节点上。


(2)节点类型
腾讯云向量数据库依据存储节点 CPU 与内存资源分配比例不同,分为存储型和计算型两类。
a .存储型:主要用于存储和管理大规模的向量数据,其主要优势在于:提供低查询延迟,能够高效地存储和管理向量数据,特别适用于数据量大、数据增长快、查询 QPS 相对较低的场景,例如:人脸识别、图像搜索等。
b.计算型:主要用于快速查找和检索向量数据,支持高并发的查询请求,其主要优势在于:提供更高的查询 QPS 和更低的查询延迟,适用于流量大、延迟敏感的场景,例如:实时推荐、广告投放等。


(3)节点数量
腾讯云向量数据库采用分布式架构,支持多节点通信与协调,目前支持3~10个节点。


(4)节点规格
节点类型不同,对应的产品规格有差异,详细信息,请参见下表。
在这里插入图片描述


三、向量数据库关键概念

向量(Vector)

向量可以理解为一组数值的有序集合,通常用于表示某个对象或事物的属性或者特征。这些数值可以有不同的维度,每个维度都表示一个属性或特征。在机器学习和人工智能领域,向量常用于表示图像、文本、音频等数据,通过计算向量之间的距离或相似度来实现分类、聚类、检索等任务。
OLAMA

OLAMA 是腾讯自研的向量引擎,具有高性能、高可用、简单易用等特点。它支持单索引10亿级向量规模,适用于 AI 运算、检索场景,已稳定服务于近40个线上业务。

实例(Instance)

实例是腾讯云中独立运行的数据库环境,是用户购买向量数据库服务的基本单位,以单独的进程存在。一个数据库实例可以包含多个由用户创建的数据库。 您可以在控制台创建、修改和删除实例。实例之间相互独立、资源隔离,相互之间不存在 CPU、内存、持久内存、IO 等抢占问题。
数据库(Database)

数据库是按照数据结构来组织、存储和管理数据的仓库,一个实例可以创建多个 Database。
集合(Collection)

在向量数据库中,集合是指一组文档组,类似于关系型数据库中的表,其中可包含多条文档数据。集合没有固定的结构,可以插入不同格式和类型的数据。向量数据库支持集合维度的多分片、多副本特性,可以在创建集合时按需指定分片数和副本数。
文档(Document)

在向量数据库中,集合 可以看作是一个表格,而 Document 可以看作是表格中的一行数据。每个 Document 代表一个完整的文档对象,包含了多个 Field,每个 Field 表示文档中的一个属性或字段。向量数据库的文档是一组键值对(key:value),每个文档都有一个唯一主键(id)和一个向量字段(vector)。在插入文档时,向量数据库不需要设置相同的字段,可以在插入数据时增加或删除字段。
字段(Field)

每个 Field 是一个键值对(key:value),表示文档中的一个属性或者字段。每个 Field 都有自己的类型和取值范围,可以是字符串、数字等不同类型的数据。
节点(Node)

从向量数据库集群的资源角度来看,节点是用于存储数据的资源单位。一个运行中的向量数据库实例通常包含很多个节点,集合的多个副本和分片会分布在若干个节点上。节点是组成向量数据库集群的基本单元之一。
分片(Shard)

为了支持更大规模的数据,集合一般会按某个维度分成多个部分,每个部分就是一个分片,分布在若干个节点(Node)上。为了保证可靠性和可用性,同一个集合的多个分片会分布在不同节点(Node)上。
副本(Replica)

同一个分片(Shard)的备份数据,一个分片至少会有2个副本。副本分片作为硬件故障时保护数据不丢失的冗余备份,并为向量检索和文档查询等读操作提供服务,确保数据库在面临节点故障和负载变化等挑战时仍能正常运行。
索引(Index)

索引是一种特殊的数据结构,用于快速查找和访问数据,存储在内存中。索引本身并不存储数据,而是存储指向数据存储位置的指针或键值对。Tencent Cloud VectorDB 支持 FLAT、HNSW 等常见的向量索引。索引介绍详见 向量检索。
KNN(K-Nearest Neighbor Search)

KNN 指的是最近邻搜索(K-Nearest Neighbor Search),是一种基于暴力搜索的方法,它的原理是:计算待查询向量与数据库中所有向量之间的距离,然后按照距离从小到大排序,选择距离最近的 K 个向量作为查询结果。KNN 算法的优点是可以保证精确的结果,但是对于大规模的向量数据,计算量会非常大,效率较低。
ANN(Approximate Nearest Neighbor Search)

ANN 表示近似最近邻搜索(Approximate Nearest Neighbor Search),是一种用于高维数据空间中快速查找最近邻点的方法。与精确最近邻搜索相比,ANN 牺牲了一定的精度以换取更高的搜索速度,因此在处理大规模数据集时具有较高的效率。ANN 方法通常会对数据进行预处理,从而在查询时减少计算距离的次数。ANN 算法的优点是速度快、效率高,但是相对于 KNN 算法来说,其结果可能不够精确。
HNSW(Hierarchical Navigable Small World)

HNSW 是一种基于图的高维向量相似性搜索算法,全称为:Hierarchical Navigable Small World。它通过构建一张图来表示向量之间的相似度关系,并使用一些优化策略来加速搜索过程。


四、向量数据库的使用之新建数据库实例

【1】使用腾讯云账号登录 向量数据库控制台。(小菜鸡已注册已注册腾讯云账号并完成实名认证。如果没有腾讯云账号,需要先注册登录一下腾讯云)

在这里插入图片描述


【2】单击新建,进入新建向量数据库实例页面。(小菜鸡选择的是计算机型,向量规模比较小的)

在这里插入图片描述


【3】请参见下表,配置如下参数,购买实例。

在这里插入图片描述
【4】单击立即申请,自动返回实例列表页面,当前实例状态为创建中,等待实例状态更新为运行中即可使用。


五、向量数据库的初体验

【1】用户可通过腾讯云控制台购买云服务器 CVM 实例(CVM 和向量数据库需在同一个私有网络 VPC)进行性能测试发起。
在这里插入图片描述


(这里小菜鸡自己新建了性能测试的实例,之后在右侧操作列中登录即可)

在这里插入图片描述


在这里插入图片描述


(登录之后的界面如图,里面有一个编辑器的选项,方便用户操作,小菜鸡使用的就是编辑器)

在这里插入图片描述


编辑器页面如图

在这里插入图片描述


【2】测试工具准备
1.下载测试工具:ann-benchmarks-dev.zip,之后上传测试工具及数据集到测试客户端 CVM

在这里插入图片描述


2.安装测试工具依赖
软件依赖: python 版本大于 3.6.8, 使用建议的操作系统版本上的 python3 即可。(小菜鸡选择就是python3)
a. 首先在测试客户端 CVM终端中安装操作系统依赖包,如下图所示:

在这里插入图片描述


b.在终端中进入到测试工具目录并安装python运行依赖如下图所示:(这里一定要进入测试工具目录进行安装)

在这里插入图片描述
(安装模块不是很多,小菜鸡等待了10s左右就安装完毕了)


在这里插入图片描述


c.python依赖环境安装成功结果如下图所示:

在这里插入图片描述


【3】连接向量数据库
1:开始测试时,可从工程目录中拷贝默认配置文件
‘ann_benchmarks/algorithms/vector_db/config.yml’ 到工程下自己的工作目录做修改,再通过命令行参数–definitions 指定自已的配置文件来运行测试。

在这里插入图片描述


2:选择测试数据集,找到 ann-benchamrk 已存在的名为 sift-128-euclidean 的数据集正好是 128 维度,可使用该数据集做测试。 该数据集命令以 euclidean 结尾,表示使用L2 相似算法

在这里插入图片描述


3:CVM连接测试向量数据库
a.保证已新建数据库实例,且状态为运行中。如下图所示:

在这里插入图片描述


(在实例列表中,我们单击实例 ID,或在其操作列,单击管理,进入实例详情页面。就可以看到向量数据库的具体的信息了)

在这里插入图片描述


b.获取向量数据库实例的内网 IP 地址与网络端口(小菜鸡上个图里面就有具体信息)

在这里插入图片描述


c.获取向量数据库的 API 访问密钥(小菜鸡直接复制秘钥,大家可以单击 API 密钥 列的显示,可查看 API 密钥信息,在进行复制。)

在这里插入图片描述


d.在腾讯云 CVM 安全组中配置出站规则,需要把腾讯云向量数据库的 IP 及端口添加到出站规则中。在腾讯云向量数据库安全组中配置入站规则,把 CVM 的 IP 及端口添加到入站规则中
(1)腾讯云安全组

在这里插入图片描述


之后添加入站规则

在这里插入图片描述


(2)向量数据库安全组,配置安全组信息。如下图所示:

在这里插入图片描述


在这里插入图片描述


【4】测试运行示例
a: 拷贝默认配置文件到自己的配置文件路径(小菜鸡在控制台直接操作是不行的,必须在测试文件中操作)如下图所示:

在这里插入图片描述


在这里插入图片描述


b. 在mytest.yml按需设置自己的配置参数。

在这里插入图片描述


c.通过以下命令运行测试,工具会自动从外网下载 ann-benchmark 官方数据集并写入腾讯云向量数据库。(小菜鸡输入命令的时候没有注意格式一直报错,这里需要注意命令格式)如图下图所示:

在这里插入图片描述


d.测试结束后,测试结果保存在 results 文件夹中,需要使用另外的命令行工具将结果转换为可读的 csv 文件。如下图所示:

在这里插入图片描述


六、向量数据库的使用之检索性能压测

【1】探索指定召回率时,需要设置的查询 ef 条件(注意: 该模式需要增加 only_query 参数,避免重新进行数据插入)
a.找开探索模式,修改配置文件中的 KNNSeekMode 为 true, 该模式测试工具会反复运行不同 ef 值的查询,直到获得最匹配的召回率为止。如下图所示:

在这里插入图片描述


b.配置探索参数
KNNSeekStartEF: 指定从哪个 ef 参考值开始查询
KNNSeekStep: 指定探索模式中,每次 ef 值变化几个单位; 如 1 则为:
KNNSeekStartEF+=1 或相减。(每次递增或递减的步长)
KNNSeekExpect: 期望找到的召回率,如 0.95
(这里还是在配置文件里设置)如下图所示:

在这里插入图片描述


c.运行工具,在控制台输入指令。如下图所示:(这里小菜鸡还是要提醒一下大家,注意指令的格式)

在这里插入图片描述


d.结果显示如下(图片中 KNNSeekExpect=0.95):
在这里插入图片描述


【2】Search 检索性能测试
a.找到期望测试的 ef 或者设置 ef,通过‘【1】’中探索为获得指定召回率,需要设置的查询条件’ 找到期望召回率的 ef;或者按需设置自己的 ef 值
b. 压测查询配置,在配置文件中,如下使用 8 核压测查询 ef=111 的情况。 注意需要设置 KNNSeekMode为 false。如下图所示:

在这里插入图片描述


c.压测命令,压测时需要打开–batch 参数,同时设置–runs 为较大值以便长时间运行。如下图所示:
在这里插入图片描述


【3】查看压测结果
a.使用腾讯云账号登录 向量数据库控制台。在实例列表中,找到需查看监控数据的实例。如下图所示:

在这里插入图片描述


b.单击目标实例 ID,或在其操作列,单击管理,进入实例详情页面,找到实例监控。如图所示:

在这里插入图片描述


c:腾讯云向量数据库控制台提供了实例的 CPU,内存、QPS,时延等关键性能指标监控。可从方便的控制台获取。如下图所示:

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


【4】当查询无法把 CPU 打满时的解决方案
受限于 python 语言的线程模型,有时测试工具无法把测试压力打满,导致实例性能无法达到极限,此时可使用多进程或多台 CVM 同时进行压测。如图所示:

在这里插入图片描述


七、总结

腾讯云向量数据库作为一种专门存储和检索向量数据的服务提供给用户, 在高性能、高可用、大规模、低成本、简单易用、稳定可靠、智能运维等方面体现出显著优势。 是一款全托管的自研企业级分布式数据库服务,专用于存储、检索、分析多维向量数据。不仅能为大模型提供外部知识库,提高大模型回答的准确性,还可广泛应用于推荐系统、NLP 服务、计算机视觉、智能客服等 AI 领域,应用范围十分广泛。


猜你喜欢

转载自blog.csdn.net/weixin_45191386/article/details/132692916