Generated banner for Qdrant Indexing Performance Optimization
Generated logo for Qdrant Indexing Performance Optimization

Qdrant Indexing Performance Optimization

QdrantOfficialPublished by Qdrant

  • Skill
  • Tool integration
  • Data and AI
  • Apache-2.0
  • No issues found

From the author

Diagnoses and fixes slow Qdrant indexing and data ingestion. Use when someone reports 'uploads are slow', 'indexing takes forever', 'optimizer is stuck', 'HNSW build time too long', or 'data uploaded but search is bad'. Also use when optimizer status shows errors, segments won't merge, or indexing threshold questions arise.
— the description by Qdrant

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides a structured approach to troubleshooting and optimizing Qdrant performance. It covers common issues such as slow data ingestion, stalled optimizers, and excessive HNSW index build times. By distinguishing between client-side bottlenecks and server-side configuration, it offers actionable guidance on batching, sharding, hardware requirements, and parameter tuning to ensure efficient vector search operations.

What it does

  • Identifies causes for slow data ingestion and upsert API calls.
  • Provides strategies to resolve stalled optimizer processes and segment merge issues.
  • Offers configuration tuning for HNSW parameters like m and ef_construct.
  • Guides users on implementing multi-tenant indexing strategies to reduce build times.
  • Explains how to optimize payload indexing and manage extra HNSW links.
  • Outlines hardware and environment requirements for optimal indexing performance.

When to use it

  • When users report slow upload speeds or ingestion throughput.
  • When the Qdrant optimizer appears stuck or takes an unusually long time.
  • When HNSW index build times are negatively impacting overall system performance.
  • When search quality is poor immediately after data upload.
  • When configuring indexing thresholds for new collections.

Advantages

  • Reduces indexing latency through optimized batching and sharding.
  • Improves system stability by correctly configuring optimizer resources.
  • Provides clear guidance on hardware-specific optimizations like GPU acceleration.
  • Helps prevent common pitfalls like improper payload index creation.

Usage examples

“My Qdrant uploads are extremely slow, how can I speed them up?”
The agent will suggest switching to batch upserts of 64-256 points, increasing parallel upload streams, and checking server-side CPU/disk I/O.
“The HNSW index build is taking hours, what parameters should I change?”
The agent will recommend reviewing m and ef_construct values, ensuring max_indexing_threads is set correctly, or considering GPU-accelerated indexing.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/qdrant/qdrant-indexing-performance-optimization/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip qdrant-indexing-performance-optimization.zip -d .agents/skills

Documentation by Qdrant

What to Do When Qdrant Indexing Is Too Slow

Qdrant does NOT build HNSW indexes immediately. Small segments use brute-force until they exceed indexing_threshold_kb (default: 10000 KB, about 10 MB). Search during this window is slower by design, not a bug.

Uploads/Ingestion Too Slow

Use when: upload or upsert API calls are slow. Identify bottleneck: client-side (network, batching) vs server-side (CPU, disk I/O)

For client-side, optimize batching and parallelism:

  • Use batch upserts (64-256 points per request) Points API

  • Use 2-4 parallel upload streams

For server-side, optimize Qdrant configuration and indexing strategy:

  • Create more shards (3-12), each shard has an independent update worker Sharding

  • Create payload indexes before HNSW builds (needed for filterable vector index) Payload index

See Bulk upload documentation

Optimizer Stuck or Taking Too Long

Use when: optimizer running for hours, not finishing.

  • Check actual progress via optimizations endpoint (v1.17+) Optimization monitoring

  • Large merges and HNSW rebuilds legitimately take hours on big datasets

  • Check CPU and disk I/O (HNSW is CPU-bound, merging is I/O-bound, HDD is not viable)

  • If optimizer_status shows an error, check logs for disk full or corrupted segments

HNSW Build Time Too High

Use when: HNSW index build dominates total indexing time.

  • Reduce m (default 16, good for most cases, 32+ rarely needed) HNSW params

  • Reduce ef_construct (100-200 sufficient) HNSW config

  • Keep max_indexing_threads proportional to CPU cores Configuration

  • Use GPU for indexing (v1.13+): run a gpu-nvidia or gpu-amd image tag (e.g. qdrant/qdrant:gpu-nvidia-latest) on a Vulkan 1.3 GPU and set gpu.indexing: true GPU indexing

HNSW index for multi-tenant collections

If you have a multi-tenant use case where all data is split by some payload field (e.g. tenant_id), you can avoid building a global HNSW index and instead rely on payload_m to build HNSW index only for subsets of data. Skipping global HNSW index can significantly reduce indexing time.

See Multi-tenant collections for details.

Additional Payload Indexes Are Too Slow

Qdrant builds extra HNSW links for all payload indexes to ensure that quality of filtered vector search does not degrade. Some payload indexes (e.g. text fields with long texts) can have a very high number of unique values per point, which can lead to long HNSW build time.

You can disable building extra HNSW links for specific payload index and instead rely on slightly slower query-time strategies like ACORN.

Read more about disabling extra HNSW links in documentation

Read more about ACORN in documentation

What NOT to Do

  • Do not create payload indexes AFTER HNSW is built without triggering a re-index afterward -- filterable HNSW edges won't exist for the new index until segments are re-optimized

  • Do not use m=0 for bulk uploads into an existing collection, it might drop the existing HNSW and cause long reindexing

  • Do not upload one point at a time (per-request overhead dominates)

Files

SKILL.md

What to Do When Qdrant Indexing Is Too Slow

Qdrant does NOT build HNSW indexes immediately. Small segments use brute-force until they exceed indexing_threshold_kb (default: 10000 KB, about 10 MB). Search during this window is slower by design, not a bug.

Uploads/Ingestion Too Slow

Use when: upload or upsert API calls are slow. Identify bottleneck: client-side (network, batching) vs server-side (CPU, disk I/O)

For client-side, optimize batching and parallelism:

  • Use batch upserts (64-256 points per request) Points API

  • Use 2-4 parallel upload streams

For server-side, optimize Qdrant configuration and indexing strategy:

  • Create more shards (3-12), each shard has an independent update worker Sharding

  • Create payload indexes before HNSW builds (needed for filterable vector index) Payload index

See Bulk upload documentation

Optimizer Stuck or Taking Too Long

Use when: optimizer running for hours, not finishing.

  • Check actual progress via optimizations endpoint (v1.17+) Optimization monitoring

  • Large merges and HNSW rebuilds legitimately take hours on big datasets

  • Check CPU and disk I/O (HNSW is CPU-bound, merging is I/O-bound, HDD is not viable)

  • If optimizer_status shows an error, check logs for disk full or corrupted segments

HNSW Build Time Too High

Use when: HNSW index build dominates total indexing time.

  • Reduce m (default 16, good for most cases, 32+ rarely needed) HNSW params

  • Reduce ef_construct (100-200 sufficient) HNSW config

  • Keep max_indexing_threads proportional to CPU cores Configuration

  • Use GPU for indexing (v1.13+): run a gpu-nvidia or gpu-amd image tag (e.g. qdrant/qdrant:gpu-nvidia-latest) on a Vulkan 1.3 GPU and set gpu.indexing: true GPU indexing

HNSW index for multi-tenant collections

If you have a multi-tenant use case where all data is split by some payload field (e.g. tenant_id), you can avoid building a global HNSW index and instead rely on payload_m to build HNSW index only for subsets of data. Skipping global HNSW index can significantly reduce indexing time.

See Multi-tenant collections for details.

Additional Payload Indexes Are Too Slow

Qdrant builds extra HNSW links for all payload indexes to ensure that quality of filtered vector search does not degrade. Some payload indexes (e.g. text fields with long texts) can have a very high number of unique values per point, which can lead to long HNSW build time.

You can disable building extra HNSW links for specific payload index and instead rely on slightly slower query-time strategies like ACORN.

Read more about disabling extra HNSW links in documentation

Read more about ACORN in documentation

What NOT to Do

  • Do not create payload indexes AFTER HNSW is built without triggering a re-index afterward -- filterable HNSW edges won't exist for the new index until segments are re-optimized

  • Do not use m=0 for bulk uploads into an existing collection, it might drop the existing HNSW and cause long reindexing

  • Do not upload one point at a time (per-request overhead dominates)

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
Qdrant
Publisher
Qdrant (Official)
Source
qdrant/skills · skills/qdrant-performance-optimization/indexing-performance-optimization · commit 9f55f6a
Licence
Apache License 2.0 (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Qdrant.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download qdrant-indexing-performance-optimization.zip