十问ByteHouse:如何基于ClickHouse玩转向量检索?

news2024/12/29 8:09:39

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群

向量检索被广泛使用于以图搜图、内容推荐以及大模型推理等场景。随着业务升级与 AI 技术的广泛使用,用户期望处理的向量数据规模越来越大,对向量数据库产品的稳定性、易用性与性能需求也越来越高。为此火山引擎 ByteHouse 团队基于社区 ClickHouse 进行技术演进,提出了全新的向量检索功能设计思路,满足业务对向量检索稳定性与性能方面的需求。

在 12 月 28-29 日上海 QCon 全球软件开发大会上,火山引擎 ByteHouse 技术专家田昕晖将分享基于《云原生数仓 ByteHouse 构建高性能向量检索技术实践》话题。以下是 InfoQ 与火山引擎 ByteHouse 的十问十答,将提前为您揭秘一款 OLAP 引擎将如何设计高性能向量检索能力。

1、InfoQ:能否详细介绍一下向量检索在大型语言模型(LLM)中的具体应用?例如,它是如何改进语言理解和数据处理的?

火山引擎 ByteHouse :简单来说,基于向量检索技术以及向量数据库可以为 LLM 提供一个外置的记忆单元,通过提供与问题及历史答案相关联的内容,协助 LLM 返回更准确的答案。

LLM 受限于训练时数据集的时效与规模,面对细分领域知识与最新内容的查询很难给出准确的答案。基于检索增强生成技术(Retrieval-augmented generation, 简称 RAG),即基于问题和历史答案,从外部知识库中检索相似结果作为 prompts 提供给 LLM ,以获取到更准确答案的方式是一种主要的解决方法,而向量检索就是 RAG 常用的技术。

由于向量检索主要是基于语义相似度来检索结果,搜索的对象是向量信息,相比传统的文本检索来说,结果更为准确,速度也更快。另一方面,LLM 的 prompts 会有一定的长度限制,过长的 prompts 也会增加 LLM 的处理时间,通过文本切块 + 向量检索技术,可以在 prompts 受限的情况下得到更为准确的结果,在保证准确度的同时也能确保较低的 LLM 响应延时。

2、InfoQ:在 LLM 的背景下,向量检索技术面临哪些独特的挑战和机遇?

火山引擎 ByteHouse :这里与向量数据库的挑战结合来谈。

一个是易用性与易维护性,当前已经发展出了很多的向量检索算法与向量数据库,是否能快速接入 LLM 调用链路中,以及如何维护,如何与现有的组件协作,如何去做数据传输,都会是用户选择会考虑的因素。

一个是成本,很多 ANN 算法库都需要将结构常驻内存来提升计算性能,这在数据规模较大的场景无疑会提升用户的使用成本,如何在不降低准确度、不增加显著的构建开销的情况下做到更低的资源占用,也是向量检索技术与向量数据库当前面临的一个挑战。

LLM 的出现对于向量检索与向量数据库无疑是一个非常好的发展机会,后续随着 LLM 以及大量其他非结构化数据检索需求的增加,向量检索与向量数据库会得到更多的关注,成为一种常规技术。

3、InfoQ:您如何看待当前向量数据库技术的发展趋势?

火山引擎 ByteHouse :当前向量数据库的发展主要是两种思路,一种是从 0 开始建议一个专用的向量数据库,一种是基于现有数据库系统扩展支持向量检索功能。专用向量数据库大致的方向是以向量数据为中心设计存储结构与相应的读写机制,并且简化查询执行的调用链路,使用比较固定的 pattern 来执行查询,降低查询语句的解析开销。

采用这种方案的一些系统也在逐渐去提供更为复杂的数据管理机制,比如读写分离、WAL、数据分区等等。查询上也在不断去支持更多的数据类型,更为直观的查询 API 等。这些其实都是在补齐和传统数据库使用上的一些差别,在向一个完整数据库系统去演进。

而另一种扩展现有数据库的思路,则是基于现有数据库的数据管理机制以及查询执行链路中去添加向量检索技术的支持,包括向量索引的支持,查询执行的优化等等,是在一个现有框架的基础上,支持了一种新的计算模式。

在我看来,两种思路目前正在互相借鉴向一个中间状态去演化,各自有比较适用的场景。后续可能也会出现一种新的模块化向量检索的路线,即一个封装好基本向量数据存储与向量检索查询执行的模块以一种嵌入式的方式接入到不同系统中,以支持多样化的向量检索使用需求。

4、InfoQ:相比于传统的数据库技术,向量数据库在处理大规模数据方面有哪些明显的优势?

火山引擎 ByteHouse :向量数据库的核心是通过支持一种或多种的向量索引,来加速向量检索相关的计算。此类索引通常会维护一个额外的内部结构来组织所有的向量数据,以降低检索时比较计算的执行次数。

传统数据库通常只能以全行扫描 + 相似度计算的方式来执行向量检索,而基于向量索引,可以通过很少的计算来快速得到近似的结果,因此性能会远好于传统数据库的处理方式,一般会有几十到几百倍的性能提升。

5、InfoQ:您能详细介绍一下 ByteHouse 在设计向量检索功能时的核心创新点吗?在向量检索技术的开发和实施过程中,您遇到了哪些主要的挑战?

火山引擎 ByteHouse :主要的创新点在于:

支持较为常用的 HNSW、IVFPQ、IVFPQFastScan 等多种类型的向量索引,以应对不同的应用使用场景。同时对于这些向量索引的操作是基于 ByteHouse 现有的索引操作命令进行的扩展,对用户来说几乎没有学习成本,易于上手。

基于向量检索的应用特点,我们也对执行链路进行了重建,结合索引缓存、存储层过滤等机制,性能可以达到市场上主流向量数据库的标准。

主要挑战在于:ByteHouse 列存结构存在的读放大问题,这部分我们通过向量检索计算前置以及存储层过滤等方式进行了优化,显著降低了 IO 开销。

新写入数据以及服务重启会存在冷读的问题,导致性能波动。为此我们引入索引的 preload 机制,索引构建后自动载入缓存,同时支持对过期索引自动淘汰,避免多余的资源占用

索引构建会消耗比较多的资源,为了降低构建操作对正常查询的性能影响,我们引入针对构建操作的资源控制策略,允许用户基于使用场景动态控制索引构建使用的资源。

6、InfoQ:ByteHouse 是如何解决向量检索中的性能和稳定性问题的?在开发过程中,有哪些关键的技术创新或策略调整?

火山引擎 ByteHouse :如上面提到的,ByteHouse 中支持向量检索最大的问题是列存带来的读放大问题,这个我们在 query 执行以及数据读取层都做了对应的优化,目标就是减少不必要的数据读取操作。向量检索功能在 ByteHouse 的 HaMergeTree 以及 HaUniqueMergeTree 上都有支持,基于两种引擎的可靠性方案来提供稳定性保障。

在开发过程中,我们发现 ByteHouse 现有的基于索引的执行链路对于向量检索类型负载来说,会有很多额外的读取和计算开销。为此,我们基于此类应用的特性重建了执行链路,移除了不必要的计算操作,结合行粒度的计算层与存储层的过滤下推,极大减少了原有链路的开销,达到了几十倍的性能提升。

7、InfoQ:您能提供一些 ByteHouse 在性能方面相较于其他解决方案的具体数据或案例吗?

火山引擎 ByteHouse :我们最近基于业界最新的 VectorDBBench 测试工具做了测试,在 cohere 1M 标准测试数据集上,recall 95 以上的情况,可以取得 2600+ 的 QPS,p99 时延在 15ms 左右。对比多种专用向量数据库,性能也有明显的优势。

8、InfoQ:在实际应用中,ByteHouse 的向量检索功能有哪些显著的成功案例?

火山引擎 ByteHouse :在最近的一个以图搜图的场景中,6 亿数据有写入的情况下,只使用 ES 1/5 的资源,全量搜索 top1000 可以做到 200ms 左右的延迟,top10 可以做到 30ms 以内的延迟,相比其他竞品有几倍的性能优势。

9、InfoQ:您如何看待向量检索技术在未来的发展前景?了解到有许多在向量数据库创业的企业,您觉得这个方向如何?

火山引擎 ByteHouse :向量检索技术会成为一种数据库领域的常规技术,会有越来越多的传统数据库支持向量检索的技术,也会有更多更易用性能更强的向量检索算法以及算法库出现。这个方向目前还处于较早期的阶段,产品形态也还在探索,有很多的机会和可能性。

10、InfoQ:您认为接下来在这个领域将会出现哪些新的创新点或挑战?

火山引擎 ByteHouse :一个是检索算法与索引方面的创新,包括自适应参数调优,early termination、与 filter 的结合、向量压缩、分布式检索结构等方面

一个是系统方面的创新,包括实时向量检索、嵌入式向量检索模块、索引推荐、数据隐私保护等方面

更多精彩,欢迎关注上海 QCon 全球软件开发大会

点击跳转ByteHouse了解更多

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

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

相关文章

【SpringCloudAlibaba】Sentinel熔断限流工具的使用

一、前言 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维…

增强的对象文字

首先看一下我们之前的一个餐厅的对象 const restaurant {name: Classico Italiano,location: Via Angelo Tavanti 23, Firenze, Italy,categories: [Italian, Pizzeria, Vegetarian, Organic],starterMenu: [Focaccia, Bruschetta, Garlic Bread, Caprese Salad],mainMenu: […

element组件库的日期选择器如何限制?

本次项目中涉及到根据日期查找出来的数据进行调整,所以修改的数据必须是查找范围内的数据.需要对调整数据的日期进行限制,效果如下: 首先我们使用了element 组件库的日期选择器,其中灌完介绍, picker-options中函数disabledDate可以设置禁用状态,代码如下: <el-date-pickerv…

Oracle11g登录方法

刚部署完Oracle11g可以使用如下方法登录 方法1 sqlplus sys/oracle as sysdba; 用系统用户登录 create user xy identified by test123; 创建用户 grant connect, resource,dba to xy; 授予权限 之后退出执行sqlplus登录命令 使用创建的用户登录 方法2 sqlplus ---登录…

网络工程师常用协议之ICMP协议原理与应用

Internet控制消息协议ICMP&#xff08;Internet Control Message Protocol&#xff09;是网络层的一个重要协议。ICMP协议用来在网络设备间传递各种差错和控制信息&#xff0c;并对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。使用基于ICMP的应用时&…

java SSM教师业绩管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM教师业绩管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代 码和数据库&#xff0c;系统主要采…

HTML有哪些列表以及具体的使用!!!

文章目录 一、HTML列表二、列表的应用1、无序列表2、有序列表3、自定义列表 三、总结 一、HTML列表 html的列表有三种&#xff0c;一种是无序列表&#xff0c;一种是有序列表&#xff0c;还有一种为自定义列表。 二、列表的应用 1、无序列表 <ul> <li>无序列表…

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(二)

系列文章目录 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型&#xff08;一&#xff09; 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型&#xf…

社交心理学视角下的TikTok:用户是如何被吸引的?

TikTok作为一款风靡全球的短视频应用&#xff0c;成功吸引了数以亿计的用户。这引发了一个问题&#xff0c;TikTok到底具有何种魅力&#xff0c;是如何在社交心理学层面吸引用户的呢&#xff1f;本文将从社交心理学的角度出发&#xff0c;深入剖析TikTok的吸引力因素&#xff0…

理性消费成主流!国台国标酒高性价比火热出圈

近日&#xff0c;国台酒业集团获得2023财联社第六届投资年会“年度最具价值品牌奖”。2023年国台品牌价值达2062.68亿元&#xff0c;稳居中国白酒第十名、贵州白酒第三名。 随着酱酒龙头企业官宣提高出厂价&#xff0c;高品质酱酒进一步被市场关注&#xff0c;同样源于茅台镇核…

某音上很火的圣诞树分享

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 效果截图&#xff08;这里不给动态了&#xff0c;某音到处都是了&#xff09;&#xff1a; 源代码&#xff1a; <script src"…

hive企业级调优策略之Join优化

测试所用到的数据参考&#xff1a; 原文链接&#xff1a;https://blog.csdn.net/m0_52606060/article/details/135080511 本教程的计算环境为Hive on MR。计算资源的调整主要包括Yarn和MR。 Join算法概述 Hive拥有多种join算法&#xff0c;包括Common Join&#xff0c;Map …

【离散数学】——期末刷题题库(树其一)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

【微服务】springboot整合minio详解

目录 一、前言 二、Minio 概述 2.1 Minio简介 2.1 Minio特点 三、Minio 环境搭建 3.1 部署过程 3.1.1 拉取镜像 3.1.2 启动容器 3.1.3 访问web页面 四、Minio基本使用 4.1 基本概念 4.2 上传文件演示 4.3 用户管理 4.4 Java操作Minio 4.4.1 导入依赖 4.4.2 上传…

算法专题二:滑动窗口

算法专题二&#xff1a;滑动窗口 一.长度最小的子数组&#xff1a;1.思路一&#xff1a;暴力解法2.思路二&#xff1a;滑动窗口双指针3.GIF题目解析&#xff1a;思路一&#xff1a;思路二&#xff1a; 二.无重复字符的最长子串&#xff1a;1.思路一&#xff1a;滑动窗口2.GIF题…

【神器】wakatime代码时间追踪工具

文章目录 wakatime简介支持的IDE安装步骤API文档插件费用写在最后 wakatime简介 wakatime就是一个IDE插件&#xff0c;一个代码时间追踪工具。可自动获取码编码时长和度量指标&#xff0c;以产生很多的coding图形报表。这些指标图形可以为开发者统计coding信息&#xff0c;比如…

[C++从入门到精通] 14.虚函数、纯虚函数和虚析构(virtual)

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/weixin_43197380&#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;本文由 Loewen丶原创&#xff0c;首发于 CSDN&#xff0c;转载注明出处&#x1f649;&…

STM32_窗口看门狗

什么是窗口看门狗&#xff1f; 窗口看门狗用于监测单片机程序运行时效是否精准&#xff0c;主要检测软件异常&#xff0c;一般用于需要精准检测 程序运行时间的场合。 窗口看门狗的本质是一个能产生 系统复位信号 和 提前唤醒中断 的 6 位计数器 产生复位条件&#xff1a; 当…

推荐算法架构6:数据样本

1 整体架构 深度学习的数据样本决定了算法的上限&#xff0c;模型只是去不断逼近这个上限&#xff0c;可见数据样本对于深度学习的重要意义。与CV和NLP不同&#xff0c;推荐系统可以获取大量用户的浏览和点击等行为&#xff0c;很容易构造正负样本。例如&#xff0c;在精排点击…

瑞友天翼应用虚拟化系统 多处SQL 注入漏洞复现(可RCE)

0x01 产品简介 瑞友天翼应用虚拟化系统是西安瑞友信息技术资讯有限公司研发的具有自主知识产权,基于服务器计算架构的应用虚拟化平台。它将用户各种应用软件集中部署在瑞友天翼服务器(群)上,客户端通过WEB即可快速安全的访问经服务器上授权的应用软件,实现集中应用、远程接…