GPT-4o 引领人机交互新风向,向量数据库赛道沸腾了

news2024/9/20 22:57:24
alt

OpenAI 发布 ChatGPT-4o,意味着人机交互进入新的时代。Chat-GPT4o 是一个跨文本、视觉和音频端到端训练的新模型,所有输入和输出都由同一个神经网络处理。这也在告诉所有人,GenAI 连接非结构化数据,非结构化数据之间跨模态的交互正在变得越来越容易。

据 IDC 预测,到 2025 年,全球数据总量中将有超过 80% 的数据是非结构化数据,而向量数据库是处理非结构化数据的重要组件。回顾向量数据库的历史,2019 年,Zilliz 首次推出了 Milvus,提出了向量数据库的概念。2023 大语言模型(LLM)的爆火,将向量数据库正式从幕后被推到了台前,也因此赶上了发展的快速列车。

作为相关技术人员,我从技术发展上能清晰地感觉到向量数据库前进的速度,见证向量数据库如何逐渐从简单的 ANNS(https://zilliz.com.cn/glossary/%E8%BF%91%E4%BC%BC%E6%9C%80%E8%BF%91%E9%82%BB%E6%90%9C%E7%B4%A2%EF%BC%88anns%EF%BC%89) 套壳变得更加多变和复杂。今天,我想从技术的角度探讨一下向量数据库的发展方向。

技术的发展方向一定是跟随了产品的变化趋势,而后者则是由需求来决定。因此,顺着用户需求变化的脉络能帮我们找到技术变化的方向和目的。随着 AI 技术的日趋成熟,向量数据库的使用也逐渐从实验走到生产,从辅助产品走到主力产品,从小规模应用到大面积铺开。这产生大量不同的场景和问题,也同时推动了解决这些问题的相应技术。下面我们从成本和业务需求两个方面来展开讲述。

01.成本

AIGC 时代对于冷热储存的呼唤

成本一直是向量数据库获得更广泛使用的最大阻碍之一,这个成本来自两点:

  • 储存,绝大多数向量数据库为了保证低延迟,需要把数据全量缓存到内存或者本地磁盘。在这个动辄百亿量级的AI 时代,意味着几十上百 TB 的资源消耗。

  • 计算,数据需要划分成许多小片段来满足工程上分布式支持大规模数据集的需求。对于每个分片需要单独检索再做规避,带来了较大的查询计算放大问题。百亿级的数据如果按 10G 分片的话,会有一万个分片,也就意味着计算放大了一万倍。

alt 主流 LLM 的响应时间,图源:https://artificialanalysis.ai/models

而在 AIGC 带来的 RAG 浪潮中,单个 RAG 用户(或者是 ToC 平台的单个 tenant)对于延迟的敏感度都极低。原因是相较于向量数据库几毫秒到几百毫秒的延迟,作为链路核心的大模型的延迟普遍超过秒级。加之云端对象储存的成本远远低于本地磁盘和内存,人们越来越需要一种技术,可以:

  • 从储存上来看,在查询的时候数据放置在最便宜的云端对象作为冷存储,需要的时候加载到节点,转化为热储存提供查询。

  • 从计算上来看,把每个查询需要的数据提前缩小范围,不用扩大到全局数据,保证热储存不会被击穿。

这种技术可以帮助用户在可接受的延迟下极大地缩减成本,也是我们 Zilliz Cloud (https://zilliz.com.cn/cloud)最近正准备推出的方案。

硬件迭代带来的机遇

硬件的是一切的基础,硬件的发展也直接决定了向量数据库技术发展的方向。如何去适配和在不同场景下利用这些硬件就成了一个很重要的发展方向。

  1. 高性价比的 GPU

向量检索是一个计算密集型的应用,这两年使用 GPU 进行计算加速的研究也越来越多。与昂贵的刻板印象相反的是,由于算法层面的逐渐成熟,加之向量检索场景适合内存延迟较低的且价格较为便宜的推理卡,基于 GPU 的向量检索展现出了出色的性价比。

alt CPU: m6id.2xlarge T4: g4dn.2xlarge A10G: g5.2xlarge Top 100 Recall: 98%

Dataset: https://github.com/zilliztech/VectorDBBench

我们使用支持了 GPU 索引的 Milvus 进行测试,在仅仅 2-3 倍的成本下,无论是构建索引还是向量检索,都展现出来了几倍到数十倍的性能差距。无论是支持高通量的场景,还是用以加速索引的构建,都能极大地降低向量数据库的使用成本。

  1. 日新月异的 ARM

各大云厂商基于ARM架构在不断地推出自己的 CPU,比如 AWS 的 Graviton,GCP 的 Ampere。我们在 AWS Graviton3 上做了相关测试,观察到相比 x86,在提供更加低价的硬件的同时还能带来更好的性能。而且这些 CPU 演进极快,比如在 2022 年推出 Graviton3 后,2023 年 AWS 发布了 30% 算力提升和 70% 内存带宽提升的 Graviton4(https://press.aboutamazon.com/2023/11/aws-unveils-next-generation-aws-designed-chips)。

  1. 强大的磁盘

将大部分数据储存在磁盘可以帮助向量数据库极大提高容量的同时达到百毫秒级别的延迟,而这个量级对大部分已经够用了,同时磁盘的成本是内存的几十甚至百分之一。

模型端的双向奔赴

模型产生向量,向量数据库支持向量的储存和查询。作为一个整体,除了向量数据库端在追求成本的降低外,模型端也在尝试降低向量的大小。

比如在向量的维度上,传统的在向量上引入的降维方案对于查询的准确度影响都比较大,而 OpenAI 发布的 ext-embedding-3-large (https://openai.com/index/new-embedding-models-and-api-updates/)模型可以通过参数控制输出向量的维度,在降低向量维度的同时,对下游任务的效果影响很小。还有在向量的数据类型上,Cohere 近期的博客(https://cohere.com/blog/int8-binary-embeddings)宣布了对于同时输出float,int8 和 binary 等数据类型的向量的支持。对于向量数据库来说,如何去适配这些改变也是需要积极去探索的方向。

02.业务需求

提升向量搜索准确程度

搜索的准确程度一直都是很重要的话题。无论是由于广泛的生产应用,还是 RAG 应用中对于相关性要求更高,向量数据库都在努力朝着更高的搜索质量发展。在这个过程中不断有新的技术涌现,比如为了解决 chunk 过大导致信息丢失的 ColBERT,还有解决域外信息检索的 Sparse。下图为 BGE 的 M3-Embedding 模型的评估结果,它能支持同时输出 Sparse、Dense 和 ColBERT 三种向量,表里为使用他们做 hybrid search 的搜索质量的对比结果。

alt

对于向量数据库来说,如何利用这些技术做混合搜索来提高检索质量也是重要的发展方向。

  • ColBERT

ColBERT 是一个检索模型,为了解决传统双塔模型大 chunk 导致的信息丢失问题,同时规避了常规检索模型全连接导致的搜索效率问题,ColBert 提出基于 token 向量的迟交互模式。ColBERTv2 中还引入了向量检索来加速最后的迟交互模式。

alt
  • Sparse

传统的 dense 向量擅长捕捉语义信,但由于模型训练时只能学习训练数据中的知识,因此对于训练数据未覆盖的新词汇或专业术语,dense 向量的表达能力有限。而这在实际应用中很常见。一般模型微调能一定程度上解决这个问题,但是成本较高且实时性会面临挑战。

此时,基于传统关键词匹配的 BM25 生成的 sparse 向量反而表现出色。再有 SPLADE、BGE 的 M3-Embedding 等模型在保留 sparse 向量关键词匹配能力的同时,尝试把更多的信息编码进去,以进一步提高检索质量。

其实业界在基于关键词检索和向量检索的混合召回体系上已经应用了很久了。在向量数据库中集成新一代的 sparse 向量,并且支持混合检索能力也逐渐成为共识。Milvus 也在 2.4 版本正式支持了 sparse 向量的检索能力。

为离线场景进一步优化向量数据库

目前几乎所有的向量数据库都专注于在线的场景,包括 RAG(https://zilliz.com.cn/blog/ragbook-technology-development)、以图搜图(https://zilliz.com.cn/use-cases/image-similarity-search)等。

在线场景的特点是少量、高频,且对延迟有较高的要求。哪怕是成本最敏感,性能最不重要的场景往往也要求秒级别的延迟。

事实上,在许多大规模数据处理的离线场景中,向量检索扮演着重要角色。比如数据去重、特征挖掘等批处理任务,或者将向量相似性作为召回信号之一的搜推系统,通常会将向量检索作为离线预计算的环节,定期进行特征更新。这些离线场景的特点是批量查询、大量数据等,并且任务的耗时要求可能是分钟级甚至小时级。

为了支持好离线场景,向量数据库需要解决许多新的问题,试着举几个例子:

  • 计算效率:很多离线场景需要高效地做对大量数据的大批量查询,比如一些搜推场景的离线计算部分。这种场景不要求单个数据的延迟,但是需要整体比在线场景更加高的计算效率。为了更好的支持这类问题,像GPU索引等提高计算密度的能力需要被支持。

  • 大量返回:数据挖掘经常使用向量检索来帮助模型找到某一个类型的场景。这通常会需要返回大量数据,如何处理这些返回结果带来的带宽问题、大topK搜索的算法效率问题都是支持这类场景的关键。

如果能够解决上述这几点挑战,向量数据库能够广泛支持更多场景的应用,而非仅仅满足在线应用。

更丰富的向量数据库特性适应更多行业需求

随着向量数据库被越来越广泛地应用在生产端,产生了许多不同的使用方法,也被应用在了不同的行业。这些和行业、具体场景高度相关的需求指导向量数据库去支持越来越多的features。

  1. 生物制药行业:通常用 Binary 向量表达药物分子式进行检索。

  2. 风控行业:需要找到最离群的向量,而不是最相似的向量。

  3. Range Search 功能:允许用户设定一个相似度阈值,返回相似度高于该阈值的所有结果。它可以在无法预估结果数量的情况下,确保返回的结果都具有较高的相关性。

  4. Groupby 和 Aggregation 功能:对于较大对非结构化数据(电影、文章),我们通常分段生产向量,比如一帧画面、一段文字。为了能通过这些分段向量搜到符合要求的结果,向量数据库需要支持 Groupby 和对结果做 Aggregation 的能力。

  5. 支持多模态模型:模型向多模态发展的趋势会产生不同分布的向量,在现有的算法下难以满足检索需求。

上述这些面向各个行业的改进功能更突出了向量数据库动态发展的特点。向量数据库将不断升级优化,推出更丰富的特性以满足各行各业 AI 应用的复杂需求。

03.总结

向量数据库在过去的一年经历了快速成熟的过程,无论从使用场景到向量数据库自身能力都有了很大的发展。在越来越清晰可见的 AI 时代里,这个趋势只会越来越快。希望这些个人的总结和分析能够抛砖引玉,为向量数据库的发展提供一些思路和启发,一起拥抱未来更加激动人心的变化。

阅读原文 ​

  • 好消息,Milvus 社区正全网寻找「 北辰使者」!!! •
  • 如果在使用 Milvus 或 Zilliz 产品有任何问题,可添加小助手微信 “zilliz-tech” 加入交流群。 •
  • 欢迎关注微信公众号“Zilliz”,了解最新资讯。

本文由 mdnice 多平台发布

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Geoserver

Geoserver GIS工具 文章目录 Geoserver前言一、Geoserver是什么?二、概念1.Geoserver结构图2.相关概念3.Geoserver相关站点4.Geoserver安装5.PostgreSQL安装1.拉取镜像2.创建挂载卷3.安装 6 Docker 环境安装postgrespostgis扩展 总结其他参考资料 前言 GeoServer&…

从开发板导出根文件系统并修改(Ubuntu)

前面提到过基于ubuntu-base去构建根文件系统基于Ubuntu-base构建根文件系统-CSDN博客,但是有时候我们并不需要重头开始,可以基于现有的根文件系统做调整。又或者我们直接在出厂的系统上去搭建好自己的运行环境并且编译出自己想要的程序,现在要…

Web浏览器的兼容性测试需要考虑哪些测试点?

测试web网站兼容性时,可以使用各种测试用例来确保网站在不同浏览器中的良好兼容性。以下是一些常见的兼容性测试用例示例: 1. 页面加载测试: - 确保网站在不同浏览器中正常加载,没有加载错误。 - 检查页面加载时间,…

Kivy UI界面

一、版本介绍 Ubuntu:18.04.6 LTS Conda:4.5.12 Python:3.6.15 Kivy:2.0.0 二、安装Kivy # 更新系统包列表 sudo apt-get update# 安装Kivy的依赖项 sudo apt-get install -y python-pip libsdl2-dev libsdl2-image-dev li…

【机器学习】:基于决策树与随机森林对数据分类

机器学习实验报告:决策树与随机森林数据分类 实验背景与目的 在机器学习领域,决策树和随机森林是两种常用的分类算法。决策树以其直观的树形结构和易于理解的特点被广泛应用于分类问题。随机森林则是一种集成学习算法,通过构建多个决策树并…

Galxe已投资Pencils Protocol,投资者阵营正不断扩大

近日,Scroll 生态项目 Penpad 将品牌进一步升级为 Pencils Protocol,全新升级后其不仅对 LaunchPad 平台进行了功能上的升级,同时其也进一步引入了 Staking、Vault 以及 Shop 等玩法,这也让 Pencils Protocol 的叙事方向不再仅限于…

“图生视频”技术创新:剪贴画秒变动画生成的实验验证与分析

在最近的研究进展中,AniClipart系统的问世标志着文本到视频生成技术的一个重要里程碑。这一系统由香港城市大学和莫纳什大学的研究者们共同开发,旨在解决将静态剪贴画图像根据文本提示自动转换成动画序列的挑战。传统的动画制作流程繁琐且耗时&#xff0…

Python 小抄

Python 备忘单 目录 1.语法和空格 2.注释 3.数字和运算 4.字符串处理 5.列表、元组和字典 6.JSON 7.循环 8.文件处理 9.函数 10.处理日期时间 11.NumPy 12.Pandas 要运行单元格,请按 ShiftEnter 或单击页面顶部的 Run(运行)。 1.语法和空格…

「每日跟读」英语常用句型公式 第15篇

「每日跟读」英语常用句型公式 第15篇 1. It’s only logical that __ 合理的做法/结论是__ It’s only logical that we should take a break (合理的做法是我们应该休息一下) It’s only logical that we work hard to make money(合理…

如何设计知识竞赛活动中的观众互动环节

知识竞赛活动过程中有多种方式进行观众互动,达到台上台下互动的效果,让台下观众参与到竞赛活动中,增加现场气氛。下面介绍几种常用观众互动环节设计方法。 一、台上选手对抗台下观众 此方案为台下观众和台上选手一起答题,如果台…

又双叒叕新增2本SCI期刊“On Hold“,慎投,有剔除风险!

本周投稿推荐 SSCI • 2区社科经管类,3.0-4.0(录用友好) EI • 计算机工程生物医学等(领域广,录用极快) CNKI • 3天内初审录用,随即出版(急录友好) SCI&EI …

[Bootloader][uboot]code总结

文章目录 1、U_BOOT_DRIVER2、DM框架dm_scan_platdatadm_extended_scan_fdt 1、U_BOOT_DRIVER 使用这个宏可以定义一个驱动实例,宏定义是 其中使用的struct driver结构体 使用的ll_entry_declare宏定义是 归结为 2、DM框架 1、 DM框架 DM模型抽象出了以下四个…

测试之路 - 精准而优雅

引子 这几年业内一直在做精准测试,大都使用工具 diff 代码改动、分析代码覆盖率这些平台集成的能力。 业务测试中,我们在技术设计和代码实现的基础上也做了一些精减和精准的测试实践,通过深入测试有针对的设计 case,发现隐藏问题…

智游剪辑1.5.0发布!

智游剪辑1.5.0发布了,快来看看更新了啥功能吧! 主页卡片升级 现在功能卡片新增图标,比以前更好看更直观 我的收藏 遇到自己喜欢的功能直接点击收藏就可以了,后面我们就能快速找到这个功能 批量ncm转mp3功能 目前看后台有很多人…

STC8增强型单片机开发【热敏电阻】

目录 一、引言 二、热敏电阻概述 三、STC8增强型单片机简介 四、基于STC8单片机的热敏电阻测温系统 五、热敏电阻测温系统的优化与扩展 提高测量精度 扩展系统功能 六、 温度计算步骤 通过ADC采样计算出热敏电阻位置的电压 通过欧姆定律计算热敏电阻的阻值 通过阻值…

Java微信小程序订阅消息提醒的实现与对接

文章目录 一、准备工作1. 注册微信小程序,并开通订阅消息功能。2. 获取小程序的AppID和AppSecret。3. 在微信小程序管理后台,设置提醒模板,并获取模板ID。4. 小程序端需要获取用户订阅允许提醒的权限(1)引导用户触发订…

win11快速安装mysql数据库系统

win11快速安装mysql数据库系统 1、下载 1.1 打开官网 1.2 向下滚动页面 1.3 进入下载选项 1.4 下载8.0.4 LTS 1.5 开始下载 1.6 下载中 2、解压 大家注意,此时解压后目录是没有data目录的。 3、数据库初始化 3.1 管理员身份打开CMD 开始菜单上,输入…

【找到所有数组中消失的数字】leetcode,python

很菜的写法: class Solution:def findDisappearedNumbers(self, nums: List[int]) -> List[int]:nlen(nums)#存1-Nnum_1[i for i in range(1,n1)]#预存数num_2[]nums.sort()for i in nums:num_1[i-1]0for i in num_1:if i!0:num_2.append(i)return num_2能过但是…

link.click()时浏览器报错The file at ‘data:image/png;base64,iVBORw

代码如下: const dataURL canvas.toDataURL({format: "png",width: 400,height: 400, });const link document.createElement("a"); link.download new Date().getTime();link.href dataURL; document.body.appendChild(link); link.click…

webpack优化构建速度示例-合理配置loader的include exclude:

实际上,babel-loader 在 Webpack 配置中默认并不包含 exclude 和 include 选项的默认值,通常,为了优化构建性能,开发者会显式地设置 exclude 和 include 选项,以便 babel-loader 只处理必要的文件。 src/index.js impo…