
Zvec基准测试数据解读千万向量QPS测试配置与结果全解析【免费下载链接】zvecA lightweight, lightning-fast, in-process vector database项目地址: https://gitcode.com/GitHub_Trending/zve/zvecZvec 是一款轻量级、闪电快速的进程内向量数据库无需单独部署服务即可在本地运行。本文带你完整解读 Zvec 官方基准测试Benchmark的测试配置以 COHERE 千万级1000 万条向量数据集为例拆解 QPS 压测的每一步参数——数据集准备、HNSW 索引构建、Int8 量化、召回率验证与并发压测帮你快速读懂千万向量 QPS 数据背后的含义并在自己的环境中复现测试。一、测试环境千万向量基准测试用的什么数据Zvec 的基准测试基于业界公认的COHERE 10M 数据集这是向量检索领域最主流的评测基准之一项目配置数据集规模1000 万条向量另有 100 万条的 Medium 集向量维度768 维距离度量余弦相似度Cosine查询集1000 条真实查询向量标准答案预计算的 Top 邻居neighbors.txt数据集以 Parquet 格式分发官方提供了预处理好的二进制文件与 Docker 镜像省去繁重的下载与转换工作。数据准备脚本位于 tools/core/convert_cohere_parquet.py负责将 Parquet 中的向量导出为文本格式。 小提示二进制向量文件由txt2vecs工具生成源码见 tools/core/txt2vecs.cc。1000 万条 768 维 float32 向量约 30GB这也是千万向量压测的真实体量。二、三大核心指标QPS、召回率、延迟读懂基准测试先理解三个指标的关系QPSQueries Per Second单位时间内完成的查询数衡量吞吐能力RecallK召回率返回的 TopK 结果中命中标准答案的比例衡量结果质量Latency Percentiles延迟分位P50/P90/P99 等分位延迟衡量响应稳定性。向量数据库的核心权衡就藏在这三者之中QPS 越高召回率往往越低。Zvec 的压测工具会同时输出这三类数据实现又快又准的平衡分析。延迟分位是怎么算的压测结果由 tools/core/bench_result.h 汇总统计它会按100 微秒为一个桶记录每次查询耗时最终输出Process query: 16000000, total process time: 1234567ms, duration: 25000ms, max: 12.3ms, min: 0.2ms Avg latency: 0.1ms qps: 640000.0 25 Percentile: 0.1 ms 50 Percentile: 0.1 ms 75 Percentile: 0.2 ms 90 Percentile: 0.3 ms 95 Percentile: 0.4 ms 99 Percentile: 0.8 ms解读要点qps: 640000表示 16 线程并发下每秒处理 64 万次查询而P99 1ms意味着 99% 的查询都在 1 毫秒内返回——这正是毫秒级响应承诺的数据支撑。三、QPS 测试配置逐项拆解基准测试的配置以 YAML 文件驱动官方示例配置摘自 tools/core/README.md可以分为构建配置和搜索配置两部分。1️⃣ 索引构建配置Builder参数示例值作用BuilderClassHnswStreamer使用 HNSW 流式索引支持边写边查ConverterNameCosineInt8Converter向量 Int8 量化体积降为 1/4MetricNameCosine余弦距离度量ThreadCount1616 线程并行构建为什么选HNSW Int8HNSW 是图索引的性能标杆适合高召回场景Int8 量化将 768 维 float323KB/条压缩到 int8768B/条索引内存占用直降约 75%是千万向量规模下的关键优化。2️⃣ 压测搜索配置Searcher参数示例值说明TopK1, 10, 50, 100分档测试不同 K 值的性能曲线BenchThreadCount1616 线程并发压测BenchIterCount10 亿迭代上限配合 CtrlC 优雅停止ef250HNSW 搜索候选池大小召回与速度的核心旋钮CompareByIdtrue按 ID 比对标准答案其中ef是最值得关注的参数ef 越大搜索范围越广、召回越高但单查询耗时也会上升。官方选用ef250是在召回率与 QPS 之间取得的平衡点。四、三步复现从构建索引到跑出 QPS整个基准测试流程由三个命令行工具串联源码均在 tools/core/ 目录下第 1 步构建索引—— 使用local_build_original加载构建配置将千万向量灌入 HNSW 索引16 线程并行。第 2 步验证召回率——recall_original加载 1000 条查询与标准答案逐条比对输出 Recall1/10/50/100。源码见 tools/core/recall_original.cc。第 3 步执行压测——bench_original开启 16 线程对同一批查询持续轰炸统计 QPS 与延迟分位。核心压测逻辑在 tools/core/bench_original.cc线程池并发执行、按查询计数汇总耗时。构建流程实现可参考 tools/core/local_builder_original.cc压测主框架为 tools/core/bench.cc。五、影响 QPS 的 4 个关键调优点读懂配置后你可以根据自己的场景调优量化精度float32 → int8乃至 int4量化牺牲少量精度换取数倍的 QPS 与内存收益。Zvec 在 src/turbo/quantizer/ 中提供了 fp16、int8、int4、PQ 等多种量化器实现。搜索参数 ef低 QPS 场景调大 ef 换召回高并发场景调小 ef 换吞吐。并发线程数BenchThreadCount 建议与 CPU 核数对齐16 核即开 16 线程。CPU 指令集编译时开启-DENABLE_SKYLAKEONAVX2/AVX512距离计算由 SIMD 加速向量距离内核实现位于 src/ailego/math/ 与 src/turbo/distance/覆盖 AVX512、NEON 等多套优化路径。六、总结测试维度结论规模COHERE 10M768 维余弦度量索引HNSW Int8 量化内存占用降约 75%吞吐16 线程并发QPS 达数十万量级延迟平均亚毫秒P99 通常 1ms质量ef250 保障高召回率Zvec 用进程内 HNSW 量化 SIMD的组合拳在千万向量规模上实现了 QPS 与召回率的漂亮平衡。如果你想在自己的硬件上验证这份数据只需按 tools/core/README.md 中的步骤依次执行构建、召回验证与压测三个工具即可——配置项都已为你梳理在上表中直接照抄即可复现。【免费下载链接】zvecA lightweight, lightning-fast, in-process vector database项目地址: https://gitcode.com/GitHub_Trending/zve/zvec创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考