Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

最佳实践

本页整理在生产环境使用 VSAG 的经验性建议,作为参数手册与性能调优的补充。

索引选型

场景推荐索引理由
中等规模(≤ 1000 万)纯内存、对召回/延迟要求极高hgraph统一的高质量图索引,支持多种量化与 Tune
兼容既有 HNSW 部署hnsw接口与参数最贴近 hnswlib
10 亿级向量、内存受限diskann内存只放 PQ,完整向量在磁盘
候选召回层 / 粗排ivf训练后即可大规模并行
小规模、需要 100% 精度brute_force暴力搜索,作为召回率 baseline
多租户 / 分区数据pyramid一个索引内部多棵子图,支持按 tag 检索
稀疏向量(BM25 / SPLADE 类)sindi专为稀疏向量设计

详细参数参见 索引参数

构建阶段

  • 先确定 metricl2 / ip / cosine 不可在构建后变更。
  • ef_construction:典型 200~500。过小召回不足;过大构建显著变慢。
  • max_degree / M:典型 16~48。越大召回越高、内存也越高。
  • 量化策略:延迟敏感场景建议 sq8pq;精度敏感建议 fp32fp16
  • 并行构建:使用自定义 ThreadPool(见 examples/cpp/203_custom_thread_pool.cpp)以控制并发度。

搜索阶段

  • ef_search:典型 topk ~ topk * 10,可按 QPS / 召回率做 grid search。
  • 批量搜索:多查询合并可提升缓存命中;参考 examples/cpp/205_*(若提供)或业务侧批量化。
  • Filter:使用内置 Filterexamples/cpp/301_feature_filter.cpp),不要在结果侧二次过滤。
  • 临时 Allocator:高并发在线服务建议每线程一份 arena allocator,见 内存管理

调优

部署

  • 推荐使用官方 Docker 镜像,详见 安装
  • 生产二进制建议选择对应 ABI 的发布包:dist-pre-cxx11-abidist-cxx11-abidist-libcxx(见 编译构建)。
  • 开启 VSAG_ENABLE_INTEL_MKL=ON 可在 Intel CPU 上获得额外加速;
  • DiskANN 建议使用 NVMe SSD,并配合 VSAG_ENABLE_LIBAIO=ON

可观测

  • Index::GetMemoryUsage() 暴露运行时内存;
  • 搜索路径上可用自定义 Loggerexamples/cpp/202_custom_logger.cpp)接入业务日志;
  • 结合 eval_performance 将关键指标写入 InfluxDB 进行长期监控。