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

前言:

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

请添加图片描述

文章目录

  • 向量数据库发展背景和现状
  • AI加持下,向量数据库是否应该重新定义?
  • 取其精华,优势思考
  • 如何快速申请体验
  • 性能测试实例
    • 前期准备
    • 实例测试
      • 1. 测试 128 维数据在 HNSW 索引下的单核查询性能
      • 2.探索指定召回率时,需要设置的查询 ef 条件
      • 3.Search 检索性能测试
  • 总结

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

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

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

在这里插入图片描述

在此基础上,腾讯云发布一款全托管的自研企业级分布式数据库服务,专用于存储、检索、分析多维向量数据。该数据库支持多种索引类型和相似度计算方法,单索引支持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-KEYDropDb: true # 工具是否在每次插入数据前,先删了已经存在的
DBCreateDb: true # 工具是否需要创建新的数据库ReCreateCollection: false # 是否每次运行前都重建
collectionDropCollectionOnDone: false # 是否在运行结束删除数据,
主要解决多表并发时内存不足场景,默认可使用 falseIndexType: FLAT # 创建 Collection 时的 index 类型, 当前
支持 FLAT, HNSWMetricType: L2 # 创建 Collection 时的 Metric Type,同官
方 API 支持列表ColReplicaNum: 2 # 创建 Collection 时指定多少个副本ColShardNum: 10 # 创建 Collection 时,指定多少个 shardEfConstruction: 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有明显优势。一起快来试试吧!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/128439.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gin路由相关方法

c.Request.URL.Path 拿到请求的路径 package mainimport ( "fmt" "github.com/gin-gonic/gin" "net/http")//路由重定向,请求转发,ANY ,NoRoute,路由组func main() { r : gin.Default() // -------…

面试算法21:删除倒数第k个节点

题目 如果给定一个链表,请问如何删除链表中的倒数第k个节点?假设链表中节点的总数为n,那么1≤k≤n。要求只能遍历链表一次。 例如,输入图4.1(a)中的链表,删除倒数第2个节点之后的链表如图4.1&a…

33 WEB漏洞-逻辑越权之水平垂直越权全解

目录 前言水平,垂直越权,未授权访问Pikachu-本地水平垂直越权演示(漏洞成因)墨者水平-身份认证失效漏洞实战(漏洞成因)原理越权检测-Burpsuite插件Authz安装测试(插件使用)修复防御方案 前言 越权漏洞文章分享:https://www.cnblogs.com/zhen…

医学专题--多组学在药物治疗靶点筛选中的研究思路

研究背景 药物靶点(drug target):是指药物在体内的作用结合位点,包括基因位点、受体、酶、离子通路、核酸等生物大分子,靶向药物从单靶点药物到多靶点药物都在不断进行临床探索。小分子多靶点药物因其多靶向性、高效率…

如何选择UMLChina服务

服务口号:聚焦最后一公里 斐力庇第斯从马拉松跑回雅典报信,虽然已是满身血迹、精疲力尽,但他知道:没有出现在雅典人民面前,前面的路程都是白费。 学到的知识如果不能最终【用】于您自己的项目之中,也同样是…

ARM-流水灯

.text .global _start _start: 1、设置GPIOE寄存器的时钟使能 RCC_MP_AHB$ENSETR[4]->1 0x50000a28LDR R0,0X50000A28 LDR R1,[R0] 从R0起始地址的4字节数据取出放在R1 ORR R1,R1,#(0X3<<4) 第4位设置为1 STR R1,[R0] 写回2、设置PE10、PE8、PF10管脚为输出模式 …

Java反射(一)--- 类的实例化

文章目录 一、整理框架二、Java反射机制提供的功能三、反射相关的主要API四、相关代码&#xff1a;1.Person类2.反射之前&#xff0c;对于Person类的操作3.反射之后&#xff0c;对于Person类的操作 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、整…

ES6——知识点记录

1.字符串支持 1.codePointAt——根据字符串码元的位置得到其码点 2.includes——判断字符串中是否包含指定的子字符串 3.startsWith——判断字符串中是否以指定的字符串开始 4.endsWith——判断字符串中是否以指定的字符串结尾 5.repeat——将字符串重复指定的次数&#xff0c…

95、Spring Data Redis 之使用RedisTemplate 实现自定义查询 及 Spring Data Redis 的样本查询

Spring Data Redis 之使用RedisTemplate 实现自定义查询 Book实体类 原本的接口&#xff0c;再继承我们自定义的接口 自定义查询接口----CustomBookDao 实现类&#xff1a;CustomBookDaoImpl 1、自定义添加hash对象的方法 2、自定义查询价格高于某个点的Book对象 测试&a…

NewStarCTF 2023 WEEK1|PWN ret2text

拖进IDA&#xff0c;查看 int __cdecl main(int argc, const char **argv, const char **envp) {char buf[32]; // [rsp0h] [rbp-20h] BYREFinit();puts("Welcome to NewStar CTF!!");puts("Show me your magic");read(0, buf, 0x100uLL);return 0; } ma…

PyQt5配置踩坑

安装步骤比较简单&#xff0c;这里只说一下我踩的坑&#xff0c;以及希望一些大佬可以给点建议。 一、QtDesigner 这个配置比较简单&#xff0c;直接就能用&#xff0c;我的配置如下图&#xff1a; C:\Users\lenovo\AppData\Roaming\Python\Python311\site-packages\qt5_app…

人脸动作迁移——基于DaGAN深度感知的生成对抗网络操作对口型数字人

前言 口播视频生成旨在合成具有源图像和驱动视频的身份和姿势信息的协同人脸视频。现有方法主要依赖于从输入图像中学到的二维表示&#xff08;如外观和运动&#xff09;&#xff0c;但密集的三维面部几何信息&#xff08;如像素深度&#xff09;对任务至关重要。这有助于生成…