云原生向量计算引擎 PieCloudVector:为大模型提供独特记忆
拓数派大模型数据计算系统(PieDataComputingSystem,缩写:πDataCS)在10月24日程序员节「大模型数据计算系统」2023拓数派年度技术论坛正式发布。πDataCS 以云原生技术重构数据存储和计算,「一份存储,多引擎数据计算」,让 AI 模型更大更快,全面升级大数据系统至大模型时代。除云原生虚拟数仓 PieCloudDB,πDataCS 支持的第二款计算引擎:云原生向量计算引擎 PieCloudVector 也正式发布。PieCloudVector 支持海量向量数据存储、向量数据高效查询,助力多模态大模型 AI 应用。
AI 将引领下一波全球 GDP 的增长。根据麦肯锡2023年6月报告,生成式 AI(基于大模型)每年会为全球 GDP 贡献约2.6至4.4万亿美元,相当于英国2021年 GDP 总值(3.1万亿美元)。高盛也在其2023年4月报告中指出,生成式 AI 可以为全球 GDP 贡献7%的增长。大模型的迅速崛起让生成式 AI 基于大模型的应用也在不断创新,而应用对大规模向量数据的处理、相似性搜索等需求的增加,也促进了向量数据库的进一步发展。
拓数派自研的向量云原生计算引擎 PieCloudVector,作为 πDataCS 第二款计算引擎,是大模型时代的分析型数据库升维,目标是助力多模态大模型 AI 应用,进一步实现海量向量数据存储与高效查询。 PieCloudVector 支持和配合大模型的 Embeddings,帮助基础模型在场景 AI 的快速适配和二次开发。
1 大模型与向量
随着数据的爆炸式增长和计算能力的提升,大模型成为了处理复杂问题和分析海量数据的重要工具。大模型指的是拥有庞大参数规模、高复杂度和强大学习能力的机器学习模型。 这些模型通常由数百万甚至数十亿个参数组成,通过对大规模数据进行训练来获取知识和推理能力。大模型的出现使得在各种领域中的任务,如自然语言处理、图像识别、语音识别和推荐系统等取得了显著的突破。
特征的向量化表示
在数学和计算机科学中,向量是具有大小和方向的量。向量用一组浮点数表示一组“特征”,这个特征是从真实物体(猫、花等)的二进制表示(文本、图片、音频、视频等)中提取出来的(如上图所示),一般由大模型提取。通过将真实物体转化为向量表示,可以在向量空间中进行计算和比较,例如计算相似度、聚类分析、分类任务等。向量表示也为构建推荐系统、情感分析、信息检索等任务提供了基础。
2 什么是向量数据库
向量数据库是一种专门用于存储和管理向量数据的数据库系统,可以对向量提供高效的存储、索引和查询功能。
计算向量的余弦相似度
在向量搜索中,可以使用不同的距离度量(如欧式距离、余弦相似度、曼哈顿距离等)来计算两个向量之间的距离。距离越近表示这两个向量越相似。如下图,“派派”与“树獭”的距离度量则可通过余弦相似度来计算,来判断其相似程度。
传统数据库更擅长精确匹配,在浮点数的存储和处理能力都较为欠缺,无法高效地处理向量数据。为了能够高效存储和查询向量数据,向量数据库应运而生。
向量数据库能够满足存储和处理向量数据的特定需求,能够高效的将存储向量和原始实体(文字/图像/语音),并将它们关联起来。从而得以提供高效的相似度搜索、大规模数据管理、复杂向量计算和实时推荐等功能,帮助用户更好地利用和分析向量数据,助力大模型应用。
拓数派认为,一款优秀的向量数据库除了应当具备高效的向量存储和相似性搜索功能,还需满足事务的 ACID 保证和用户权限控制, 在确保对向量数据的插入、更新和删除操作能够正确执行,保证并发访问时数据的一致性的同时,为用户提供稳定、可靠且安全的服务,适用于各种数据管理和应用场景。这也是 PieCloudVector 的设计思路。
3 云原生向量计算引擎 PieCloudVector
拓数派团队在对比了 pgvector,pgembedding 等多种开源实现和性能后,并没有选择这类开源实现方式,而是完全独立自研了 PieCloudVector 以使其满足用户的使用场景。PieCloudVector 具备高效存储和检索向量数据、相似性搜索、向量索引、向量聚类和分类、高性能并行计算、强大可扩展性和容错性等特性。
3.1 PieCloudVector 架构
在架构的设计上,拓数派团队利用其在打造 πDataCS 的第一款计算引擎云原生虚拟数仓 PieCloudDB 时,在 eMPP(elastic MPP)与分布式架构领域积累的经验与优势,打造了向量计算引擎 PieCloudVector 的 eMPP 分布式架构。如下图所示,PieCloudVector 每个 Executor 对应一个 PieCloudVector 实例,从而实现高性能、可伸缩性和可靠性的向量存储和相似性搜索服务。而被转化的向量表示将被存储在 πDataCS 统一的存储引擎「简墨」中。
PieCloudVector 的 eMPP 分布式架构
用户只需一个客户端即可使用任何语言进行相似搜索。有了 PieCloudVector 的帮助,用户不仅可以存储、管理原始数据所对应的向量,也可调用 PieCloudVector 相关工具进行模糊搜索,与全局搜索相比牺牲部分精度实现毫秒级搜索,进一步提升查询效率。
3.2 PieCloudVector 功能
PieCloudVector 可以提供精确搜索和模糊搜索两种搜索模式。 目前,PieCloudVector 为用户提供以下功能:
- 支持近似向量搜索 KNN-ANN
- 支持主流的 ANN 算法,如 IVFFlat 和 HNSW 等
- 支持向量压缩(PQ)
- 并行+分布式
- SIMD/GPU 加速
- 支持 Langchain 框架
接下来,我们将对其中前两个功能进行详细介绍:
3.2.1 近似搜索 KNN-ANN
K-Nearest Neighbor(K 最近邻,KNN)是向量搜索的基本问题之一。该问题在已有的 N 个向量中找出与给定向量距离最近的 K 个向量。通过 K 最近邻算法,可以实现像相似图片检索、相关新闻推荐、用户画像匹配等应用。它允许根据向量之间的距离或相似度快速找到与给定向量最相似的向量,从而提供了高效的相似性搜索和推荐服务。
但随着数据量的逐渐增大,精确查询需要将输入的向量与每一条记录进行比对,计算成本将成倍增长。为了解决这个问题,PieCloudDB 建立向量索引来提前获取数据间的大致关系,加速查询效率。PieCloudVector 引入Approximate Nearest Neighbor(近似最近邻,ANN)算法来建立向量索引。通过 ANN,PieCloudVector 能够节省全局搜索的时间,牺牲部分精度以加速查询速度,进一步提升查询效率,实现毫秒级查询速度,做到模糊查询。
PieCloudVector 在建立向量索引时提供多种 ANN 算法, 包括最为流行的 IVFFlat(Inverted File with Flat)算法 HNSW(Hierarchical Navigable Small World)算法,用户可根据数据的特性来选择:
- IVFFlat 算法(左图): 基于倒排文件的向量索引算法。它将向量数据提前进行分组,并为每个组建立一个倒排索引。在模糊查询时,IVFFlat 算法会检索与目标向量相近的组中包含的数据,从而加快搜索速度并降低内存消耗。然而,由于使用了分组,IVFFlat 算法的精确度一般相对较低。
- HNSW 算法(右图): 基于层级导航的向量索引算法。它通过在数据之间建立“关系网”来构建索引结构。这个过程需要耗费一定的时间和内存资源。但是,HNSW 算法的精确度通常优于 IVFFlat 算法。它能够更好地捕捉数据之间的局部结构和相似性,并支持高效的近似搜索。
3.2.2 向量压缩
向量相似性搜索在处理大规模数据时需要大量的内存来支撑。例如,对于包含1百万个稠密向量的索引来说,通常需要几 GB 的内存来存储。高维数据使内存使用问题更加严重,因为随着维度的增加,向量表示空间变得极其庞大,需要更多的内存来存储。
为了解决这个内存压力问题,向量压缩(Product Quantization,PQ)是一种常见方法。 它能够将高维向量压缩,从而显著减少内存的占用。通过将每个向量分割成若干子空间,并对每个子空间进行量化,PQ 可以将原始的高维向量转换为多个低维码本(codebook),从而降低内存需求。
使用 PQ 后,存储索引所需的内存可以减少高达97%, 使 PieCloudVector 在处理大规模数据集时更有效地管理内存,并加快相似性搜索的速度。此外,PQ 还能提升最近邻搜索的速度,通常能够使搜索速度提高 5.5倍。另外,将PQ 与倒排文件(Inverted File,IVF)结合形成的 IVF+PQ 复合索引,在不影响搜索准确性的情况下,进一步提升搜索速度16.5倍。与未使用量化索引相比,总体搜索速度可提高92倍。
向量压缩(Product Quantization)
4 PieCloudVector 典型应用场景
根据向量的实际使用流程,PieCloudVector 的应用场景大致可以分为四层,分别对应实际使用向量的过程中不同的场景。
4.1 准备数据与切分(图像、文本、音频等)
在这一层,涉及到数据的准备和切分。例如,在图像、文本、音频等形式。需要对原始数据进行预处理、清洗和特征提取,以得到适合后续处理的向量表示。这一步骤通常是为了将原始数据转化为可供创建嵌入(embeddings)的输入。
4.2 创建 Embeddings
在这一层,将通过适当的算法或模型将数据转化为向量表示。这向量表示反映了数据的特征和语义信息。例如,可以使用卷积神经网络(CNN)、循环神经网络(RNN)、Transformer 等模型来生成图像、文本或音频的嵌入表示。
4.3 存储向量
在这一层,将创建的向量表示存储起来,以便后续的向量搜索。PieCloudVector 支持分布式向量存储,可弹性扩展存储资源,并通过向量压缩减少内存的占用。
4.4 向量搜索(Vector Search)
在这一层,基于已存储的向量进行相似性搜索。PieCloudVector 提供高效的向量搜索功能,通过 KNN、ANN 等向量搜索算法,支持 L2 distance, Inner Product,以及 Cosine Distance 向量距离度量方式,能够快速找到与给定查询向量最相似的向量。这种向量搜索功能广泛应用于相似图片检索、相关新闻推荐、用户画像匹配等场景。
下图是 PieCloudVector 在一款知识库系统的应用流程架构,共包括从文本切分到应用程序返回答案给用户六个步骤。该知识库系统利用 PieCloudVector 来支持知识库系统中的语义搜索和答案检索功能。它将文本转化为向量表示,并通过向量相似性搜索来找到相关的答案。这种架构能够高效地处理大规模的文本数据集,并提供准确的答案回复给用户。
知识库系统的应用流程架构
在未来,PieCloudVector 将继续不断迭代和发展,为大模型提供独特的记忆和支持。随着生成式 AI 和大模型的不断演进,PieCloudVector 将更加深入地融合向量数据库的优势,并与其他技术和算法进行紧密集成。
PieCloudVector 将持续改进其存储、索引和查询能力,以应对越来越复杂和庞大的向量数据。 它将探索新的量化算法、近似搜索方法和并行计算策略,以提高查询效率和准确性。
同时,PieCloudVector 将致力于与不同领域的应用场景相结合,并将逐步扩展支持多模态数据的处理和分析能力,提供更全面、灵活的解决方案。
参考资料:
- 大模型数据计算系统——理论
- 大模型数据计算系统——实现
- The Economic Potential of Generative AI: The Next Productivity Frontier
- Generative AI Cloud Raise Global GDP by 7%
相关文章:
云原生向量计算引擎 PieCloudVector:为大模型提供独特记忆
拓数派大模型数据计算系统(PieDataComputingSystem,缩写:πDataCS)在10月24日程序员节「大模型数据计算系统」2023拓数派年度技术论坛正式发布。πDataCS 以云原生技术重构数据存储和计算,「一份存储,多引擎…...
大创项目推荐 深度学习 opencv python 实现中国交通标志识别
文章目录 0 前言1 yolov5实现中国交通标志检测2.算法原理2.1 算法简介2.2网络架构2.3 关键代码 3 数据集处理3.1 VOC格式介绍3.2 将中国交通标志检测数据集CCTSDB数据转换成VOC数据格式3.3 手动标注数据集 4 模型训练5 实现效果5.1 视频效果 6 最后 0 前言 🔥 优质…...
深度学习实战67-基于Stable-diffusion的图像生成应用模型的搭建,在Kaggle平台的搭建部署,解决本地没有算力资源问题
大家好,我是微学AI,今天给大家介绍一下深度学习实战67-基于Stable-diffusion的图像生成应用模型的搭建,在Kaggle平台的搭建部署,解决本地没有算力资源问题。稳定扩散模型(Stable Diffusion Model)是一种用于图像增强和去噪的计算机视觉算法。它通过对输入图像进行扩散过程…...
云原生之深入解析Kubernetes本地持久化存储方案OpenEBS LocalPV的最佳实践
一、K8s 本地存储 K8s 支持多达 20 种类型的持久化存储,如常见的 CephFS 、Glusterfs 等,不过这些大都是分布式存储,随着社区的发展,越来越多的用户期望将 K8s 集群中工作节点上挂载的数据盘利用起来,于是就有了 loca…...
设计模式-策略(Strategy)模式
又被称为政策(方针)模式策略模式(Strategy Design Pattern):封装可以互换的行为,并使用委托来决定要使用哪一个策略模式是一种行为设计模式,它能让你定义一系列算法,并将每种算法分别放入独立的类中&#x…...
Star 4.1k!Gitee GVP开源项目!新一代桌面应用开发框架 ElectronEgg!
前言 随着现代技术的快速升级迭代及发展,桌面应用开发已经变得越来越普及。然而对于非专业桌面应用开发工程师在面对这项任务时,可能会感到无从下手,甚至觉得这是一项困难的挑战。 本篇文章将分享一种新型桌面应用开发框架 ElectronEgg&…...
node.js学习(简单聊天室)
在掘金查看该文章 1. TCP服务搭建 1.1 socket 先来粗略了解下socket 套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中&am…...
cfa一级考生复习经验分享系列(四)
备考CFA一级满打满算用了一个多月,每天八个小时以上。可能如果仅以通过为目标的话完全不用这样,看过太多类似于只看了一周就通过了考试又或是放弃了好几门飘过了考试的情况,我觉得这是不正确的考试状态,完全不必惊叹,踏…...
PPT插件-好用的插件-放映笔、绘图板-大珩助手
放映笔 幻灯片放映时,工具在幻灯片的左下方,本工具在幻灯片的右侧,可以移动,可以方便在右侧讲课时候使用 绘图板 可在绘图板上写签名、绘制图画、写字等等,点画笔切换橡皮擦,点插入绘图,将背景…...
弧形导轨的安装注意事项
随着弧形导轨的应用日渐普遍,在日常使用中总会遇到很多各种各样的问题,原因很多是安装不正确或者使用不恰当。不合理的使用不但不能充分发挥其价值还会导致使用寿命大打折扣,使企业造成不必要的损失,因此大伙有必要了解一些安装的…...
Elasticsearch优化-04
Elasticsearch优化 1、优化-硬件选择 Elasticsearch 的基础是 Lucene,所有的索引和文档数据是存储在本地的磁盘中,具体的路径可在 ES 的配置文件…/config/elasticsearch.yml中配置,如下: # #Path to directory where to store …...
Springboot+vue的公寓报修管理系统(有报告)。Javaee项目,springboot vue前后端分离项目
演示视频: Springbootvue的公寓报修管理系统(有报告)。Javaee项目,springboot vue前后端分离项目 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的公寓报修管理系统,采用M(model&…...
uniapp腾讯地图路线规划
在uniapp中使用腾讯地图进行路线规划需要通过腾讯地图API进行操作。以下是基本的步骤: 在腾讯地图开放平台上注册账号,并创建应用获取API key。 在uniapp的项目中引入腾讯地图API的JS文件,例如在index.html中添加以下代码: <…...
Python 全栈体系【四阶】(五)
第四章 机器学习 三、数据预处理 1. 数据预处理的目的 去除无效数据、不规范数据、错误数据 补齐缺失值 对数据范围、量纲、格式、类型进行统一化处理,更容易进行后续计算 2. 预处理方法 2.1 标准化(均值移除) 让样本矩阵中的每一列的…...
原点处可微问题
文章目录 原点可微问题例例 原点可微问题 lim x → 0 , y → 0 f ( x , y ) − f ( 0 , 0 ) x 2 y 2 \lim\limits_{x\to{0},y\to{0}} \frac{f(x,y)-f(0,0)}{\sqrt{x^2y^2}} x→0,y→0limx2y2 f(x,y)−f(0,0) 0 0 0(1)是函数 f ( x , y ) f(x,y) f(x,y)在 ( 0 , 0 ) (…...
Flink+Kafka消费
引入jar <dependency><groupId>org.apache.flink</groupId><artifactId>flink-java</artifactId><version>1.8.0</version> </dependency> <dependency><groupId>org.apache.flink</groupId><artifactI…...
Seconds_Behind_Master越来越大,主从同步延迟
问题现象 发现从库mysql_slave的参数Seconds_Behind_Master越来越大。已排除主从服务器时间不一致;那么主要就判断两点:是io thread慢还是 sql thread慢?先观察show slave status\G 。 判断3个参数(参数后面的值是默认空闲时候的…...
除法求值[中等]
一、题目 给你一个变量对数组equations和一个实数值数组values作为已知条件,其中equations[i] [Ai, Bi]和values[i]共同表示等式Ai / Bi values[i]。每个Ai或Bi是一个表示单个变量的字符串。另有一些以数组queries表示的问题,其中queries[j] [Cj, Dj…...
新时代商业市场:AR技术的挑战与机遇并存
随着科技的不断发展,增强现实(AR)技术逐渐成为当今社会的一个重要组成部分。AR技术能够将虚拟世界与现实世界相结合,为人们提供更加丰富、多样化的体验。在新时代的社会商业市场中,AR技术也正逐渐被应用于各种商业活动…...
RHEL8中ansible的使用
编写ansible.cfg和清单文件ansible的基本用法 本章实验三台RHEL8系统(rhel801,rhel802,rhel803),其中rhel801是ansible主机 这里要确保ansible主机能够解析所有被管理的机器,这里通过配置/etc/hosts来实现…...
【1.6计算机组成与体系结构】存储系统
目录 1.层次化存储结构2.Cache2.1 Cache的介绍2.2 局部性原理2.3 Cache应用 1.层次化存储结构 由 ⬆ CPU:寄存器。 快 ⬆ Cache:按内容存取(相联存储器)。 到 ⬆内存(主存):DRAM。 慢 ⬆ 外存(辅存&#…...
TCP/UDP 协议
目录 一.TCP协议 1.介绍 2.报文格式 编辑 确认号 控制位 窗口大小 3.TCP特性 二.TCP协议的三次握手 1.tcp 三次握手的过程 三.四次挥手 2.有限状态机 四.tcp协议和udp协议的区别 五.udp协议 UDP特性 六.telnet协议 一.TCP协议 1.介绍 TCP(Transm…...
如何正确理解和使用 Golang 中 nil ?
目录 指针中的 nil 切片中的 nil map 中的 nil 通道中的 nil 函数中的 nil 接口中的 nil 避免 nil 相关问题的最佳实践 小结 在 Golang 中,nil 是一个预定义的标识符,在不同的上下文环境中有不同的含义,但通常表示“无”、“空”或“…...
IDEA新建jdk8 spring boot项目
今天新建spring boot项目发现JDK版本最低可选17。 但是目前用的最多的还是JDK8啊。 解决办法 Server URL中设置: https://start.aliyun.com/设置完成后,又可以愉快的用jdk8创建项目了。 参考 https://blog.csdn.net/imbzz/article/details/13469117…...
Qt/C++音视频开发59-使用mdk-sdk组件/原qtav作者力作/性能凶残/超级跨平台
一、前言 最近一个月一直在研究mdk-sdk音视频组件,这个组件是原qtav作者的最新力作,提供了各种各样的示例demo,不仅限于支持C,其他各种比如java/flutter/web/android等全部支持,性能上也是杠杠的,目前大概…...
智安网络|企业网络安全工具对比:云桌面与堡垒机,哪个更适合您的需求
随着云计算技术的快速发展,越来越多的企业开始采用云计算解决方案来提高效率和灵活性。在云计算环境下,云桌面和堡垒机被广泛应用于企业网络安全和办公环境中。尽管它们都有助于提升企业的安全和效率,但云桌面和堡垒机在功能和应用方面存在着…...
Git忽略已经提交的文件
原理类似于 Android修改submodule的lib包名...
MVVM和MVC以及MVP的原理以及它们的区别
MVVM、MVC 和 MVP 都是前端架构模式,它们各自有不同的原理和特点。 MVC(Model-View-Controller) 原理:MVC 将应用程序分为三个部分:模型(Model)、视图(View)和控制器&a…...
WeChatMsg: 导出微信聊天记录 | 开源日报 No.108
Mozilla-Ocho/llamafile Stars: 3.5k License: NOASSERTION llamafile 是一个开源项目,旨在通过将 lama.cpp 与 Cosmopolitan Libc 结合成一个框架,将 LLM (Large Language Models) 的复杂性折叠到单个文件可执行程序中,并使其能够在大多数…...
Python学习之复习MySQL-Day3(DQL)
目录 文章声明⭐⭐⭐让我们开始今天的学习吧!DQL简介基本查询查询多个/全部字段设置别名去除重复记录 条件查询条件查询介绍实例演示 聚合函数什么是聚合函数?常见的聚合函数实例演示 分组查询分组查询语法where 和 having 的区别实例演示 排序查询语法实…...
建公司网站哪里好/网站seo主要是做什么的
小续这也是我11年看加密解密整理的一些笔记,因为后面有事,所以这个笔记并不完整,不过也涉及到很多知识了,写给爱好加密解密的朋友多字节数据是按怎样的顺序存放的呢?实际情况和CPU有关,微处理中的存放顺序有…...
php怎么给网站做spm/企业查询网站
今天凌晨,苹果官方推送了iOS13.6 正式版。很多不喜欢自动更新的小伙伴,之前都安装了【屏蔽更新】的描述文件。尤其是小内存iPhone 用户,因为一个系统更新的安装包,有的要好几个G。小内存真心更不起。这次更新后,系统自…...
pycharm网站开发实例/百度扫一扫识别图片
学习 Python 之 Pygame 开发魂斗罗(一)Pygame回忆Pygame1. 使用pygame创建窗口2. 设置窗口背景颜色3. 获取窗口中的事件4. 在窗口中展示图片(1). pygame中的直角坐标系(2). 展示图片(3). 给部分区域设置颜色5. 在窗口中显示文字6. 播放音乐7. 图片翻转与…...
提交网站/近期热点新闻事件
利用java打开一张图片,并提取其边缘。功能有打开文件,以及提取边缘。算法原理由于边缘提取的算法有很多种,而提取的精度在相同阈值的情况下也会有不同的结果。这次我的边缘提取使用索贝尔算子(Sobel operator)。该算子会把图像每一点的灰度矢…...
wordpress打开html/最新全国疫情消息
它取决于您定义为必需的:没有任何头字段必须与每个响应一起发送,无论什么情况,但有真正应该发送的头字段。唯一接近的头字段是Date,但即使它有它的情况下它不是必需的。在RFC 2119的说法中,术语MUST意味着某些是规范的…...
企业产品推广网站/网络营销手段
一个人成为穷人或者富人,到底是天注定还是靠打拼? 天赋与才能,对赚钱有多大作用呢? 什么事情靠勤奋努力有用? 什么事情靠勤奋努力就是瞎忙? 为什么投资更靠运气? 为什么选择比努力更重要&#x…...