当前位置: 首页 > news >正文

Milvus 结合极客天成 NVFile 与 NVMatrix 实现高性能向量存储

一. 引言

在人工智能技术爆发式发展的今天,向量数据库已经成为连接AI模型与海量数据的关键桥梁。无论是智能推荐系统中的用户画像匹配,图像识别领域的相似性搜索,还是是自然语言处理中的语义理解,向量数据库都在支撑着众多AI应用。随着AI模型规模的急剧增长和应用场景的不断扩展,传统存储系统在面对海量高维向量数据时显得力不从心。

Milvus作为业界领先的开源向量数据库,以其卓越的性能和丰富的功能赢得了众多开发者的青睐。向量数据库的真正的潜力能否完全释放,很大程度上取决于底层存储系统的能力。

极客天成推出了专门针对向量数据库优化的存储解决方案。通过NVFile分布式文件存储系统和NVMatrix分布式块存储系统的完美结合,为Milvus等向量数据库提供了前所未有的性能提升。这是一场关于AI数据处理范式的深刻变革。

  1. 向量数据库的存储挑战

向量数据具有高维度、高密度的特点,这意味着每个向量通常包含数百甚至数千个浮点数。当数以亿计的向量聚集在一起时,不仅对存储容量提出了极高要求,更对存储系统的随机读写能力、并发处理能力以及数据一致性保障能力提出了前所未有的挑战。

向量数据库的工作模式与传统数据库截然不同。传统数据库主要处理结构化数据的精确匹配查询,向量数据库需要进行相似性搜索,AI系统要求能快速遍历和比较大量向量数据,用户期望在毫秒级时间内得到搜索结果,这就要求底层存储系统必须具备超低延迟和超高吞吐的能力。存储层面的延迟也会被放大,成为整个系统的性能瓶颈。

  1. 分布式文件系统:向量数据库的完美伴侣

Milvus向量数据库中的数据通常以文件形式存在,包括原始向量文件、索引文件、元数据文件等。这些文件具有数量庞大、访问频繁、更新不频繁的特点。传统的集中式存储系统在处理向量文件时会遇到诸多问题。首先是性能瓶颈,单一存储节点的处理能力有限,无法满足大规模并发访问的需求。其次是可靠性风险,一旦存储节点发生故障,可能导致大量数据不可访问。最后是扩展性限制,随着数据量的增长,集中式系统的扩展成本急剧上升。

分布式文件系统天然契合Milvus向量数据库的存储需求。通过将数据分散存储在多个节点上,不仅能够提供海量的存储容量,还能够通过并行访问大幅提升系统的整体性能。当多个客户端同时请求不同的向量数据时,分布式系统可以同时从多个存储节点读取数据,避免了传统系统中的访问冲突和性能瓶颈。

更重要的是,分布式文件系统的扩展性为向量数据库的未来发展提供了无限可能。随着AI应用的不断演进,向量数据的规模还会持续增长。分布式文件系统可以通过简单地添加新的存储节点来扩展容量和性能,而无需对现有系统进行大规模改造。这种线性扩展的能力,正是向量数据库在AI时代快速发展所迫切需要的。

二、Milvus 结合NVFile与NVMatrix:存储架构的创新突破

Milvus 作为业界领先的开源向量数据库,其性能潜力很大程度上取决于底层存储系统的能力。极客天成推出的 NVFile 分布式文件存储系统 和 NVMatrix 分布式块存储系统 为 Milvus 提供了专门优化的存储解决方案,实现了向量数据处理性能的革命性提升。

极客天成可以为向量数据库提供双存储系统架构。这种架构充分考虑了向量数据库中不同类型数据的特点,通过专门优化的存储系统来处理特定的数据类型,从而实现整体性能的最大化。NVFile分布式文件存储系统专门负责处理向量数据库中的大文件数据,包括原始向量数据、索引文件等。这些文件通常体积较大,访问模式相对固定,但对吞吐量的要求极高。NVFile通过先进的分布式架构和智能缓存机制,能够为这类数据提供持续稳定的高性能访问。NVMatrix分布式块存储系统则专门处理向量数据库的元数据。元数据虽然数据量相对较小,但访问频率极高,对延迟的敏感性也更强。任何元数据访问的延迟都会直接影响到向量检索的响应时间。NVMatrix通过全链路RDMA技术和超高IOPS设计,将元数据访问的延迟降低到微秒级别。

这种专业化分工的设计理念,使NVFile和NVMatrix的协同工作为向量数据库提供了前所未有的性能体验。

向量数据存储架构设计原理
1. 双存储系统架构

极客天成为向量数据库设计了专业化分工的双存储系统:

  • NVFile 分布式文件存储系统:专门处理大文件数据
    • 原始向量数据文件
    • 向量索引文件
    • 日志文件和备份数据
  • NVMatrix 分布式块存储系统:专门处理高频访问数据
    • 向量数据库元数据
    • 索引元信息
    • 查询缓存数据
技术特性对比

特性

NVFile

NVMatrix

延迟

100-500μs

100-500μs

IOPS

300万+

1000万+

吞吐量

70GB/s+

70GB/s+

并发支持

10000+

5000+

RDMA支持

2. NVFile + NVMatrix 配置方案
原生集成模式

直接使用 NVFile 和 NVMatrix 作为 Milvus 的存储后端,实现最佳性能。

环境准备

# 安装 NVFile 客户端

bash nvfile-client-setup.sh

# 安装 NVMatrix 客户端

storadm cluster deploy install -c nvmatrix.conf  -a -v

# 挂载 NVFile 文件系统

systemctl restart nvfile-client;systemctl enable nvfile-client

# 创建并挂载 NVMatrix 块设备

storadm cluster lun create -d /dev/nvmatrix_* -l xxx -c 100g -O

mount -d /dev/xxx  /mnt/nvmatrix/cache

storadm cluster lun create -d /dev/nvmatrix_* -l yyy -c 100g -O

mount -d /dev/yyy /mnt/nvmatrix/etcd

Milvus 配置文件(milvus.yaml)

# 存储配置

storage:

  # 向量数据存储(使用 NVFile)

  type: local

  path: /mnt/nvfile/milvus/data

  

# 元数据存储配置(使用 NVMatrix)

etcd:

  endpoints:

    - localhost:2379

  rootPath: milvus

  metaSubPath: meta

  kvSubPath: kv

  # NVMatrix 加速的 etcd 数据目录

  data-dir: /mnt/nvmatrix/etcd

# 性能优化配置

cache:

  cache_size: 32GB

  # 使用 NVMatrix 作为二级缓存

  local_path: /mnt/nvmatrix/cache

# 并发配置优化

common:

  retentionDuration: 432000 

  

indexCoord:

  minSegmentNumRowsToEnableIndex: 1024

  

dataCoord:

  # 利用 NVFile 高吞吐特性

  segment:

    maxSize: 1024 

    sealProportion: 0.23

    assignmentExpiration: 2000

  

  compaction:

    enableAutoCompaction: true

    # NVFile 支持大文件高效处理

    mixCompaction:

      maxSegmentNum: 10

      maxSegmentSize: 2048  


3. 性能基准测试与对比分析
测试环境配置

硬件环境:

- CPU: Intel Xeon  8562Y @ 2.8GHz (32 cores)

- 内存: 512GB DDR5-5600

- 网络: 400Gbps RDMA InfiniBand

- 存储节点: 12 nodes × NVMe SSD arrays

测试数据集:

- 向量维度: 768维

- 数据类型: Float32

- 总向量数量: 1亿条

- 索引类型: IVF_FLAT, HNSW

3.2 向量性能测试
批量插入性能
import time
import numpy as np
from pymilvus import Collection, connections

def benchmark_insert(collection_name, batch_size, total_vectors):
    collection = Collection(collection_name)
    
    start_time = time.time()
    inserted = 0
    
    while inserted < total_vectors:
        vectors = np.random.random((batch_size, 768)).astype(np.float32)
        ids = list(range(inserted, inserted + batch_size))
        
        collection.insert([ids, vectors])
        inserted += batch_size
        
        if inserted % 100000 == 0:
            print(f"Inserted {inserted} vectors")
    
    collection.flush()
    end_time = time.time()
    
    qps = total_vectors / (end_time - start_time)
    return qps
插入性能对比结果

存储方案

批量插入QPS

单条插入延迟

资源利用率

NVFile + NVMatrix

2,000,000 条/秒

0.5ms

CPU: 65%, 内存: 45%

本地 SSD

300,000 条/秒

3.2ms

CPU: 90%, 内存: 70%

向量相似性搜索性能测试

def benchmark_search(collection_name, nprobe_list, topk_list):

    collection = Collection(collection_name)

    collection.load()

    

    # 生成随机查询向量

    query_vectors = np.random.random((1000, 768)).astype(np.float32)

    results = {}

    for nprobe in nprobe_list:

        for topk in topk_list:

            search_params = {"metric_type": "L2", "params": {"nprobe": nprobe}}

            start_time = time.time()

            for i in range(0, 1000, 10):  

                batch = query_vectors[i:i+10]

                collection.search(

                    data=batch,

                    anns_field="embeddings",

                    param=search_params,

                    limit=topk

                )

            end_time = time.time()

            avg_latency = (end_time - start_time) * 1000 / 100 

            qps = 1000 / (end_time - start_time)

            results[f"nprobe_{nprobe}_topk_{topk}"] = {

                "latency": avg_latency,

                "qps": qps

            }

    return results

查询性能对比结果

存储方案

平均查询延迟

查询QPS

并发支持

NVFile + NVMatrix

8ms

15,000

10,000+

本地 SSD

25ms

8,000

3,000

大规模索引构建性能测试

1亿向量 IVF_FLAT 索引构建时间对比

存储方案                构建时间      内存峰值     CPU利用率    磁盘IOPS

NVFile + NVMatrix      8分钟        180GB       75%         850万

本地 SSD              25分钟       200GB       80%         200万


4. 方案选择建议

应用场景

推荐方案

关键考量

AI推荐系统

NVFile + NVMatrix

超低延迟 + 高并发

图像搜索

NVFile 原生

大文件处理 + 高吞吐

文档检索

NVFile S3模式

云原生 + 弹性扩展

实时分析

NVMatrix 主导

极低延迟元数据访问

三、NVFile和NVMatrix处理向量数据的应用场

某大型电商平台拥有超过5亿的商品图片,用户每天的图片搜索请求超过1000万次。采用传统存储方案时,平均查询响应时间为200毫秒,系统只能支持5000的并发查询,在流量高峰时经常出现响应超时的问题。部署NVFile和NVMatrix存储方案后,支持15000的并发查询,平均查询响应时间降低到10毫秒上下,用户几乎感觉不到等待时间。同时系统的并发处理能力大幅提升,最终图片搜索的转化率提升了45%,改善了用户体验的同时,也直接带来了业务价值的增长。

金融服务领域,智能客服系统正在改变传统的客户服务模式。某大型银行的智能客服系统需要处理200万份知识库文档,每天面对50万次客户咨询。系统需要在2秒内理解客户问题并提供准确答案。采用AI问答,需要知识库中的文档需要转换为向量形式存储,客户问题实时转换为向量并进行相似性搜索。任何存储层面的延迟都会影响整个问答过程。通过采用NVFile和NVMatrix方案,向量数据存储的效率大幅提升,问答响应时间从5秒缩短到0.8秒,性能提升使得银行人工客服的工作量减少了60%。

内容推荐领域,某互联网公司系统每天处理的新增内容超过100万条,峰值QPS达到50万,这些内容保存在向量数据库中。NVFile和NVMatrix的分布式架构通过多集群部署,每个集群服务特定的推荐场景,推荐延迟降低了70%,系统支持业务量10倍增长而无需架构调整。

向量存储技术革命的序幕

向量数据库作为连接AI模型与海量数据的桥梁,其重要性日益凸显。而作为向量数据库基础设施的存储系统,其性能优劣直接影响着整个AI应用的体验和效果。NVFile和NVMatrix在专注技术创新的同时,也在积极推进生态建设,为AI时代的存储需求提供全面支撑。

在向量数据库支持方面,除了与Milvus的深度集成外,NVFile和NVMatrix还在积极适配其他主流向量数据库产品。不同的向量数据库有着各自的特点和优势,通过广泛的兼容性支持,可以让更多用户享受到高性能存储带来的好处。

NVFile分布式文件存储系统和NVMatrix分布式块存储系统的出现,不仅解决了当前向量数据库面临的性能瓶颈,更为AI应用的未来发展提供了强大的技术支撑。通过专业化的存储架构设计,这两个系统在各自擅长的领域发挥最大效能,共同构建起高性能、高可靠、高扩展的存储基础设施。

http://www.lryc.cn/news/619040.html

相关文章:

  • LDAP 登录配置参数填写指南
  • 【VB.NET快乐数】2022-10-17
  • (树形 dp、数学)AT_dp_v Subtree 题解
  • 5年保留期+4次补考机会,灵活通关的申研机制
  • 【CV 目标检测】②——NMS(非极大值抑制)
  • git+lfs 如何安装
  • 股票智能体系统的设计与开发
  • Vue3 组合式API vs 选项式API:深度对比与最佳实践
  • SQL连接操作全解析:从入门到精通
  • 自动驾驶决策算法 —— 有限状态机 FSM
  • 基于SpringBoot的旅游网站系统
  • Jenkins + SonarQube 从原理到实战三:SonarQube 打通 Windows AD(LDAP)认证与踩坑记录
  • Linux内核进程管理子系统有什么第二十六回 —— 进程主结构详解(22)
  • 基于51单片机RFID智能门禁系统红外人流量计数统计
  • 【K8s】K8s控制器——Deamonset、Statefulset、Job与CronJob
  • 下一代防火墙部署
  • 树结构无感更新及地图大批量点位上图Ui卡顿优化
  • C#对接Ollama,调用大模型禁用思考模式
  • JMeter并发测试与多进程测试
  • pcl 按比例去除点云的噪点
  • 编程模型设计空间的决策思路
  • QT第四讲-QString和QT数据类型之间转换
  • 当多模态大语言模型遇上视觉难题!AI视觉探索之旅
  • NLP基础
  • CASS11计算斜面面积
  • sqli-libs通关教程(41-50)
  • 【leetcode】45. 跳跃游戏2
  • cuda排序算法--双调排序(Bitonic_Sort)
  • __base__属性
  • 【动态规划】leecode 198的打家劫舍2:dp集合有两种写法对比