You need to enable JavaScript to run this app.
导航
概述
最近更新时间:2025.05.22 14:27:20首次发布时间:2025.05.22 14:13:44
我的收藏
有用
有用
无用
无用

ByteHouse 为您提供了高性能向量检索功能,可以通过 SQL 语句、Python API进行向量检索,支持多种向量检索算法,包括向量相似度计算、向量聚类、向量相似度查询等。本文介绍了 ByteHosue 向量检索的能力。

ByteHouse 高性能向量检索简介

ByteHouse 来源于 ClickHouse,但 ClickHouse 存在向量索引重复读取,相似度计算冗余等问题,对于延迟要求低、并发需求高的向量检索场景可用性较弱。ByteHouse 在向量检索能力上进行全面创新,具备以下特点:

  • 具备较全的 SQL 语法支持,还提供大量的函数支持用户构造复杂的结构化数据与非结构化数据的混合查询语句,提升灵活性、易用性。
  • 支持 OLAP 混合场景,支持结构化&非结构化数据,比目前专用向量数据库具备更广泛的应用场景。
  • 减少了文本/向量/OLAP 混合场景中对组件依赖,降低工程复杂度。
  • 存储计算分离架构更容易解决向量数据库索引(index)构建任务重、影响正常读写的问题。
  • ByteHouse 高性能查询引擎,能为向量搜索相关查询提供高效率执行底座,让查询性能更优。
  • 支持查询优化器,混合查询下可以根据成本选择最优计划,进一步提升性能。
  • 支持数据实时更新和实时查询。
  • 成本较低,相比 ES 性能提升数倍以上,相同场景机器资源节省 80%。

架构设计

ByteHouse 的向量检索功能整体的架构如下图所示:

在向量索引方面,ByteHouse 接入了 HNSW(hnswlib)Faiss 两个比较流行的检索算法库,支持 HNSW、FLAT、IVF_FLAT、IVF_PQ、IVF_PQ_FS 等多种常用索引。另外,考虑到向量检索需要在内存中执行,ByteHouse 还加入了向量索引缓存机制,确保查询涉及的 data part 索引常驻内存,实现低延迟向量检索。
另外,ByteHouse 基于现有 skip index 逻辑,添加了对应索引的构建语句支持,指定每个 data part 只构建一个索引。
为了解决构建资源消耗较高的问题,在索引构建流程上,ByteHouse 添加了构建资源(CPU)控制机制,并且针对内存使用较大场景(IVF 类型索引的训练方法),提供了 on disk 的构建逻辑。
在查询执行方面,ByteHouse 在查询的各个层次针对向量检索相关的查询进行了 Pattern 识别与 Query 改写,目前主要识别 order by L2Distance/cosineDistance + limit topK 相关查询,并针对向量检索的计算特点,实现了全新的 SelectWithSearch 算子,用来执行实际向量检索与其他属性读取操作。
新旧执行链路比较如下:

  • Skip Index Based Pipeline

  • New Pipeline

构建语句示例如下:

CREATE TABLE test_ann 
(
    `id` UInt64,
    `label` String,
    `vector` Array(Float32),
    INDEX v1 vector TYPE HNSW('DIM=960, METRIC=COSINE')
)
ENGINE = MergeTree
ORDER BY id

查询语句示例如下:

select  
    id, 
    label,
    dist 
from test_ann 
prewhere label = '...'
order by cosineDistance(vector, [query_vector]) as dist 
limit 100 

性能测评

ByteHouse 团队基于业界最新的 VectorDBBench 测试工具进行测试,测试机器配置为 80 核 376 GB 内存。在 cohere 1M 标准测试数据集上,recall 98 的情况下,QPS 可以达到开源向量数据库 Milvus(2.3.0)的 2 倍以上。在 recall 95 以上的情况下,QPS 最高可以达到 4200+,p99 时延在 15ms 以内,具备业界领先优势。

应用场景

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

行业

应用场景

互联网电商

商品以图搜图

互联网-社交

图像去重、视频原创验证、风控审核、关联推荐、舆情监控

政府机构

人脸识别、视频检索、指纹搜索、人体图像检索、车辆查找、内容查重

金融

人脸识别、文本检索、智能客服

零售

人脸识别、商品识别、自动售货机

大模型类应用

大模型类应用主要有企业知识库、智能问答、大模型辅助系统、创作助手(内容创作领域)等,将企业行业深度相关的内容,进行分割、整理,录入到数据库中,供下游使用。包括企业员工的检索访问、企业内部问答访问、配合大模型更加智能有逻辑地回答问题。
以企业专属问答知识库为例,实现方案可以为将文档片段向量化(通过语言模型,如 bert 等),存储在 ByteHouse。使用者提问之后,系统对问题语句进行向量化,以余弦相似度或点积等指标,计算在向量数据库中和问题向量最相似的 top k 个文档片段,通过大模型的上下文组织能力,将查询结果包装成标准回答返回给应用系统。
该场景特点是数据量较大,而且需要做逻辑分割管理;对于性能要求在几十-上百毫秒,召回率要求较高。ByteHouse 具备性能高、扩展性强,支撑海量数据集、支持 SQL 易用性好的特点,比较适合该类场景。

商品搜索和推荐

在电商场景中,采用标量数据条件检索与图片检索相结合的方式搜索商品,让用户能更直观地搜索到感兴趣的商品;也可以基于向量相似度检索功能,实现相似商品推荐功能。
例如,用户要检索发货地在上海,价格区间为 200-1000 元,风格为韩版的,并与上传的一张图片相似度高的衣服。采用 ByteHouse 能用一条 SQL 同时对标量数据和向量数据进行检索,简单易用,检索性能高。

图片视频搜索

如下图所示,支持上传一张图片,并输入时间、相似度、信息来源等条件,检索全网视频中与目标图片相似视频,该场景利用了 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;

Image

向量检索使用指引

ByteHouse 向量检索功能为高级特性,您可按需启用并使用该功能。

相关参考:ByteHouse 高性能向量检索技术指南

更多 ByteHouse 向量检索功能介绍详见 ByteHouse 高性能向量检索技术指南