火山引擎ByteHouse:“专用向量数据库”与“数据库+向量扩展”,怎么选?

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

背景

随着LLM(Large Language Model)的不断发展,向量检索也逐渐成为关注的焦点。LLM通过处理大量的文本数据,获取丰富的语义信息,从而能够更好地理解和生成自然语言。然而,LLM的输出通常是一系列概率分布,这使得检索过程变得复杂。向量检索作为一种有效的检索方法,它将LLM的输出转化为向量表示,并利用向量之间的相似性来进行匹配。这种方式不仅能够直观地展示语义关系,还提高了检索的效率和准确性。因此,随着LLM的发展,向量检索也相应地迎来了更多关注和研究。

对于向量检索来说,一方面Milvus、Qdrant等专用向量数据库的出现提供了完备的向量检索能力,另一方面,也有一些数据库在自身基础上扩展出向量检索能力。作为火山引擎推出的一款云原生数据仓库,ByteHouse近期推出高性能向量检索功能,通过支持多种向量检索算法以及高效的执行链路,可以支撑级大规模向量检索场景,并达到毫秒级的查询延迟。

本篇内容将主要主要介绍向量检索的基本原理,分析“专用向量数据库”与“数据库+向量扩展”优劣势,并介绍以ByteHouse为代表的具备向量检索能力的数据仓库应用场景。

向量检索介绍

概念解析

向量数据库的核心实现原理是向量化存储和索引技术。向量化存储是将向量数据转换为二进制格式进行存储,以提高存储效率和查询速度。向量索引是将向量数据进行索引,以便快速地进行相似度匹配和聚类分析等操作。

向量数据库中的向量是由多个维度组成的,每个维度代表向量的一个特征。例如,一张图片可以表示为一个三维向量,分别代表图片的宽度、高度和颜色。向量数据库中的向量可以是稠密向量或稀疏向量,稠密向量是指向量中大部分维度都有值,稀疏向量是指向量中只有少数维度有值。

工作原理

向量数据库能够快速检索与查询相似的对象,是因为它们已经预先计算了这些相似度。其中的基本概念称为近似最近邻(ANN)搜索,它使用不同的算法进行索引和相似度计算。

当你拥有数百万个嵌入时,使用简单的 K 近邻(kNN)算法计算查询与你拥有的每个嵌入对象之间的相似度会变得耗时。通过使用近似最近邻搜索,你可以在一定程度上牺牲一些准确性以换取速度,并检索出与查询近似最相似的对象。索引 - 为此,向量数据库对向量嵌入进行索引。这一步将向量映射到一种数据结构中,以实现更快的搜索。

  1. 数据预处理

在向量化存储之前,需要对原始数据进行预处理,包括数据清洗、特征提取和特征归一化等步骤。例如,在文本向量化中,需要对文本进行分词、去停用词和词干提取等处理,然后使用词袋模型或词向量模型将文本转换为向量。

  1. 向量编码

将向量数据编码为二进制格式,以便存储到磁盘或内存中。常用的向量编码方法有二进制编码、哈希编码和压缩编码等。哈希编码是将向量映射到一个哈希表中,以便快速地进行相似度匹配。压缩编码是将向量中的冗余信息进行压缩,以减少存储空间。

  1. 存储管理

将编码后的向量数据存储到磁盘或内存中,需要进行存储管理,包括数据分片、数据压缩和数据索引等步骤。数据分片是将向量数据分成多个块,以便分布式存储和查询。数据压缩是将向量数据进行压缩,以减少存储空间。数据索引是将向量数据进行索引,以便快速地进行相似度匹配和聚类分析等操作。

  1. 数据查询

向量化存储后,需要进行数据查询,包括相似度匹配和聚类分析等操作。相似度匹配是指在向量数据库中查找与查询向量最相似的向量,常用的相似度计算方法有余弦相似度和欧几里得距离等。聚类分析是指将向量数据分成多个簇,以便进行数据分析和挖掘。

索引方式

向量检索算法基于其存储结构大致可分为四种。

  • 第一种是 Table-based,典型算法如 LSH。LSH 算法的核心思想是通过哈希函数将相似的向量映射到相同的哈希桶中,从而实现高效的相似性搜索。这种方法能够在高维向量空间中快速找到相似的向量对,为相似性搜索提供了一种高效的近似解决方案。
  • 第二种是 Tree-based。这是一种用于向量检索的索引方法。它利用树形数据结构(如B树或平衡树)来组织和管理向量数据,使得向量的查找、插入和删除操作能够在对数时间内完成。这种索引方法对于大规模和高维度的向量数据集非常有效,能够显著提高向量检索的效率。
  • 第三种是 Cluster-based,也称为 IVF(Inverted File),把向量先进行聚类处理,检索时首先计算出最近的 k 个聚类中心,再在这些聚类中心中计算出最近的 k 个向量。这种索引的优点是构建速度快,因为构建时只需要多一个 training 的过程。相比于其他常用索引(主要是 Graph-based 索引),只需要额外存储倒排表和聚类中心结构,所以内存额外占用比较少。但也存在相应的缺点,由于每次查询要把聚类中心里面所有的向量都遍历一遍,所以它的查询速度受维度信息影响较大且高精度查询计算量比较大,计算开销大。这类索引通常还会结合一些量化算法来使用,包括 SQ、PQ等。
  • 第四种是Graph-based, 把向量按照相似度构建成一个图结构,检索变成一个图遍历的过程。常用算法是HNSW。它基于关系查询,并以构建索引时以及构建向量之间的关系为核心,而主要技术则是highway和多层优化方式。这种算法的优点是查询速度快、并发性能好;而缺点则表现为构建速度慢、内存占用高。

目前实际场景中,使用较多的方法主要是后面的两种,即 Cluster-based 和 Graph-based。

为什么OLAP引入向量检索

向量数据库目前还处于一个快速发展的阶段,目前看有两个趋势:

第一种是以专用向量数据库为基础,不断添加更多复杂的数据类型支持以及更多的数据管理机制,比如存算分离、一致性支持、实时导入等。此外,查询上也在不断添加前后置过滤等复杂查询策略的支持。

第二种构建思路是数据库加向量检索扩展,继续去支持更多的向量检索算法,并且不断按照向量检索的需求,添加特殊的过滤策略、简化对应的执行计划。

以上两种构建思路都在向一个统一的目标去汇合,即带有高性能向量检索,与完备数据管理和查询支持的数据库形态。

提升多维数据处理能力

随着大数据时代的来临,数据量呈爆炸式增长,用户需要更高效、更精准的数据分析工具来帮助他们快速理解数据背后的趋势和模式。向量检索能力的引入,可以将数据从表格形式转化为向量表示,利用机器学习算法对数据进行相似性匹配和聚类分析。这使得用户能够更快速地找到与查询条件相似的数据,进行更深入的数据探索和洞察。因此,引入向量检索能力是OLAP产品提升用户体验和满足用户需求的重要方向之一。

作为一款OLAP引擎,ByteHouse在支持结构化数据的单表、多表复杂查询计算基础上,扩展了向量检索能力,支持向量数据存储、索引和高效检索,从而支持商品推荐、智能问答系统、图片搜索、视频检索等应用场景。

基于 vector-centric 的思路,ByteHouse 重新构建了高效的向量检索执行链路,结合索引缓存、存储层过滤等机制,使得性能实现进一步突破。另外,为了应对不同使用场景,ByteHouse 支持了 HNSW、Flat、IVFFlat、IVFPQ 等多种常见向量索引算法。此外,新引入的向量索引支持当前的二级索引相关语义,新的执行链路也对现有距离函数进行了适配,以降低用户使用门槛和学习成本,用户可以直接用 ClickHouse 的现有语义来使用高性能的向量检索功能。

支持更复杂的分析场景

向量检索的核心功能是能检索任意数据对象的相似度,比如文本、图片、视频、声音等一切数字化内容的相似度,因此以文本相似度检索、问答检索、图片声音视频检索、智能推荐为核心功能的应用场景,都可以基于向量检索能力来构建。核心应用场景如下表所示:

行业应用场景
互联网电商商品以图搜搜
互联网-社交图像去重、视频原创验证、风控审核、关联推荐、舆情监控
政府机构视频检索、指纹搜索、人体图像检索、车辆查找、内容查重
金融文本检索、智能客服
零售商品识别、自动售货机

大模型场景

大模型类应用主要有企业知识库、智能问答、大模型辅助系统、创作助手(内容创作领域)等,将企业行业深度相关的内容,进行分割、整理,录入到数据库中,供下游使用,包括企业员工的检索访问、企业内部问答访问、配合大模型更加智能有逻辑地回答问题。

以企业专属问答知识库为例,将文档片段全部向量化(通过语言模型,如bert等),存到ByteHouse。如果用户输入问题,则对问题语句进行向量化,以余弦相似度或点积等指标,计算在向量数据库中和问题向量最相似的top k个文档片段,通过大模型的上下文组织能力,将查询结果包装成标准回答返回给应用系统。

:在数据量较大,而且需要做逻辑分割管理;对于性能要求在几十ms到一两百ms;对召回率要求较高。ByteHouse的优势是性能好、扩展性好能支撑海量数据集、支持SQL易用性好。

商品搜索和推荐

在电商场景中,采用标量数据条件检索与图片检索相结合的方式搜索商品,让用户能更直观地搜索到感兴趣的商品;也可以基于向量相似度检索功能,实现相似商品推荐功能。

例如用户要检索发货地在上海,价格区间为200-1000元,风格为韩版,并与上传的一张图片相似度高的衣服。采用ByteHouse能用一条SQL同时对标量数据和向量数据进行检索,简单易用,检索性能高。

图片视频搜索

  • 以图搜图:这是向量检索在图片搜索中的常见应用。用户可以通过上传一张图片,系统会返回与该图片相似的图片。这背后的原理是将图片转化为向量,然后计算查询向量与数据库中其他向量之间的相似度,从而找出相似的图片。
  • 视频处理:在视频处理方面,向量检索可以用于实时跟踪视频中的对象轨迹,或者检索与特定动作或场景相似的视频片段。

如下图所示,ByteHouse支持上传一张图片,并输入时间、相似度、信息来源等条件,检索全网视频中与目标图片相似视频,该场景利用了ByteHouse的标量数据与向量数据混合检索能力,采用如下的SQL语句即可进行快速检索:

SELECT unique_id,create_time,image_url,platform,update_time,post_category,post_id,     post_publish_time,dist 
FROM qian.photo_vec7 
WHERE (post_publish_time >= '2023-11-22 11:00:00') AND (post_publish_time <= '2023-11-24 11:00:00') WHERE (post_category = 1) 
ORDER BY cosineDistance(vector, [10, 5, 23, 17, 9, 9, 3, 12, 32, 40, 32, 3, 8, 26, 26, 54, 93, 91, 8, 7, 41, 22, 19, 119, 5, 8, 77, 33, 61, 55,, 56]) AS dist ASC LIMIT 100;

向量检索产品如何选型

向量检索能力比较

目前支持向量检索功能的产品主要有专业的向量数据库,例如Milvus、Qdrant;另外其他数据库产品,如开源社区ClickHouse也支持了向量检索。我们从扩展性、易用性、混合负载能力等角度对比,如下:

MilvusQdrantESClickHouseByteHouse
易扩展性存储计算分离存储计算耦合存储计算耦合存储计算耦合存储计算分离
易用性自定义API,不支持SQL自定义 API,不支持 SQL自定义 API,不支持 SQL支持较全的SQL语法支持较全的SQL语法
混合负载能力支持基于简单类型标量的过滤,不支持聚合支持基于简单标量类型过滤支持基于某个特定标量的 group by 操作(group by key 必须为 string 或 integer 类型)支持OLAP和vector search混合场景1.支持OLAP和vector search混合场景2.支持optimizer,可以实现混合负载的CBO自动优化
索引类型HNSW/IVF类索引/DiskANN 等HNSWAnnoyHNSW/IVFPQ/DiskANN等
支持的数据类型较少较少支持常见数据类型支持常见数据类型
单表是否支持多个vector
检索性能

选型总结

总结来看,与专用向量数据库相比,ByteHouse作为一款OLAP引擎,还支持结构化&非结构化数据,具备更广泛的应用场景,并且ByteHouse存储计算分离架构更容易解决向量数据库 index 构建任务重影响正常读写的问题。

在性能上,一方面ByteHouse本身高性能查询特性,为向量搜索相关查询提供高效率的执行底座,另一方面,ByteHouse 查询优化器能力,在混合查询下可以根据 cost 去选择最优计划,让查询性能更优。在功能上,ByteHouse具备较全的 SQL 语法支持, 并且还提供了大量的函数支持用户构造复杂的结构化数据与非结构化数据的混合查询语句,具备灵活性、易用性。

通过将向量能力扩展到OLAP引擎上,企业可以获得高效性能、集成便利、丰富的分析功能、可扩展性和成熟的生态系统等优势。这些优势可以帮助企业更好地利用向量数据进行高效的数据分析和挖掘,从而更好地支持决策和业务发展。

点击跳转火山引擎ByteHouse了解更多

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第9章-网络设备基本调试

1. 网络连通性测试 ping命令 定义&#xff1a;基于ICMP协议开发的应用程序&#xff0c;检测网络连通性&#xff1b; 功能&#xff1a; ① 检测网络连接的状态&#xff1b; ② 检测目标计算机是否在线&#xff1b; ③ 定位故障排除&#xff1b; ④ 检测网络延迟和丢包情况&#…

c++QT文件IO

1、QFileDialog文件对话框 与QMessageBox一样&#xff0c;QFileDialog也继承了QDialog类&#xff0c;直接使用静态成员函数弹窗。弹出的结果&#xff08;选择文件的路径&#xff09;通过返回值获取。 1&#xff09;获取一个打开或保存的文件路径 // 获取一个打开或保存的文件路…

Linux:动静态库的概念制作和底层工作原理

文章目录 动静态库基础认知动静态库基本概念静态库的制作库的概念包的概念 静态库的使用第三方库小结 动态库的制作动态库的使用动态库如何找到内容&#xff1f;小结 动态库加载库和程序都要加载可执行程序的地址问题地址问题逻辑地址和平坦模式绝对编址和相对编址与位置无关码…

esxi配置NTP自动对时与手动对时

目录 背景解法配置NTP服务器立即与NTP服务器同步时间 附&#xff1a;几个常用的NTP服务器列表 背景 VMware ESXi 6.7运行了一段时间后偶然发现系统时间与标准时间有5分钟左右的差异&#xff0c;于是研究了下如何自动对时以及用命令行立即对时。 解法 配置NTP服务器 首先在管…

啥,ui叫我做一个移动端好看的轮播--异形的Slide

先看效果,得实现两边的缩放和无线滚动 实现方法 我的基础架构是 next.jsswiper 下载swiper包 yarn add swiper下载后在页面中引用 import { useEffect, useState } from "react"; import styles from "./index.module.css"; import Image from "n…

DataStream API(源算子)

目录 源算子 1&#xff0c;从集合中读取数据 2&#xff0c;从文件读取数据 3&#xff0c;从 Socket 读取数据 4&#xff0c;从 Kafka 读取数据 5&#xff0c;自定义源算子 6&#xff0c;Flink 支持的数据类型 6.1 Flink 支持多种数据类型&#xff0c;包括但不限于&…

一、认识 JVM 规范(JVM 概述、字节码指令集、Class文件解析、ASM)

1. JVM 概述 JVM&#xff1a;Java Virtual Machine&#xff0c;也就是 Java 虚拟机 所谓虚拟机是指&#xff1a;通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的计算机系统。 即&#xff1a;虚拟机是一个计算机系统。这种计算机系统运行在完全隔离的环境中…

Linux Centos7环境下安装Redis5

Centos7环境下安装Redis5 使用 yum 安装创建符号链接针对可执⾏程序设置符号链接针对配置⽂件设置符号链接 修改配置文件启动Redis停止Redis 一般情况下我们在 linux 系统中想要安装一些程序首先会想到使用 yum 源来安装, 但是在下图中我们可以看到 Redis 版本还是3.X的版本, 所…

优化用户体验测试应用领域:提升产品质量与用户满意度

在当今数字化时代&#xff0c;用户体验测试应用已经成为确保产品质量、提升用户满意度的关键工具。随着技术的不断发展&#xff0c;用户的期望也在不断演变&#xff0c;因此&#xff0c;为了保持竞争力&#xff0c;企业必须将用户体验置于产品开发的核心位置。本文将探讨用户体…

vcruntime140_1.dll文件丢失有什么办法可以解决

vcruntime140_1.dll文件丢失是电脑中常见的事情&#xff0c;解决vcruntime140_1.dll丢失的办法也有很多种&#xff0c;今天我们就来聊聊为什么要修复vcruntime140_1.dll文件&#xff0c;vcruntime140_1.dll在电脑中的重要性&#xff0c;以及详细的解决vcruntime140_1.dll丢失的…

GPT-5不叫GPT-5?下一代模型会有哪些新功能?

OpenAI首席执行官奥特曼在上周三达沃斯论坛接受媒体采访时表示&#xff0c;他现在的首要任务就是推出下一代大模型&#xff0c;这款模型不一定会命名GPT-5。虽然GPT-5的商标早已经注册。 如果GPT-4目前解决了人类任务的10%&#xff0c;GPT-5应该是15%或者20%。 OpenAI从去年开…

使用DockerFile构建镜像与镜像上传

目录 前言&#xff1a;为什么要使用Dockerfile &#xff1f; DockerFile构建镜像 1、构建基础对象 2、Dockerfile文件结构 3、构建Dockerfile文件镜像 二、镜像上传&#xff08;阿里云&#xff09; 前言&#xff1a;为什么要使用Dockerfile &#xff1f; 首先Dockerfile …

Element组件完整引入、按需引入、样式修改(全局、局部)、简单安装less以及npm命令证书过期等

目录 一、npm 安装二、完整引入三、按需引入四、样式修改1.按需加载的全局样式修改2. 局部样式修改1. 在 css 预处理器如 less scss 等直接使用::v-deep2. 只能用在原生 CSS 语法中:/deep/ 或者 >>> 五、 拓展&#xff1a;npm 安装less报错&#xff0c;提示证书过期六…

Java Web(二)--HTML

基本介绍 官网文档地址: HTML 教程 HTML&#xff08;HyperText Mark-up Language&#xff09;即超文本标签语言&#xff1b;HTML 文本是由 HTML 标签组成的文本&#xff0c;可以包括文字、图形、动画、声音、表格、链接等&#xff1b;HTML 的结构包括头部&#xff08;Head&…

CWE、CVE

文章目录 前言一、CVE是什么&#xff1f;二、官网浏览主页词汇 三、CWE 前言 一、CVE是什么&#xff1f; 关于CVE是什么&#xff0c;前辈已经阐述得很详细通透&#xff0c;这里不再赘述或生产一些垃圾信息&#xff0c;CVE公共漏洞和暴露的学习 总结&#xff1a; 标识某个漏洞…

不就业,纯兴趣,应该自学C#还是JAVA?

不就业&#xff0c;纯兴趣&#xff0c;应该自学C#还是JAVA? 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「JAVA的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff…

测试老司机聊聊测试设计都包含什么?

一、数据组合测试设计 数据组合测试设计&#xff08;Combinatorial Test Design&#xff0c;CTD&#xff09;是一种优化测试用例的方法&#xff0c;它通过系统地组合不同的测试数据输入&#xff0c;以确保全面覆盖各种可能的测试情况。这种方法主要应用于软件测试领域&#xff…

Aria2 WebUI控制台 任意文件读取漏洞复现(CVE-2023-39141)

0x01 产品简介 Aria2 WebUI控制台是用于下载文件的实用程序。它支持 HTTP(S)/FTP/SFTP/BitTorrent 和 Metalink 协议。aria2可以从多个来源/协议下载文件,并尝试利用您的最大下载带宽。它支持同时从HTTP(S)/FTP/SFTP和BitTorrent下载文件,而从HTTP(S)/FTP/SFTP下载的数据上…

【算法】选择最佳路线(超级源点)

题目 有一天&#xff0c;琪琪想乘坐公交车去拜访她的一位朋友。 由于琪琪非常容易晕车&#xff0c;所以她想尽快到达朋友家。 现在给定你一张城市交通路线图&#xff0c;上面包含城市的公交站台以及公交线路的具体分布。 已知城市中共包含 n 个车站&#xff08;编号1~n&…

银行数据仓库体系实践(4)--数据抽取和加载

1、ETL和ELT ETL是Extract、Transfrom、Load即抽取、转换、加载三个英文单词首字母的集合&#xff1a; E&#xff1a;抽取&#xff0c;从源系统(Souce)获取数据&#xff1b; T&#xff1a;转换&#xff0c;将源系统获取的数据进行处理加工&#xff0c;比如数据格式转化、数据精…