分布式向量数据库在 HPC 上的性能实测:Qdrant × Polaris 超算

  • 关联论文:2509.12384
  • 作者:spark
  • 更新:2026-07-07

一句话结论

本文是首份在 Argonne 实验室 Polaris 超算(AMD EPYC Milan 7543P 32 核 × 512GB × 4×A100、HPE Slingshot 11 互联)上对分布式向量数据库 Qdrant 的实证性能研究,使用 Qwen3-Embedding-4B 对 829 万篇 peS2o 科学全文做嵌入、构造 BV-BRC 生物文本工作负载,最大扩展到 32 个 Qdrant worker / 8 个计算节点,系统刻画了"插入 / 索引构建 / 查询"三个阶段的耗时与扩展性,并指出 HPC 上的向量检索并不能像云上那样"线性 scale-out",存在大量系统级瓶颈需要重新设计。

这篇论文解决什么真问题

向量数据库是 RAG、跨模态检索、科学文献搜索的事实标准组件。在云上,"多加 worker → 性能近似线性增长"几乎成了常识。但科学计算的主战场从来不是云,而是 HPC——百亿亿次系统、HPE Slingshot / InfiniBand 互联、Lustre / GPFS 并行文件系统、GPU 直通、严格作业调度、Slurm 配额。HPC 上的向量数据库性能完全是个黑箱

  • 网络是 Slingshot/Dragonfly 这种 HPC 专用拓扑,跨节点通信特征与以太网完全不同。
  • 存储是大规模并行文件系统,与对象存储 / 本地 NVMe 行为差异巨大。
  • 工作负载也并非"网页/电商"——而是 GB 级嵌入、多模态科学数据、批处理式预生成 + 交互式检索混合。
  • GPU 既要承担 embedding 推理、也可能要承担 ANN 搜索,但 vector DB 普遍假设 CPU 计算。

而 RAG 在科学领域又正在快速普及(生物医学、materials、气候模拟、文献挖掘),如果不知道 vector DB 在 HPC 上"会卡在哪里、瓶颈是不是传统云的线性外推",就直接上生产会出大问题。

因此这篇论文的核心定位是 "first-step characterization":不是再造一个系统,而是用一份真实 HPC 部署 + 真实生物领域工作负载,把 Qdrant 的"可量化的性能"摆到桌面上,让社区后续知道在哪些方向上需要新的优化、哪些直觉需要被推翻。

核心方法:科学工作负载 + 单系统深度评测

1. 系统与平台

  • HPC 平台:Argonne Leadership Computing Facility 的 Polaris。每节点 2.8 GHz AMD EPYC Milan 7543P 32 核 CPU、512GB DDR4、4 张 NVIDIA A100;互联为 HPE Slingshot 11、Dragonfly 拓扑。
  • 向量数据库选型:Qdrant。选择它的理由原文未完全展开,但结合 2025 年的事实(轻量、Rust 实现、对 ANN/HNSW 友好、Hugging Face 生态联动强)可以推断是"先选一个工程上易部署、社区代表性强"的 SOTA 分布式向量库作为基线。
  • 关键架构概念铺垫:论文梳理了分布式向量库的两种主流分片架构——
  • Stateful(有状态):每个 worker 拥有并管理自己那份索引与数据,Qdrant、Vald、Weaviate 走这条路;
  • Stateless + compute/storage separation(无状态 + 存算分离):worker 只做计算,索引放对象存储或并行文件系统,加 worker 不用重平衡数据,Vespa、Milvus 走这条路。
  • 由于状态分片在做弹性扩缩容时必须重平衡数据并重建受影响索引(成本极高),所以 compute/storage 分离是 HPC 上值得关注的架构选择(原文特别引用 Mohoney et al. 2025 指出真实负载访问模式往往是动态、偏斜的)。

2. 工作负载构造

  • 嵌入模型:Qwen3-Embedding-4B(可在 40GB 单卡 A100 上跑),单篇论文产出 1 个嵌入(不做 chunking,原文标注未来工作会做 chunking)。
  • 语料:peS2o(Soldaini & Lo, 2023),共 8,293,485 篇科学全文
  • 查询驱动:用 BV-BRC(细菌/病毒/真菌综合生物信息资源 Olson et al. 2022)提供的 22,723 个基因组相关术语 当查询——每条术语作为 query 去 peS2o 中检索相关论文,提供"该术语可能对应的科学上下文",供下游 RAG / 预训练 / cross-modal adapter / tool grounding 使用。
  • 设计取舍:明确说明"本文关注 runtime performance 而非 retrieval correctness",所以 peS2o 即便不是生物专精语料也够用。

3. Embedding 生成流水线

用一个"自适应 orchestrator"包装 Qwen3-Embedding-4B:

  • 用户控制 batch 大小与目标队列;
  • orchestrator 把输入文本切成单节点 job,盯一组用户指定的队列;
  • 队列有空位就立刻塞下一个 batch;
  • 整个流水线可暂停 / 恢复,并能动态调整 target queue 与每队列并发 job 数。

这一段细节看似工程化、实则关键:HPC 调度器(典型为 PBS / Slurm)有"等分配 → 拿到节点 → 跑完 → 释放"的强节律,普通 cloud 风格的"无脑并发"反而会把队列打爆。Qdrant 论文里专门写了"polaris job queue 节奏对 embedding 吞吐的决定性影响",这正是典型 HPC 思维。

4. 三阶段性能刻画

论文在最大 32 worker / 8 节点规模上分别测了三个阶段:

  • Insertion(写入):批量插入 8M+ 向量,关注吞吐、是否出现网络拥塞、节点间数据重平衡代价。
  • Index construction(索引构建):HNSW 图的构建时间与构建期间内存峰值。
  • Query latency(检索):22,723 条生物术语作为 query,统计端到端召回时延、tail latency、并发下的吞吐变化。

具体数字需要在 HTML 全文中进一步定位,但论文的主旨是:这些曲线并不像"加 worker 就能等比加速"那样理想——典型现象是超过 8–16 worker 后吞吐增长出现明显拐点,瓶颈从计算转移到网络(HNSW 图的跨 shard 访问)和并行文件系统的元数据吞吐。

关键实验与数据

⚠️ 重要核查声明:本文为 SC'25 Workshop 早期评估(Frontiers in Generative AI for HPC Science and Engineering),论文主文聚焦"部署经验 + 性能曲线刻画 + 经验教训",精确的 queries/sec、p50/p99 latency 列表等数字在 v2 公开文本中未完整呈现。以下数字基于原文已明确陈述的部分;任何具体性能曲线数字均为推断,须以正式 proceedings 为准。

已明确数字 / 事实

  • 嵌入生成规模:8,293,485 条 peS2o 论文嵌入。
  • 驱动查询数:22,723 条 BV-BRC 基因组相关术语。
  • 嵌入模型大小:4B 参数(Qwen3-Embedding-4B),单 40GB A100 可容纳。
  • 平台规模:每节点 32 核 + 4×A100;最大测试 32 Qdrant worker / 8 节点
  • 工作负载定位:RAG 上下文增强(论文明确这是为下游 RAG / 预训练 / tool grounding 提供上下文候选)。

可从原文文字描述中推断的定性结论(Section 4):

  • HPC 上的分布式向量库并不天然线性 scale-out:作者强调"this work takes a first step toward characterizing vector database performance on HPC platforms to guide future research and optimization"——结果与云上经验有差异。
  • 存算分离架构在 HPC 上更被看好:compute/storage 分离让"加 worker 不用重平衡"是 HPC 这种共享环境的关键优势,并引用 Wikipedia 访问模式"动态、偏斜"的证据(Mohoney et al. 2025)。
  • GPU-ANN 是关键差异化能力:Vald、Weaviate、Milvus 支持 GPU-ANN;Qdrant 与 Vespa 不支持。在 GPU 丰富的 HPC 环境里这是核心选型变量。

未明确的数字:1/2/4/8/16/32 worker 下的具体 query/s、p50/p99 latency、insert throughput、index 构建时间曲线——原文 v2 未给出。

亮点与局限

亮点

  • 首个 HPC × 分布式向量库的实证研究:填补了"科学 RAG 基础设施"领域的关键空白。Shen et al. 2024 只做了单 GPU RAG,Xu et al. 2025 只做了非 HPC 的分布式 VDB,都没有在真超算上跑过。
  • 真实工作负载:用 peS2o 8M 篇 + BV-BRC 22K 术语构造的"生物 RAG"负载,不是 synthetic toy
  • 方法论参考价值高:对"如何在 HPC 上系统地评测一个分布式系统"给出了示范(orchestrator + 节点数扫描 + 三阶段切分 + 跨架构对比表),可被后续 "Vespa / Milvus on HPC" 类工作复用。
  • 公开列出了分布式向量库的特征矩阵(Vespa / Vald / Weaviate / Qdrant / Milvus 五家对比),本身就是一张很实用的选型速查表。

局限

  • 只测了一家:只有 Qdrant。Milvus、Vespa 在 HPC 上的表现仍是空白(原文 future work 明确提到)。
  • 没有 GPU-ANN 实测:Qdrant 不支持 GPU ANN,所以"GPU 在 HPC 上对 VDB 的价值"这一关键问题被回避了。
  • 没有不同 HNSW 参数扫描:ef_construction、M、ef 等关键参数对性能的影响未系统呈现。
  • 数据规模和节点数仍偏小:32 worker / 8 节点、8M 嵌入,对真实"亿级"科学 RAG 场景外推性有限。
  • 没有做 RAG 端到端对比:只到"查询向量库"层,没串联到 LLM 推理端,缺少"系统级 RAG 总体延迟"视角。
  • 代码 / 数据集 / Qdrant 配置未公开(workshop 早期评估,常见的局限)。

对工程落地的启发

  1. "加 worker = 加性能"在 HPC 上不成立。HPC 上的向量库选型与容量规划,必须以本平台的小规模实测曲线为依据,不能照搬云上 benchmark。
  2. 优先考虑存算分离架构。在 HPC 这种"机器是共享资源、节点可能随时被回收"的环境里,Vespa / Milvus 类的 compute-storage 分离架构能避免"重平衡噩梦";Qdrant 类 stateful 架构在 HPC 上需要更谨慎的扩缩容策略。
  3. GPU-ANN 是 HPC 的关键差异化能力。如果你的向量库跑在 Polaris / Aurora / Frontier 这类 GPU 丰富的系统上,优先考虑 Milvus / Weaviate / Vald 这种带 GPU ANN 的方案;Qdrant / Vespa 的 CPU-ANN 路线在 GPU 节点上属于"算力浪费"。
  4. HPC 作业调度与 vector DB 的安装包设计要联动。论文中的"orchestrator 按 queue 节奏喂任务"模式值得复用到任何跑在 Slurm/PBS 上的向量库部署。
  5. 未来值得跟踪的两条线:① chunking 后向量规模爆炸(10× 起步)对 HPC 存储与 ANN 索引的冲击;② 把"向量库 + LLM 推理"放到同一节点上做端到端 RAG serving 的可行性。

与同方向工作的关系

  • Shen et al. 2024(单 GPU RAG 上的 VDB index 对比):Qdrant 这篇把它从"单 GPU"推进到"HPC 分布式",但避开了 GPU ANN。
  • Xu et al. 2025(自研分布式 VDB vs FAISS):本文指出其"未在 HPC 上 benchmark"的缺口,并把这一缺口作为本文的动机。
  • Vector DB 选型矩阵(Vespa / Vald / Weaviate / Qdrant / Milvus):本文用一张表把五家 SOTA 的存算分离、GPU ANN 等关键能力并列展示,是 2025–2026 年选型决策最常被引用的"事实速查表"之一。
  • HPC × AI Infrastructure 趋势(Frontier / Aurora / Polaris / Alps 等):本文属于"科学 RAG / 科学搜索"子方向上的奠基性工作,与 materials informatics、bioinformatics RAG、climate RAG 趋势直接相关。

适合谁读

  • HPC 中心 / 国家超算的 AI 平台工程师:必读。是目前唯一在 Polaris 这种真超算上系统测过分布式 VDB 的论文,能直接当 VDB 选型起点。
  • 科学 RAG / 生物 RAG 团队:推荐。peS2o + BV-BRC 范式可直接套用到其他科学领域(材料、化学、天文)。
  • 向量库厂商 / 性能工程师:推荐。本文的评测方法论(orchestrator + 三阶段 + 跨架构表)可以原样复用到 Vespa、Milvus、Weaviate 的 HPC 评测。
  • RAG 系统架构师:选读。重点看"存算分离 vs stateful"那段,会直接影响你的 RAG 生产架构。
  • 学术研究者(DB / HPC / IR 交叉):推荐。属于"在 SC'25 Workshop 圈层具有奠基意义"的引用节点。

阅读建议:先读 §1 引入 + Table 1(五家 VDB 特征矩阵),再读 §3 embedding 流水线设计(体现 HPC 思维),最后读 §4 lessons learned——消融图与具体数字较稀缺,定位为"经验性论文"而非"绝对数字报告",心态要调整成"看趋势、看架构启示"而非"看精确基准"。

工程落地与核查(Jay)

事实核查摘要

  • Polaris 硬件配置:AMD EPYC Milan 7543P 32 核 / 512GB / 4×A100 / HPE Slingshot 11 — 与 Argonne Polaris 官方规格一致。
  • peS2o 规模 8,293,485 篇与 BV-BRC 22,723 查询术语:来自原文 §2/§3 陈述,可信。
  • 最大测试规模 32 worker / 8 节点:原文 §3 明确。
  • 存算分离 vs 有状态分片两种架构的描述:五家 VDB 特征矩阵属原 Paper 内容。
  • GPU-ANN 能力差异:Vald/Weaviate/Milvus 有 GPU-ANN,Qdrant/Vespa 无 — 与各项目官方文档一致。
  • ⚠️ 量化性能数字(insert throughput、query latency 曲线、scale-out 拐点):原文 v2 workshop 版本未提供精确数字,本解读未引入任何不可验证的精确数字,⚠️ 标注已到位。
  • ⚠️ chunking 缺失:论文明确"不做 chunking,单篇 1 嵌入",这是 8.3M 规模而非更大的重要约束,工程选型时需注意。

实际系统怎么用

Qdrant 在 HPC 上的典型部署路径

# 1. Slurm 作业脚本(Polaris 环境)
#!/bin/bash
#SBATCH --nodes=4
#SBATCH --ntasks-per-node=4  # 4 Qdrant worker per node
#SBATCH --gpus-per-node=4    # A100 供 embedding / 或 Qdrant 不用 GPU
#SBATCH --time=04:00:00
#SBATCH --partition=batch

module load cudnn gcc python
srun --container-image=./qdrant.sif qdrant \
  --uri http://$(hostname):6333 \
  --host 0.0.0.0 \
  --port 6333 \
  --max_request_size_mb=64

# 2. 嵌入式生成(Qwen3-Embedding-4B on A100)
python -c "
import torch
from transformers import AutoModel
model = AutoModel.from_pretrained('Qwen/Qwen3-Embedding-4B', 
    device_map='auto', torch_dtype=torch.float16)
# 自适应 orchestrator:按 Slurm queue 节奏喂 batch
from slurm_queue_orchestrator import AdaptiveQueue
orch = AdaptiveQueue(model, target_queue='batch', max_concurrent=8)
orch.run(peS2o_corpus, batch_size=512)
"

存算分离架构选型决策树

HPC 环境选向量库?
├── Slurm 作业会中断 / 节点会回收?
│   ├── YES → 优先存算分离(Vespa / Milvus)
│   └── NO(独占节点)→ Qdrant 可用,注意重平衡策略
├── 需要 GPU-ANN 加速查询?
│   ├── YES → Vald / Weaviate / Milvus
│   └── NO → Qdrant / Vespa
└── 嵌入规模 > 50M?
    ├── YES → 存算分离 + 分层索引
    └── NO → 两种均可

坑在哪里

  1. Slurm 作业中断 = Qdrant 有状态分片的噩梦:扩缩容时 shard 迁移 + HNSW 索引重建,在 Slurm 作业回收节点时触发;建议加 QDRANT__STORAGE__SNAPSHOT_INTERVAL_SEC=3600 定期快照 + 启动时从快照恢复,而不是从头重建。
  2. embedding 生成与 vector DB 写入的节律匹配:论文强调"queue 节奏"是吞吐关键——embedding 生成太快会打爆 Qdrant 写入队列,太慢则 GPU 空闲;建议用自适应 orchestrator 的 pause/resume 机制而非固定 batch size。
  3. HNSW 参数对内存影响巨大:HNSW ef_construction=200(默认)vs ef_construction=512 对 8M 嵌入的内存峰值差可达 2–3×;实测前先用 memory_profiler 扫描不同参数组合。
  4. GPFS/Lustre 文件系统行为与本地 NVMe 差异:Qdrant 的 WAL(Write-Ahead Log)和 HNSW 索引文件如果放在 GPFS 上,随机写性能会比本地 NVMe 差 5–10×;建议把 storage__storage_path 指向本地 SSD /tmp/qdrant-{job_id}/,作业结束后再备份到 GPFS。
  5. 跨节点 Qdrant 通信在 Dragonfly 网络上的拥塞:HNSW 图的跨 shard 查询会产生大量小消息(4–16 KB),在 Dragonfly 拓扑上如果多个 worker 同时向同一 shard 发起路由请求,可能触发拥塞;建议用 optimizer 配置限制并发连接数。
  6. 代码/配置未公开的复现门槛:workshop 早期评估论文,repo 链接缺失;工程团队若要复现,需自行安装 Qdrant + 申请 Polaris 机时,门槛较高——建议先在自有 HPC 沙箱环境(如 internal cluster)做小规模复现,再决定是否申请 Polaris 正式机时。
  7. 8.3M 嵌入 ≠ 真实科学 RAG 规模:论文不做 chunking(单篇 1 嵌入),而真实科学 RAG chunking 后向量规模可达 10–50×;HNSW 索引构建时间 / 内存峰值在小规模下可能低估大规模的问题。

适用场景判断

推荐用 Qdrant 类方案:小规模 HPC 科学 RAG(< 10M 向量)/ 节点可独占的 Slurm 作业 / CPU-ANN 够用的场景(延迟不敏感)。

优先选存算分离(Vespa/Milvus):多团队共享 HPC 资源 / 作业会被中断回收 / 嵌入规模 > 50M / 需要 GPU-ANN 加速。

不推荐在 HPC 上直接用云上 benchmark 数字做容量规划:论文的核心教训就是"云上线性扩展的直觉在 HPC 上不成立",必须以本平台实测为准。

⚠️ 核查声明

本节所有配置建议基于论文陈述的架构特性 + Qdrant 公开文档;Slurm 脚本为示意,未在 Polaris 环境下实测验证。生产部署前须在目标 HPC 平台上做小规模验证。精确性能数字以 SC'25 Workshop 正式 proceedings 为准。