大模型时代下向量数据库的创新与变革

2023-09-08 16:47:10

前言:

在当今信息时代,数据库扮演着关键的角色,用于存储和管理各种类型的数据。向量数据库是一种专门设计用于高维数据存储和快速检索的数据库系统。在不断创新和变革后,腾讯云不久前发布了AI原生(AI Native)向量数据库。

请添加图片描述

向量数据库发展背景和现状

向量数据库作为一种创新的解决方案应运而生。它专门为高维数据的存储和检索而设计,通过利用向量化存储和高效的向量索引技术,克服了传统数据库系统在处理高维数据时的局限性。向量数据库能够更高效地进行相似性搜索和近邻搜索,提供更快的查询响应时间。它采用特定的索引结构和数据组织方式,有效地解决了高维数据存储和检索的效率问题,并且能够更好地处理高维稀疏数据。

在大规模数据和复杂任务的背景下 传统的数据库系统可能无法满足高效处理和管理数据的需求。这时候,引入向量数据库成为一种重要的解决方案。向量数据库专门针对高维数据存储和快速检索进行优化,具备处理复杂数据和大规模数据集的能力。

在这里插入图片描述

在此基础上,腾讯云发布一款全托管的自研企业级分布式数据库服务,专用于存储、检索、分析多维向量数据。该数据库支持多种索引类型和相似度计算方法,单索引支持10亿级向量规模,可支持百万级 QPS 及毫秒级查询延迟。腾讯云向量数据库不仅能为大模型提供外部知识库,提高大模型回答的准确性,还可广泛应用于推荐系统、NLP 服务、计算机视觉、智能客服等 AI 领域。

AI加持下,向量数据库是否应该重新定义?

将AI接入向量数据库的好处是多方面的

首先,向量数据库提供高效的向量索引和相似性搜索技术,能够快速找到与给定向量相似的数据项。这对于AI中的相似度匹配、推荐系统、聚类分析等任务非常重要。

在这里插入图片描述

通过将AI模型训练的向量嵌入数据存储在向量数据库中,可以实现快速的相似度搜索和近邻查询,提高查询效率。向量数据库支持多模态数据的存储和检索,能够容纳不同类型的数据,如文本、图像、音频等。这对于多模态AI应用非常重要,例如视觉与语义检索、多模态生成等。

在这里插入图片描述
向量数据库还具备高度可扩展性和强大的并发查询能力,能够处理大规模数据和高并发访问的需求。这为训练大型AI模型和处理海量数据提供了基础设施支持。

取其精华,优势思考

作为一种专门存储和检索向量数据的服务提供给用户, 腾讯云数据库在高性能、高可用、大规模、低成本、简单易用、稳定可靠等方面体现出显著优势。

在这里插入图片描述

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

如何快速申请体验

腾讯云向量数据库如何快速体验?

腾讯云向量数据库目前是公测阶段。公测用户免费领用实例,每个地域最多申请2个,免费试用时长3个月。若1个月内未使用实例,平台将自动回收。

序号步骤描述具体操作
1申请腾讯云账号并认证注册腾讯云账号
2测试申请提交产品内测申请,填写用户信息。
3了解向量数据库所支持的规格与类型预估数据规模,选择合适的类型与规格。具体信息
4确定向量数据库所部署的地域选择当前支持的地域信息
5规划数据库实例的私有网络与安全组创建私有网络与 创建安全组,并同时设置安全组入站规则。
6购买实例新建数据库实例。直接选择上一步已准备的私有网络与安全组。
7申请与腾讯云向量数据库在同一地域同一个 VPC 内的 Linux 云服务器 CVM拥有自己的云服务器
8连接并操作向量数据库连接并写入数据库
9管理向量数据库实例通过控制台直接管理实例,查看实例状态或销毁实例
10智能运维在控制台查看监控数据库实例的各项指标。

性能测试实例

通过拥抱开源工具 ann-benchmark 的方式进行向量数据库的性能测试,也方便客户公平的与其他产品进行性能比拼验证。 本文介绍了腾讯云向量数据库基于ann-benchmark 工具适配后的使用方式及相关增强功能的使用介绍;另外,优化后的测试工具也支持了多种灵活的性能 benchamrk 测试配置方案及支持 k-nn 召回率探索模式等,降低了性能测试准入门槛

前期准备

  1. 一台云服务器
    在这里插入图片描述

  2. 一个向量数据库申请,本次测试使用的是存储型小规格实例(1核8GB)
    在这里插入图片描述

  3. 开源测试工具ann-benchmark : 可以自行搜索下载

  4. 上传测试工具及数据集到测试客户端 云服务器上
    注:ann-benchamrk 官方数据集测试工具可自动从外网官方站点下载。

  5. 安装测试工具依赖
    软件依赖: python 版本大于 3.6.8, 使用建议的操作系统版本上的 python3 即可

a. 安装操作系统依赖包
yum install python3-pillow-devel.x86_64
b. 解决测试工具并安装 python 运行依赖
cd ann-benchmarks
pip3 install -r requirements.txt

实例测试

1. 测试 128 维数据在 HNSW 索引下的单核查询性能

  1. 从数据库中获取连接地址和密钥:
    在这里插入图片描述
  2. 选择测试数据集
    从测试数据集说明中,找到 ann-benchamrk 已存在的名为 sift-128-euclidean 的数据集正
    好是 128 维度,可使用该数据集做测试。 该数据集命令以 euclidean 结尾,表示使用
    L2 相似算法
  3. 设置配置文件
a. 拷贝默认配置文件到自己的配置文件路径
cp ann_benchmarks/algorithms/vector_db/config.yml mytest.yml
b. 按需设置自己的配置参数
vi mytest.yml

只需要配置自己的数据库ip地址 HttpBase 和密钥 ApiKey 即可

float:
 any:
 - base_args: [ '@metric' ] #不需要修改
 constructor: VectorDb #不需要修改
 disabled: false #不需要修改
 docker_tag: ann-benchmarks-vector_db #不需要修改
 module: ann_benchmarks.algorithms.vector_db #不需要修改
 name: vector_db #不需要修改
 run_groups:
 vector_db:
 arg_groups:
 - [ 16 ] #M , 创建 Collection 时指定的 M 参数,是一个
List , 会为每个值创建一个对应的 collection。 (top)
 - DbName: db-test #测试使用的 DB 名字,collection 名字采用
自动生成方式。 命名方式为 "数据集名字_M 值"
 HttpBase: 改为数据库的ip地址 #Vector DB 连接的地
址,包含协议、IP、和端口信息
 NeedAuth: true # 是否需要启用认证,当前仅支持 Header 的
方式认证
 User: root # 访问实例使用的用户名
 ApiKey:改为自己的秘钥   #从腾讯云控制台上获取的实例访
问 API-KEY
 DropDb: true # 工具是否在每次插入数据前,先删了已经存在的
DB
 CreateDb: true # 工具是否需要创建新的数据库
 ReCreateCollection: false # 是否每次运行前都重建
collection
 DropCollectionOnDone: false # 是否在运行结束删除数据,
主要解决多表并发时内存不足场景,默认可使用 false
 IndexType: FLAT # 创建 Collection 时的 index 类型, 当前
支持 FLAT, HNSW
 MetricType: L2 # 创建 Collection 时的 Metric Type,同官
方 API 支持列表
 ColReplicaNum: 2 # 创建 Collection 时指定多少个副本
 ColShardNum: 10 # 创建 Collection 时,指定多少个 shard
 EfConstruction: 500 # 创建 Collection 时,指定的邻居数
 ExitOnError: true # 工具是否在 API 返回非 200 的时候退出, 
如不关注错误,可忽略。
  1. 命令行运行测试
    通过以下命令运行测试,工具会自动从外网下载 ann-benchmark 官方数据集并写入腾讯
    云向量数据库。
    下为对齐官方的标准的单核性能测试运行方式:
python3 run.py --dataset sift-128-euclidean --local --force --parallelism 1 --algorithm vector_db --definitions=mytest.yml --
runs 1
  1. 查询结果
python3 data_export.py --output=mytest.csv

在这里插入图片描述

  1. 向量数据库监控图
    在这里插入图片描述

2.探索指定召回率时,需要设置的查询 ef 条件

  1. 找开探索模式,重新打开刚才的配置文件
    修改配置文件中的 KNNSeekMode 为 true, 该模式测试工具会反复运行不同 ef 值的查
    询,直到获得最匹配的召回率为止
    在这里插入图片描述

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

  3. 运行工具:
    命令:

python3 data_export.py --output=mytest.csvpython3 run.py --dataset sift-128-euclidean --local --force --parallelism 1 --algorithm vector_db --definitions=mytest.yml --runs 1 --only_query
  1. 结果显示如下(图片中 KNNSeekExpect=0.95):
    即在 ef=111 时,可获得最接近 0.95 的召回率

3.Search 检索性能测试

  1. 找到期望测试的 ef 或者设置 ef
    通过‘(二)探索为获得指定召回率,需要设置的查询条件’ 找到期望召回率的 ef;或
    者按需设置自己的 ef 值
  2. 压测查询配置
    在配置文件中,如下使用 8 核压测查询 ef=111 的情况。 注意需要设置 KNNSeekMode
    为 false
    在这里插入图片描述

压测命令,压测时需要打开–batch 参数,同时设置–runs 为较大值以便长时间运行,如果数据库cpu资源没有打满,可使用多进程同时进行压测

python3 run.py --dataset sift-128-euclidean --local --force --parallelism 1 -algorithm vector_db --definitions=mytest.yml --runs 999 --only_query --batch
  1. 查看压测结果
    腾讯云向量数据库控制台提供了实例的 CPU,内存、QPS,时延等关键性能指标监
    控。可从方便的控制台获取
    在这里插入图片描述

总结

Tencent Cloud VectorDB的出现,无疑为这些企业提供了一种新的选择。从性能、可靠性和成本效益来看,Tencent Cloud VectorDB有明显优势。一起快来试试吧!!

更多推荐

2603. 收集树中金币

给你一个n个节点的无向无根树,节点编号从0到n-1。给你整数n和一个长度为n-1的二维整数数组edges,其中edges[i]=[ai,bi]表示树中节点ai和bi之间有一条边。再给你一个长度为n的数组coins,其中coins[i]可能为0也可能为1,1表示节点i处有一个金币。一开始,你需要选择树中任意一个节点出发。

Java 21 新特性:Record Patterns

RecordPatterns第一次发布预览是在JDK19、随后又在JDK20中进行了完善。现在,Java21开始正式推出该特性优化。下面我们通过一个例子来理解这个新特性。recordPoint(intx,inty){}staticvoidprintSum(Objectobj){if(objinstanceofPoint

1. 两数之和

目录给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例1:输入:nums=[2,7,11,15],target=9输出:[0,1]

【python零基础入门学习】python进阶篇之时间表示方法和异常处理以及linux系统的os模块执行shell命令以及记账程序编写教学(一)

本站以分享各种运维经验和运维所需要的技能为主《python零基础入门》:python零基础入门学习《python运维脚本》:python运维脚本实践《shell》:shell学习《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战《k8》暂未更新《docker学习》暂未更新《ceph学习

从统计语言模型到预训练语言模型---神经网络语言模型

随着神经网络的发展,神经语言模型(NeuralNetworkLanguageModels,NNLM)展现出了比统计语言模型更强的学习能力,克服了N-gram语言模型的维度灾难,并且大大提升了传统语言模型的性能。神经网络先进的结构使其能有效的建模长距离上下文依赖,以词向量(WordEmbedding)为代表的分布式表示的

Windows 下 MySQL 8.1 图形化界面安装、配置详解

首先我们下载安装包官方下载链接:MySQL::BeginYourDownload网盘链接:https://pan.baidu.com/s/1FOew6-93XpknB-bYDhDYPw提取码:brys外网下载慢的同学可以使用上述网盘链接下载完成后我们双击安装包即可进入安装界面点击next勾选同意协议,点击next这里选

Vulnhub系列靶机-Hackadmeic.RTB1

文章目录Vulnhub系列靶机-Hackadmeic.RTB11.信息收集1.1主机扫描1.2端口扫描1.3目录爆破2.漏洞探测3.漏洞利用3.1反弹Shell4.内核提权Vulnhub系列靶机-Hackadmeic.RTB11.信息收集1.1主机扫描arp-scan-l1.2端口扫描nmap-A-p-192.168.

shell练习(grep,sed,awk,距离生日天数的计算,累加求和,文件操作和文本操作)

最近在学习shell脚本编写,把几个练习记录一下。包括grep,sed,awk,距离生日天数的计算,累加求和,文件操作和文本操作。grep相关练习找到/huiluczp下含有星号的文件与内容,主要是利用find来找到所有待查的文件作为参数给grep。echo'找到/huiluczp下含有星号的文件与内容'grep'\*

网络安全(黑客)自学

目录:一、什么是网络安全二、怎样规划网络安全三、网络安全的知识多而杂,怎么科学合理安排?1、基础阶段2、渗透阶段3、安全管理(提升)这一阶段主要针对已经从事网络安全相关工作需要提升进阶成管理层的岗位。如果你只学习参加工程师方面的岗位,这一阶段可学可不学。4、提升阶段(提升)1、Web安全相关概念(2周)2、熟悉渗透相关

vue3+element-plus权限控制实现(el-tree父子级不关联情况处理)

文章目录前言一、遇到的交互场景el-tree中check-strictly属性二、处理父级的半选中以及选中交互el-treecheck,check-change事件编辑进来,父级的半选状态处理总结前言在开发后台管理系统的时候,用户的权限控制是一个常见的需求。这里需要探讨下按钮的级别的权限控制,以及实现中使用elemen

【深度学习】树莓派Zero w深度学习模型Python推理

在机器学习开发过程中,当模型训练好后,接下来就要进行模型推理了,根据部署环境可分为三类场景:边缘计算:一般指手机,嵌入式设备,直接在数据生成的设备上进行推理,因为能避免将采集到的数据上传到云端,所以实时性非常好。端计算:介于云和边缘设备之间的计算平台,个人PC可以归为这一类。云计算:指云计算平台,具有强大的计算和存储能

热文推荐