用途:诊断并修复 Qdrant 索引与数据写入过慢的问题,适用于上传慢、索引耗时过长、优化器卡住、HNSW 构建时间过高等报告。
主要能力与用法:
- 上传/写入慢:先区分客户端瓶颈(网络、批处理)与服务端瓶颈(CPU、磁盘 I/O)。客户端可用批量 upsert(每请求 64-256 个点)和 2-4 条并行上传流。服务端可增加分片(3-12 个,每分片有独立更新 worker),并在 HNSW 构建前创建负载索引。大批量初始导入时可临时把 indexing_threshold_kb 设得很高以禁用 HNSW,之后再恢复;m=0 属旧做法,不建议。注意快速无索引上传可能暂时占用更多内存并降低搜索性能。
- 优化器卡住:通过 optimizations 端点(v1.17+)查看进度;大数据集上大合并与 HNSW 重建耗时数小时属正常。检查 CPU 与磁盘 I/O(HNSW 偏 CPU,合并偏 I/O,HDD 不可行);若 optimizer_status 报错,查日志确认磁盘满或段损坏。
- HNSW 构建过慢:降低 m(默认 16,多数场景够用,32+ 很少需要),降低 ef_construct(100-200 足够),让 max_indexing_threads 与 CPU 核数成比例,可用 GPU 索引。多租户场景可按负载字段(如 tenant_id)用 payload_m 只对子集建 HNSW,跳过全局索引可显著减少构建时间。
- 额外负载索引过慢:Qdrant 会为所有负载索引构建额外 HNSW 链接,长文本等高基数字段会拖慢构建;可对特定负载索引禁用额外 HNSW 链接,改用 ACORN 等查询期策略。
限制与禁忌:不要在 HNSW 构建后再创建负载索引(会破坏可过滤向量索引);不要对已有集合用 m=0 做批量上传(可能丢弃现有 HNSW 并触发长时间重建);不要逐点上传(每请求开销占主导)。