向量数据库,能让AI再次起飞吗?

2023-09-09 11:08:09

9月7-8日,深圳国际会展中心18号馆

来了,来了,腾讯面向产业互联网领域规格最高、规模最大、覆盖最广的年度科技盛会 -——- 腾讯全球数字生态大会

9 7 日,我们将聚焦产业未来发展新趋势,针对云计算、大数据、人工智能、安全、SaaS 等核心数字化工具做关键进展发布,并联合生态伙伴推出最新行业场景解决方案。同时,携手全球权威商业杂志榜单,与中国最佳 CEO 探讨数实融合发展趋势,与中国 500 强企业解析产业焕新最佳实践。畅谈国产化、企业出海、行业大模型等应用实例,探讨如何构筑企业安全免疫力,以及如何通过 SaaS 产品组织协同缔造业务新增长等焦点议题。

由于本次大会的信息量太大,西红柿将聚焦向量数据库,为大家带来详细的介绍和评测。

一、什么是向量数据库?

向量数据库是一种专门用于存储和处理向量数据的数据库系统,它通过优化存储结构和查询算法,提供了高效的向量数据存储、相似度搜索、聚类和分类等功能。在图像、音频、文本等领域的应用中,向量数据库发挥着重要的作用。

向量数据库通常提供了丰富的查询接口和功能,如范围查询、k 近邻查询、相似性匹配等。同时,向量数据库还支持高并发和分布式部署,以应对大规模数据和高并发访问的需求。

向量数据库的工作流程包括以下步骤:

  • 1、向量数据的存储:向量数据通常是高维的数值型数据,如图像特征向量、文本词向量等;向量数据库使用基于向量的存储结构,以便快速查询和处理;
  • 2、向量索引:向量数据库使用 PQ、LSH 或 HNSW 等算法为向量编制索引,并将向量映射到数据结构,以便更快地进行搜索;
  • 3、向量查询:向量数据库将查询向量与数据库中的向量进行比较,从而找到最近邻的向量;
  • 4、查询结果的返回:向量数据库返回查询结果,通常包括与给定向量最相似的向量列表、向量之间的相似度得分等信息;该环节可以使用不同的相似性度量对最近邻重新排序。

二、腾讯云向量数据库 - 测试准备

准备工作概述:一台向量数据库 + 一个执行测试代码的客户端 + ann-benchamrk 官方的测试数据集和方法。

2.1 环境准备

  • 1、登录腾讯云:https://console.cloud.tencent.com
  • 2、创建向量数据库:从腾讯云控制台 一键创建 向量数据库实例。

ps.腾讯云向量数据库面向用户提供丰富的实例规格,可按需挑选。

  1. 操作系统选择: 版本建议使用‘TencentOS Server 3.1 (TK4)’, 此版本实测过程中安装 python3 相关的依赖 较顺利;
  2. 磁盘大小选择: 建议预留足够大的磁盘空间,200G 应该能满足实际测试需要,也可参考实际数据集的 大小创建;
  3. 内存大小选择: 因实际测试过程中,每一个进程都需要将被测试数据集全集加载进内存,可参考数据 集大小的 130% * 测试工具进程数 选择机器内存;

稍等几分钟,就建好啦,效果如下:

2.2 数据准备

2.1 上传测试工具及数据集到测试客户端

测试数据来源: ann-benchamrk 官方数据集测试工具可自动从外网官方站点下载。 官网地址:https://ann-benchmarks.com/

2.2 安装测试工具依赖

软件依赖: python 版本大于 3.6.8, 使用建议的操作系统版本上的 python3 即可

2.2.1 安装操作系统依赖包

yum install python3-pillow-devel.x86_64

2.2.2 解决测试工具并安装 python 运行依赖

cd ann-benchmarks
pip3 install -r requirements.txt

2.2.3 需要的依赖包:

ansicolors==1.1.8
docker
h5py
matplotlib
numpy
pyyaml
psutil
scikit-learn
jinja2
pytest
dataclasses-json==0.5.7
dacite
urllib3
enum34
typing
tqdm
threadpool

三、性能测试

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

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

执行测试后,看看数据库的资源表现吧。

  • CPU 使用率接近 100%
  • 内存和磁盘使用率较低

请求方面:

  • 请求量 QPS(Count/s) 最大值: 1092.92 最小值: 0.00 平均值: 63.90
  • 请求成功率(%) 最大值: 100.00 最小值: 0.00 平均值: 6.39
  • 请求超时率(%) 最大值: 0.00 最小值: 0.00 平均值: 0.00
  • 请求异常率(%) 最大值: 0.00 最小值: 0.00 平均值: 0.00
  • 失败请求量 QPS(Count/s) 最大值: 0.00 最小值: 0.00 平均值: 0.00
  • 请求平均耗时(ms) 最大值: 0.70 最小值: 0.00 平均值: 0.04

网络方面:在西红柿下载测试结果时,造成了一个峰值的。

向量数据库的单核性能表现令人赞叹。它展现出出色的处理能力和高效的计算速度。无论是在数据存储、索引构建还是查询处理方面,向量数据库都能够快速进行并行计算,并在单个核心上实现卓越的性能。

四、小结

腾讯云向量数据库专注于处理大规模的向量数据,并采用了高效的索引和查询算法,能够快速地进行相似度搜索和高维向量计算。使用户能够轻松地进行复杂的数据分析和机器学习任务。

腾讯云向量数据库还具备出色的可扩展性和稳定性。它支持自动水平扩展,能够根据数据规模和用户需求进行弹性扩容,保证了数据库的高可用性和性能稳定性。同时,腾讯云向量数据库提供了友好的管理界面和灵活的API接口,使得用户可以方便地进行数据操作和管理。

除此之外,腾讯云向量数据库还注重数据安全和隐私保护。它采用了多层次的安全措施,包括数据加密、访问控制和防火墙等,保证了用户数据的安全性和隐私保护。

总之,腾讯云向量数据库以其高性能、可扩展性和数据安全性而备受推崇,为用户提供了强大的数据处理和分析能力,是一项令人印象深刻的云端数据库解决方案。

更多精彩,请关注腾讯全球数字生态大会吧。

更多推荐

kafka 分布式的情况下,如何保证消息的顺序消费?

目录一、什么是分布式二、kafka介绍三、消息的顺序消费四、如何保证消息的顺序消费一、什么是分布式分布式是指将计算任务分散到多个计算节点上进行并行处理的一种计算模型。在分布式系统中,多台计算机通过网络互联,共同协作完成任务。每个计算节点都可以独立运行,并且可以相互通和协调。这种分布式的架构可以提高计算能力和可靠性,充分

高云FPGA系列教程(8):ARM串口数据接收(中断和轮询方式)

文章目录@[toc]1.GW1NSR-4C串口外设简介2.FPGA配置3.常用函数4.轮询方式接收数据5.中断方式接收数据本文是高云FPGA系列教程的第8篇文章。本篇文章介绍片上ARMCortex-M3硬核处理器串口外设的使用,演示轮询方式和中断方式接收串口数据,并进行回环测试,基于TangNano4K开发板。参考文档

享元模式模式简介

概念:享元模式(Flyweightpattern)是一种结构型设计模式,旨在通过共享对象来减少内存使用和提高性能。它通过将对象的状态分为可共享的内部状态和不可共享的外部状态,来实现对象的共享。内部状态可以被多个对象共享,而外部状态则取决于具体的对象。通过共享内部状态,可以减少系统中相似对象的数量,从而节省内存空间。特点

【论文阅读 09】融合门控自注意力机制的生成对抗网络视频异常检测

2021年中国图象图形学报摘要背景:视频异常行为检测是智能监控技术的研究重点,广泛应用于社会安防领域。当前的挑战之一是如何提高异常检测的准确性,这需要有效地建模视频数据的空间维度和时间维度信息。生成对抗网络(GANs)因其结构优势而被广泛应用于视频异常行为检测。方法:本文提出了一种改进的生成对抗网络方法,用于视频异常行

OpenCV实现的F矩阵+RANSAC原理与实践

1RANSAC筛选1.1大致原理Randomsampleconsensus(RANSAC),即随机抽样一致性,其是一种用于估计模型参数的迭代方法,特别适用于处理包含离群点(outliers)的数据集RANSAC的主要思想是随机采样数据点,用这些采样点拟合一个模型,然后计算其他数据点到这个模型的拟合误差;根据误差和阈值,

什么是异步编程?解释异步编程的优势和实现方式

1、什么是异步编程?解释异步编程的优势和实现方式。异步编程是一种编程模型,它将程序中的计算任务分成独立的阶段,并在每个阶段完成后立即返回结果。异步编程模型通常用于处理长时间运行的任务,例如网络请求、IO操作等,以避免阻塞主线程,提高程序的响应性能。异步编程的优势:减少阻塞:异步编程可以避免主线程被长时间运行的任务阻塞,

Go语言支持闭包吗?说说你对它的理解

1.引言闭包是编程语言中的一个重要概念,它允许函数不仅仅是独立的代码块,还可以携带数据和状态。闭包的特点是可以捕获并保持对外部变量的引用,使函数值具有状态和行为,可以在多次调用之间保留状态。本文将深入探讨闭包的定义、用途和注意事项,以及如何正确使用闭包。2.什么是闭包闭包是一个函数值,它引用了在其外部定义的一个或多个变

[2023.09.20]:Yew的前端开发经历小结

今天基本上完成了一个操作闭环,即能够保存,拉取和删除数据。截个图这个过程的前端和后端都是用Rust写的,前端使用的是Yew。Yew是一种用于构建现代Web应用程序的Rust框架,其计目标是提供一种安全、高效、易用的方式来构建Web应用程序。Yew基于WebAssembly(Wasm)技术,将Rust代码编译为能在浏览器

Redis 哈希表操作实战(全)

目录HSET添加HSETNX添加HMSET批量添加HGET获取元素HGETALL获取所有HMGET批量查询HEXISTS判断是否存在HINCRBY增加整数HINCRBYFLOAT添加浮点数HLEN查Field数量HKEYS查所有FieldHVALS查所有Field值HSCAN迭代HDEL删除FieldHSET添加HSE

2023复旦大学计算机科学技术(网络空间安全)保研记录

BG:中九rank前5%、科研经历少、无竞赛复旦大学计算机科学与技术--网络空间安全方向,参营4天(6.26-6.29),管午饭,住宿自理6.26--报道+听会,6.27--听会+实验室参观给了一些专业方向和老师27号晚上会有一个小时的博弈时间,你可以看到每个方向有多少个人报名了,可以实时调整,紧张刺激,不过今年网安人

进度条小程序

0.前提知识缓冲区:在C/C++语言中,会针对标准输出,给用户提供默认的缓冲区,并且根据一定的机制进行刷新(或者用户自己刷新,比如:在输出缓冲区中使用fflush(stdout)就可以直接刷新输出缓冲区)。值得注意的是,这个缓冲区是语言给出的,而不是系统给出的。换行和回车:换行和回车是两回事,但是在C语言的换行符\n中

热文推荐