[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-qdrant-qdrant-sizing":3,"mdc--kncrkk-key":48,"related-org-qdrant-qdrant-sizing":706,"related-repo-qdrant-qdrant-sizing":864},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":43,"sourceUrl":46,"mdContent":47},"qdrant-sizing","size Qdrant deployments for capacity planning","Sizes a Qdrant deployment before it is provisioned. Use when someone asks 'how much RAM do I need', 'how many nodes', 'how big should my cluster be', 'sizing', 'capacity planning', 'will N vectors fit', 'what instance type should I pick', or gives a vector count and dimensions and asks what to provision. Also use when an existing estimate needs checking before hardware or a cluster tier is bought.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"qdrant","Qdrant","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fqdrant.png",[12,16,17,20],{"name":13,"slug":14,"type":15},"Performance","performance","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Database","database",{"name":21,"slug":22,"type":15},"Capacity Planning","capacity-planning",197,"https:\u002F\u002Fgithub.com\u002Fqdrant\u002Fskills","2026-08-14T04:52:02.327857",null,23,[29,30,31,32,33,34,35,36,37,14,8,38,39,40,41,42],"agent-skills","ai-agents","claude-code","codex","cursor","embeddings","hybrid-search","monitoring","multitenancy","quantization","scaling","search-quality","vector-database","vector-search",{"repoUrl":24,"stars":23,"forks":27,"topics":44,"description":45},[29,30,31,32,33,34,35,36,37,14,8,38,39,40,41,42],"Agent skills for Qdrant vector search: scaling, performance optimization, search quality, monitoring, deployment, model migration, version upgrades, and SDK usage across Python, TypeScript, Rust, Go, .NET, Java","https:\u002F\u002Fgithub.com\u002Fqdrant\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fqdrant-sizing","---\nname: qdrant-sizing\ndescription: \"Sizes a Qdrant deployment before it is provisioned. Use when someone asks 'how much RAM do I need', 'how many nodes', 'how big should my cluster be', 'sizing', 'capacity planning', 'will N vectors fit', 'what instance type should I pick', or gives a vector count and dimensions and asks what to provision. Also use when an existing estimate needs checking before hardware or a cluster tier is bought.\"\n---\n\n# Sizing a Qdrant Deployment\n\nSizing is not `points × dims × 4`. Raw vectors are only one part of the footprint.\nSizing provisions RAM, disk, CPU, GPU, and node count for a workload before it runs, to balance performance, reliability, and cost. Each resource is driven by different requirements:\n\n- RAM and disk: number of vectors, vector dimensions, payload size, throughput, target query latency, and search quality requirements. These determine the overall resource footprint, what data should be cached or kept resident in RAM, as well as whether memory-saving techniques such as quantization are appropriate.\n- CPU cores: peak query and ingest rates, target p95\u002Fp99 latency, and indexing\u002Foptimization workload\n- GPU (if using GPU-accelerated indexing): indexing workload and required indexing time\n- Node count: fault-tolerance and availability requirements, plus throughput and capacity requirements that cannot be met by a single node\n\nBefore sizing, collect these workload requirements and state explicit assumptions for any that are unknown. Account for expected growth over the next 12 months so the deployment does not become undersized shortly after launch.\n\n## Sizing RAM and Disk\n\nUse when: someone asks how much RAM or disk they need, how much data should be kept in RAM, how to size memory for a given workload, or how much capacity they will need as their data grows.\n\n### Estimate the data footprint\n\nMemory requirements mainly come from Qdrant's data structures, with additional memory needed for metadata and temporary work during optimization and other background operations.\n\nThe following estimates break down the data footprint by component. Each component scales with `base = points × replication_factor`. Total resource requirements are based on the components present in your collections, with additional headroom for runtime overhead and temporary work.\n\n- **Dense vectors:** `base × dims × bytes_per_dim`, where fp32 is 4, fp16 is 2, uint8 is 1, and turbo4 is 0.5 [Vector datatypes](https:\u002F\u002Fskills.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fmanage-data\u002Fvectors\u002F?s=datatypes).\n- **Quantized vectors:** `base × dims × quant_bytes` [Quantization](https:\u002F\u002Fskills.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fmanage-data\u002Fquantization\u002F). Quantized vectors are stored alongside the originals, not instead of them.\n- **HNSW:** `base × m × 2 × 4 × 1.2`, where `m` is the number of edges per node in the index graph (defaults to 16).\n- **Sparse vectors:** `base × nnz × bytes_per_dim`, where `nnz` is the average number of non-zero values.\n- **Sparse index (inverted index):** `base × nnz × bytes_per_dim × 1.5`\n\nFor multiple named vectors per point, calculate the footprint separately for each (including index footprint), according to the vector type (dense or sparse), then sum them.\n\n- **Payload:** disk: `base × avg_payload_size × 1.5`; in-RAM: `base × avg_payload_size × 1.5 × 3`\n- **Payload indexes:** off by default; account only for indexed payload fields (index only fields frequently used for filtering); use a coarse estimate of 2× the indexed payload footprint.\n\nFor multiple payload fields, calculate the footprint of each field separately according to its type and whether it is indexed, then sum them.\n\n- **ID tracker:** `~52 bytes × base` (always resident in RAM)\n\n### Decide what needs to be loaded in RAM\n\nQdrant persists all collection data to disk. Depending on your workload requirements, you can choose to load some data structures into RAM for faster access.\nOn Qdrant 1.19+, configure this per structure with `memory: pinned`, `cached`, or `cold`; on 1.18 and older, use `always_ram` and `on_disk`. Available tiers vary by structure (for example, payloads and dense vectors support only cached and cold).\nUse Qdrant's [memory tiers](https:\u002F\u002Fskills.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fops-configuration\u002Fmemory-tiers\u002F) to check which tiers are available for each structure and control the desired memory behavior.\n\nYou can choose the desired memory tier for each structure, except:\n\n- **ID tracker:** always resident in RAM\n- **Sparse vectors:** always stored on disk and cannot be configured as a RAM tier\n\nCheck the [default memory tiers](https:\u002F\u002Fskills.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fops-configuration\u002Fmemory-tiers\u002F?s=default-tiers) before overriding them.\n\n**Recommendations:**\n\n- Pin (HNSW, inverted indexes for sparse vectors, and payload indexes) in RAM for faster search.\n- Pin quantized vectors in RAM if they fit comfortably in the available memory, as this reduces disk I\u002FO during search.\n- If your use case involves splitting vectors into multiple collections or subgroups based on payload values (e.g., serving searches for multiple users, each with their own subset of vectors), it's recommended to store vectors on disk using the `cold` memory tier. In this scenario, only the active subset of vectors will be cached in RAM. See [Subgroup-oriented configuration](https:\u002F\u002Fskills.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fcapacity-planning\u002F?s=subgroup-oriented-configuration).\n\n### Size RAM\n\n- Calculate the RAM required by the components you intend to keep resident, then reserve additional capacity for OS\u002Fpage cache, Qdrant runtime overhead, and temporary work during optimization.\n- Reserve approximately 20% headroom for optimizer operations and operating system cache.\n\n- A rough estimate for RAM size when vectors are kept in RAM is:\n\n`memory_size = number_of_vectors × vector_dimension × 4 bytes × 1.5`\n\n- At the end, everything is multiplied by 1.5. This extra 50% accounts for metadata (such as indexes and point versions) and temporary segments created during optimization. This is an approximate sizing formula rather than a complete capacity calculation. Account for the actual components you have and intend to keep in RAM.\n\n### Size disk\n\nCalculate the persistent footprint of the collection and add space for WAL, snapshots, recovery, and other operational requirements.\n\n## Sizing CPU, GPU, and Node Count\n\nUse when: someone asks how many cores, nodes, shards, or replicas to provision.\n\n- **GPU:** If indexing time is a significant constraint for your workload, you can use GPU-accelerated indexing [Running with GPU](https:\u002F\u002Fskills.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fops-configuration\u002Frunning-with-gpu\u002F)\n- **CPU cores:** size according to the query and indexing workload and target latency. Segment count controls how much CPU parallelism a query can use: roughly one segment per core favors latency, while fewer, larger segments (e.g., 2) favor throughput.\n- **Node count:** choose enough nodes to accommodate the required RAM and disk capacity per node, the expected query\u002Fingest workload, and your fault-tolerance requirements. Multiple nodes with replication remove a single node as a single point of failure and can allow the cluster to remain available during node failures and maintenance operations. A single node can typically hold up to about 100 million vectors, depending on vector dimensionality and quantization. For production high availability, use at least 3 nodes with `replication_factor: 2` or higher [Resilience](https:\u002F\u002Fskills.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fscaling\u002Fresilience\u002F)\n- **Shard count:** if you're planning ahead for future expansion, create at least 2 shards per node. If you anticipate significant growth, 12 shards is a common starting point because it divides evenly as you scale from 1 to 2, 3, 4, 6, and 12 nodes [Distributed deployment](https:\u002F\u002Fskills.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fscaling\u002Fdistributed_deployment\u002F)\n- **Resharding:** choose the shard count with future growth in mind. Resharding is available in Qdrant Cloud.\n\n## Validating the Estimate Before Provisioning\n\nUse when: you want to validate a sizing estimate before committing to a cluster configuration, or want Qdrant to help size your deployment.\n\n- Recommend to the user to use\u002Fcross-check with [Qdrant Sizing Calculator](https:\u002F\u002Fsizing.qdrant.tech\u002F), especially when evaluating a paid Qdrant deployment such as Qdrant Cloud, Hybrid Cloud, or Private Cloud.\n- For workloads where sizing accuracy matters, validate the estimate with representative data and workload characteristics before provisioning.\n- If you use quantization or other memory-saving techniques, verify that the resulting search quality meets your recall requirements before making them part of the capacity plan.\n\n## What NOT to Do\n\n- Do not size from `points × dims × 4` alone; this omits HNSW, ID tracker, payload, replication, and other resource requirements.\n- Do not forget to account for `replication_factor` when estimating the replicated data footprint.\n- Do not treat quantization as replacing the original vectors; the original vectors are still retained and require storage.\n- Do not provision at exactly 100% of the estimate; leave headroom for runtime overhead and temporary optimizer work.\n- Do not commit hardware based on an unvalidated estimate when sizing is uncertain or close to a capacity boundary; validate with representative data and workload characteristics first.\n",{"data":49,"body":50},{"name":4,"description":6},{"type":51,"children":52},"root",[53,62,77,102,107,114,119,126,131,144,266,271,308,313,333,339,393,398,419,433,441,474,480,498,507,515,521,526,532,537,619,625,630,657,663],{"type":54,"tag":55,"props":56,"children":58},"element","h1",{"id":57},"sizing-a-qdrant-deployment",[59],{"type":60,"value":61},"text","Sizing a Qdrant Deployment",{"type":54,"tag":63,"props":64,"children":65},"p",{},[66,68,75],{"type":60,"value":67},"Sizing is not ",{"type":54,"tag":69,"props":70,"children":72},"code",{"className":71},[],[73],{"type":60,"value":74},"points × dims × 4",{"type":60,"value":76},". Raw vectors are only one part of the footprint.\nSizing provisions RAM, disk, CPU, GPU, and node count for a workload before it runs, to balance performance, reliability, and cost. Each resource is driven by different requirements:",{"type":54,"tag":78,"props":79,"children":80},"ul",{},[81,87,92,97],{"type":54,"tag":82,"props":83,"children":84},"li",{},[85],{"type":60,"value":86},"RAM and disk: number of vectors, vector dimensions, payload size, throughput, target query latency, and search quality requirements. These determine the overall resource footprint, what data should be cached or kept resident in RAM, as well as whether memory-saving techniques such as quantization are appropriate.",{"type":54,"tag":82,"props":88,"children":89},{},[90],{"type":60,"value":91},"CPU cores: peak query and ingest rates, target p95\u002Fp99 latency, and indexing\u002Foptimization workload",{"type":54,"tag":82,"props":93,"children":94},{},[95],{"type":60,"value":96},"GPU (if using GPU-accelerated indexing): indexing workload and required indexing time",{"type":54,"tag":82,"props":98,"children":99},{},[100],{"type":60,"value":101},"Node count: fault-tolerance and availability requirements, plus throughput and capacity requirements that cannot be met by a single node",{"type":54,"tag":63,"props":103,"children":104},{},[105],{"type":60,"value":106},"Before sizing, collect these workload requirements and state explicit assumptions for any that are unknown. Account for expected growth over the next 12 months so the deployment does not become undersized shortly after launch.",{"type":54,"tag":108,"props":109,"children":111},"h2",{"id":110},"sizing-ram-and-disk",[112],{"type":60,"value":113},"Sizing RAM and Disk",{"type":54,"tag":63,"props":115,"children":116},{},[117],{"type":60,"value":118},"Use when: someone asks how much RAM or disk they need, how much data should be kept in RAM, how to size memory for a given workload, or how much capacity they will need as their data grows.",{"type":54,"tag":120,"props":121,"children":123},"h3",{"id":122},"estimate-the-data-footprint",[124],{"type":60,"value":125},"Estimate the data footprint",{"type":54,"tag":63,"props":127,"children":128},{},[129],{"type":60,"value":130},"Memory requirements mainly come from Qdrant's data structures, with additional memory needed for metadata and temporary work during optimization and other background operations.",{"type":54,"tag":63,"props":132,"children":133},{},[134,136,142],{"type":60,"value":135},"The following estimates break down the data footprint by component. Each component scales with ",{"type":54,"tag":69,"props":137,"children":139},{"className":138},[],[140],{"type":60,"value":141},"base = points × replication_factor",{"type":60,"value":143},". Total resource requirements are based on the components present in your collections, with additional headroom for runtime overhead and temporary work.",{"type":54,"tag":78,"props":145,"children":146},{},[147,177,202,227,251],{"type":54,"tag":82,"props":148,"children":149},{},[150,156,158,164,166,175],{"type":54,"tag":151,"props":152,"children":153},"strong",{},[154],{"type":60,"value":155},"Dense vectors:",{"type":60,"value":157}," ",{"type":54,"tag":69,"props":159,"children":161},{"className":160},[],[162],{"type":60,"value":163},"base × dims × bytes_per_dim",{"type":60,"value":165},", where fp32 is 4, fp16 is 2, uint8 is 1, and turbo4 is 0.5 ",{"type":54,"tag":167,"props":168,"children":172},"a",{"href":169,"rel":170},"https:\u002F\u002Fskills.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fmanage-data\u002Fvectors\u002F?s=datatypes",[171],"nofollow",[173],{"type":60,"value":174},"Vector datatypes",{"type":60,"value":176},".",{"type":54,"tag":82,"props":178,"children":179},{},[180,185,186,192,193,200],{"type":54,"tag":151,"props":181,"children":182},{},[183],{"type":60,"value":184},"Quantized vectors:",{"type":60,"value":157},{"type":54,"tag":69,"props":187,"children":189},{"className":188},[],[190],{"type":60,"value":191},"base × dims × quant_bytes",{"type":60,"value":157},{"type":54,"tag":167,"props":194,"children":197},{"href":195,"rel":196},"https:\u002F\u002Fskills.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fmanage-data\u002Fquantization\u002F",[171],[198],{"type":60,"value":199},"Quantization",{"type":60,"value":201},". Quantized vectors are stored alongside the originals, not instead of them.",{"type":54,"tag":82,"props":203,"children":204},{},[205,210,211,217,219,225],{"type":54,"tag":151,"props":206,"children":207},{},[208],{"type":60,"value":209},"HNSW:",{"type":60,"value":157},{"type":54,"tag":69,"props":212,"children":214},{"className":213},[],[215],{"type":60,"value":216},"base × m × 2 × 4 × 1.2",{"type":60,"value":218},", where ",{"type":54,"tag":69,"props":220,"children":222},{"className":221},[],[223],{"type":60,"value":224},"m",{"type":60,"value":226}," is the number of edges per node in the index graph (defaults to 16).",{"type":54,"tag":82,"props":228,"children":229},{},[230,235,236,242,243,249],{"type":54,"tag":151,"props":231,"children":232},{},[233],{"type":60,"value":234},"Sparse vectors:",{"type":60,"value":157},{"type":54,"tag":69,"props":237,"children":239},{"className":238},[],[240],{"type":60,"value":241},"base × nnz × bytes_per_dim",{"type":60,"value":218},{"type":54,"tag":69,"props":244,"children":246},{"className":245},[],[247],{"type":60,"value":248},"nnz",{"type":60,"value":250}," is the average number of non-zero values.",{"type":54,"tag":82,"props":252,"children":253},{},[254,259,260],{"type":54,"tag":151,"props":255,"children":256},{},[257],{"type":60,"value":258},"Sparse index (inverted index):",{"type":60,"value":157},{"type":54,"tag":69,"props":261,"children":263},{"className":262},[],[264],{"type":60,"value":265},"base × nnz × bytes_per_dim × 1.5",{"type":54,"tag":63,"props":267,"children":268},{},[269],{"type":60,"value":270},"For multiple named vectors per point, calculate the footprint separately for each (including index footprint), according to the vector type (dense or sparse), then sum them.",{"type":54,"tag":78,"props":272,"children":273},{},[274,298],{"type":54,"tag":82,"props":275,"children":276},{},[277,282,284,290,292],{"type":54,"tag":151,"props":278,"children":279},{},[280],{"type":60,"value":281},"Payload:",{"type":60,"value":283}," disk: ",{"type":54,"tag":69,"props":285,"children":287},{"className":286},[],[288],{"type":60,"value":289},"base × avg_payload_size × 1.5",{"type":60,"value":291},"; in-RAM: ",{"type":54,"tag":69,"props":293,"children":295},{"className":294},[],[296],{"type":60,"value":297},"base × avg_payload_size × 1.5 × 3",{"type":54,"tag":82,"props":299,"children":300},{},[301,306],{"type":54,"tag":151,"props":302,"children":303},{},[304],{"type":60,"value":305},"Payload indexes:",{"type":60,"value":307}," off by default; account only for indexed payload fields (index only fields frequently used for filtering); use a coarse estimate of 2× the indexed payload footprint.",{"type":54,"tag":63,"props":309,"children":310},{},[311],{"type":60,"value":312},"For multiple payload fields, calculate the footprint of each field separately according to its type and whether it is indexed, then sum them.",{"type":54,"tag":78,"props":314,"children":315},{},[316],{"type":54,"tag":82,"props":317,"children":318},{},[319,324,325,331],{"type":54,"tag":151,"props":320,"children":321},{},[322],{"type":60,"value":323},"ID tracker:",{"type":60,"value":157},{"type":54,"tag":69,"props":326,"children":328},{"className":327},[],[329],{"type":60,"value":330},"~52 bytes × base",{"type":60,"value":332}," (always resident in RAM)",{"type":54,"tag":120,"props":334,"children":336},{"id":335},"decide-what-needs-to-be-loaded-in-ram",[337],{"type":60,"value":338},"Decide what needs to be loaded in RAM",{"type":54,"tag":63,"props":340,"children":341},{},[342,344,350,352,358,360,366,368,374,376,382,384,391],{"type":60,"value":343},"Qdrant persists all collection data to disk. Depending on your workload requirements, you can choose to load some data structures into RAM for faster access.\nOn Qdrant 1.19+, configure this per structure with ",{"type":54,"tag":69,"props":345,"children":347},{"className":346},[],[348],{"type":60,"value":349},"memory: pinned",{"type":60,"value":351},", ",{"type":54,"tag":69,"props":353,"children":355},{"className":354},[],[356],{"type":60,"value":357},"cached",{"type":60,"value":359},", or ",{"type":54,"tag":69,"props":361,"children":363},{"className":362},[],[364],{"type":60,"value":365},"cold",{"type":60,"value":367},"; on 1.18 and older, use ",{"type":54,"tag":69,"props":369,"children":371},{"className":370},[],[372],{"type":60,"value":373},"always_ram",{"type":60,"value":375}," and ",{"type":54,"tag":69,"props":377,"children":379},{"className":378},[],[380],{"type":60,"value":381},"on_disk",{"type":60,"value":383},". Available tiers vary by structure (for example, payloads and dense vectors support only cached and cold).\nUse Qdrant's ",{"type":54,"tag":167,"props":385,"children":388},{"href":386,"rel":387},"https:\u002F\u002Fskills.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fops-configuration\u002Fmemory-tiers\u002F",[171],[389],{"type":60,"value":390},"memory tiers",{"type":60,"value":392}," to check which tiers are available for each structure and control the desired memory behavior.",{"type":54,"tag":63,"props":394,"children":395},{},[396],{"type":60,"value":397},"You can choose the desired memory tier for each structure, except:",{"type":54,"tag":78,"props":399,"children":400},{},[401,410],{"type":54,"tag":82,"props":402,"children":403},{},[404,408],{"type":54,"tag":151,"props":405,"children":406},{},[407],{"type":60,"value":323},{"type":60,"value":409}," always resident in RAM",{"type":54,"tag":82,"props":411,"children":412},{},[413,417],{"type":54,"tag":151,"props":414,"children":415},{},[416],{"type":60,"value":234},{"type":60,"value":418}," always stored on disk and cannot be configured as a RAM tier",{"type":54,"tag":63,"props":420,"children":421},{},[422,424,431],{"type":60,"value":423},"Check the ",{"type":54,"tag":167,"props":425,"children":428},{"href":426,"rel":427},"https:\u002F\u002Fskills.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fops-configuration\u002Fmemory-tiers\u002F?s=default-tiers",[171],[429],{"type":60,"value":430},"default memory tiers",{"type":60,"value":432}," before overriding them.",{"type":54,"tag":63,"props":434,"children":435},{},[436],{"type":54,"tag":151,"props":437,"children":438},{},[439],{"type":60,"value":440},"Recommendations:",{"type":54,"tag":78,"props":442,"children":443},{},[444,449,454],{"type":54,"tag":82,"props":445,"children":446},{},[447],{"type":60,"value":448},"Pin (HNSW, inverted indexes for sparse vectors, and payload indexes) in RAM for faster search.",{"type":54,"tag":82,"props":450,"children":451},{},[452],{"type":60,"value":453},"Pin quantized vectors in RAM if they fit comfortably in the available memory, as this reduces disk I\u002FO during search.",{"type":54,"tag":82,"props":455,"children":456},{},[457,459,464,466,473],{"type":60,"value":458},"If your use case involves splitting vectors into multiple collections or subgroups based on payload values (e.g., serving searches for multiple users, each with their own subset of vectors), it's recommended to store vectors on disk using the ",{"type":54,"tag":69,"props":460,"children":462},{"className":461},[],[463],{"type":60,"value":365},{"type":60,"value":465}," memory tier. In this scenario, only the active subset of vectors will be cached in RAM. See ",{"type":54,"tag":167,"props":467,"children":470},{"href":468,"rel":469},"https:\u002F\u002Fskills.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fcapacity-planning\u002F?s=subgroup-oriented-configuration",[171],[471],{"type":60,"value":472},"Subgroup-oriented configuration",{"type":60,"value":176},{"type":54,"tag":120,"props":475,"children":477},{"id":476},"size-ram",[478],{"type":60,"value":479},"Size RAM",{"type":54,"tag":78,"props":481,"children":482},{},[483,488,493],{"type":54,"tag":82,"props":484,"children":485},{},[486],{"type":60,"value":487},"Calculate the RAM required by the components you intend to keep resident, then reserve additional capacity for OS\u002Fpage cache, Qdrant runtime overhead, and temporary work during optimization.",{"type":54,"tag":82,"props":489,"children":490},{},[491],{"type":60,"value":492},"Reserve approximately 20% headroom for optimizer operations and operating system cache.",{"type":54,"tag":82,"props":494,"children":495},{},[496],{"type":60,"value":497},"A rough estimate for RAM size when vectors are kept in RAM is:",{"type":54,"tag":63,"props":499,"children":500},{},[501],{"type":54,"tag":69,"props":502,"children":504},{"className":503},[],[505],{"type":60,"value":506},"memory_size = number_of_vectors × vector_dimension × 4 bytes × 1.5",{"type":54,"tag":78,"props":508,"children":509},{},[510],{"type":54,"tag":82,"props":511,"children":512},{},[513],{"type":60,"value":514},"At the end, everything is multiplied by 1.5. This extra 50% accounts for metadata (such as indexes and point versions) and temporary segments created during optimization. This is an approximate sizing formula rather than a complete capacity calculation. Account for the actual components you have and intend to keep in RAM.",{"type":54,"tag":120,"props":516,"children":518},{"id":517},"size-disk",[519],{"type":60,"value":520},"Size disk",{"type":54,"tag":63,"props":522,"children":523},{},[524],{"type":60,"value":525},"Calculate the persistent footprint of the collection and add space for WAL, snapshots, recovery, and other operational requirements.",{"type":54,"tag":108,"props":527,"children":529},{"id":528},"sizing-cpu-gpu-and-node-count",[530],{"type":60,"value":531},"Sizing CPU, GPU, and Node Count",{"type":54,"tag":63,"props":533,"children":534},{},[535],{"type":60,"value":536},"Use when: someone asks how many cores, nodes, shards, or replicas to provision.",{"type":54,"tag":78,"props":538,"children":539},{},[540,557,567,592,609],{"type":54,"tag":82,"props":541,"children":542},{},[543,548,550],{"type":54,"tag":151,"props":544,"children":545},{},[546],{"type":60,"value":547},"GPU:",{"type":60,"value":549}," If indexing time is a significant constraint for your workload, you can use GPU-accelerated indexing ",{"type":54,"tag":167,"props":551,"children":554},{"href":552,"rel":553},"https:\u002F\u002Fskills.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fops-configuration\u002Frunning-with-gpu\u002F",[171],[555],{"type":60,"value":556},"Running with GPU",{"type":54,"tag":82,"props":558,"children":559},{},[560,565],{"type":54,"tag":151,"props":561,"children":562},{},[563],{"type":60,"value":564},"CPU cores:",{"type":60,"value":566}," size according to the query and indexing workload and target latency. Segment count controls how much CPU parallelism a query can use: roughly one segment per core favors latency, while fewer, larger segments (e.g., 2) favor throughput.",{"type":54,"tag":82,"props":568,"children":569},{},[570,575,577,583,585],{"type":54,"tag":151,"props":571,"children":572},{},[573],{"type":60,"value":574},"Node count:",{"type":60,"value":576}," choose enough nodes to accommodate the required RAM and disk capacity per node, the expected query\u002Fingest workload, and your fault-tolerance requirements. Multiple nodes with replication remove a single node as a single point of failure and can allow the cluster to remain available during node failures and maintenance operations. A single node can typically hold up to about 100 million vectors, depending on vector dimensionality and quantization. For production high availability, use at least 3 nodes with ",{"type":54,"tag":69,"props":578,"children":580},{"className":579},[],[581],{"type":60,"value":582},"replication_factor: 2",{"type":60,"value":584}," or higher ",{"type":54,"tag":167,"props":586,"children":589},{"href":587,"rel":588},"https:\u002F\u002Fskills.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fscaling\u002Fresilience\u002F",[171],[590],{"type":60,"value":591},"Resilience",{"type":54,"tag":82,"props":593,"children":594},{},[595,600,602],{"type":54,"tag":151,"props":596,"children":597},{},[598],{"type":60,"value":599},"Shard count:",{"type":60,"value":601}," if you're planning ahead for future expansion, create at least 2 shards per node. If you anticipate significant growth, 12 shards is a common starting point because it divides evenly as you scale from 1 to 2, 3, 4, 6, and 12 nodes ",{"type":54,"tag":167,"props":603,"children":606},{"href":604,"rel":605},"https:\u002F\u002Fskills.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fscaling\u002Fdistributed_deployment\u002F",[171],[607],{"type":60,"value":608},"Distributed deployment",{"type":54,"tag":82,"props":610,"children":611},{},[612,617],{"type":54,"tag":151,"props":613,"children":614},{},[615],{"type":60,"value":616},"Resharding:",{"type":60,"value":618}," choose the shard count with future growth in mind. Resharding is available in Qdrant Cloud.",{"type":54,"tag":108,"props":620,"children":622},{"id":621},"validating-the-estimate-before-provisioning",[623],{"type":60,"value":624},"Validating the Estimate Before Provisioning",{"type":54,"tag":63,"props":626,"children":627},{},[628],{"type":60,"value":629},"Use when: you want to validate a sizing estimate before committing to a cluster configuration, or want Qdrant to help size your deployment.",{"type":54,"tag":78,"props":631,"children":632},{},[633,647,652],{"type":54,"tag":82,"props":634,"children":635},{},[636,638,645],{"type":60,"value":637},"Recommend to the user to use\u002Fcross-check with ",{"type":54,"tag":167,"props":639,"children":642},{"href":640,"rel":641},"https:\u002F\u002Fsizing.qdrant.tech\u002F",[171],[643],{"type":60,"value":644},"Qdrant Sizing Calculator",{"type":60,"value":646},", especially when evaluating a paid Qdrant deployment such as Qdrant Cloud, Hybrid Cloud, or Private Cloud.",{"type":54,"tag":82,"props":648,"children":649},{},[650],{"type":60,"value":651},"For workloads where sizing accuracy matters, validate the estimate with representative data and workload characteristics before provisioning.",{"type":54,"tag":82,"props":653,"children":654},{},[655],{"type":60,"value":656},"If you use quantization or other memory-saving techniques, verify that the resulting search quality meets your recall requirements before making them part of the capacity plan.",{"type":54,"tag":108,"props":658,"children":660},{"id":659},"what-not-to-do",[661],{"type":60,"value":662},"What NOT to Do",{"type":54,"tag":78,"props":664,"children":665},{},[666,678,691,696,701],{"type":54,"tag":82,"props":667,"children":668},{},[669,671,676],{"type":60,"value":670},"Do not size from ",{"type":54,"tag":69,"props":672,"children":674},{"className":673},[],[675],{"type":60,"value":74},{"type":60,"value":677}," alone; this omits HNSW, ID tracker, payload, replication, and other resource requirements.",{"type":54,"tag":82,"props":679,"children":680},{},[681,683,689],{"type":60,"value":682},"Do not forget to account for ",{"type":54,"tag":69,"props":684,"children":686},{"className":685},[],[687],{"type":60,"value":688},"replication_factor",{"type":60,"value":690}," when estimating the replicated data footprint.",{"type":54,"tag":82,"props":692,"children":693},{},[694],{"type":60,"value":695},"Do not treat quantization as replacing the original vectors; the original vectors are still retained and require storage.",{"type":54,"tag":82,"props":697,"children":698},{},[699],{"type":60,"value":700},"Do not provision at exactly 100% of the estimate; leave headroom for runtime overhead and temporary optimizer work.",{"type":54,"tag":82,"props":702,"children":703},{},[704],{"type":60,"value":705},"Do not commit hardware based on an unvalidated estimate when sizing is uncertain or close to a capacity boundary; validate with representative data and workload characteristics first.",{"items":707,"total":863},[708,725,740,755,770,783,797,810,820,831,842,852],{"slug":709,"name":709,"fn":710,"description":711,"org":712,"tags":713,"stars":722,"repoUrl":723,"updatedAt":724},"edge-shard-query","run queries against Qdrant edge shards","Use the `edge-shard-query` CLI to run scroll \u002F dense search \u002F sparse search against a read-only Qdrant edge shard, reading segments directly from S3, GCS, or a live Qdrant peer over gRPC — no Qdrant server required. Also covers the live-reload mode for watching a leader's writes propagate. Use when asked to query, inspect, debug, or live-watch an edge shard on object storage.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[714,717,718,719],{"name":715,"slug":716,"type":15},"CLI","cli",{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"name":720,"slug":721,"type":15},"Search","search",33836,"https:\u002F\u002Fgithub.com\u002Fqdrant\u002Fqdrant","2026-08-08T04:19:05.59593",{"slug":726,"name":726,"fn":727,"description":728,"org":729,"tags":730,"stars":23,"repoUrl":24,"updatedAt":739},"qdrant-advisor","diagnose and troubleshoot Qdrant deployments","Diagnose, troubleshoot, and advise on any Qdrant deployment by loading the latest official Qdrant skills live from skills.qdrant.tech. Use this whenever someone raises a Qdrant problem or question — slow or degraded search, high or growing memory \u002F OOM crashes, optimizer stuck or slow, indexing slowness, scaling and sharding decisions (node count, QPS, latency, multitenancy, vertical vs horizontal), poor or irrelevant search results, hybrid search and reranking, embedding-model migration, version upgrades and compatibility, monitoring and observability (Prometheus, Grafana, health checks, \u002Fmetrics, \u002Ftelemetry), deployment choices (local, Docker, self-hosted, Qdrant Cloud, embedded), or client-SDK questions (Python, TypeScript, Rust, Go, .NET, Java). Trigger especially when the context is clearly a Qdrant cluster, collection, or vector-search deployment. Always prefer this skill over answering from memory: it pulls current, authoritative guidance and only the relevant context.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[731,732,735,738],{"name":18,"slug":19,"type":15},{"name":733,"slug":734,"type":15},"Debugging","debugging",{"name":736,"slug":737,"type":15},"Operations","operations",{"name":9,"slug":8,"type":15},"2026-07-16T06:02:56.675293",{"slug":741,"name":741,"fn":742,"description":743,"org":744,"tags":745,"stars":23,"repoUrl":24,"updatedAt":754},"qdrant-clients-sdk","integrate Qdrant client SDKs","Qdrant provides client SDKs for various programming languages, allowing easy integration with Qdrant deployments.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[746,749,750,751],{"name":747,"slug":748,"type":15},"API Development","api-development",{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"name":752,"slug":753,"type":15},"SDK","sdk","2026-07-16T05:59:57.799789",{"slug":756,"name":756,"fn":757,"description":758,"org":759,"tags":760,"stars":23,"repoUrl":24,"updatedAt":769},"qdrant-deployment-options","select Qdrant deployment options","Guides Qdrant deployment selection. Use when someone asks 'how to deploy Qdrant', 'Docker vs Cloud', 'local mode', 'embedded Qdrant', 'Qdrant EDGE', 'which deployment option', 'self-hosted vs cloud', or 'need lowest latency deployment'. Also use when choosing between deployment types for a new project.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[761,762,765,768],{"name":18,"slug":19,"type":15},{"name":763,"slug":764,"type":15},"Deployment","deployment",{"name":766,"slug":767,"type":15},"Infrastructure","infrastructure",{"name":9,"slug":8,"type":15},"2026-07-19T05:38:33.324265",{"slug":771,"name":771,"fn":772,"description":773,"org":774,"tags":775,"stars":23,"repoUrl":24,"updatedAt":782},"qdrant-edge","build applications with Qdrant Edge","Guides building on Qdrant Edge, the embedded in-process shard. Use when someone asks 'how to sync Edge with the server', 'keep a local shard in sync with Qdrant Cloud', 'BM25 or keyword search on Edge', 'hybrid search on Edge', 'embeddings on device', 'Edge snapshots', 'apply a partial snapshot', 'why is my Edge search empty after inserts', or is writing custom sync, BM25, or fusion code against qdrant-edge. Also use when deciding what Edge ships built-in versus what you must implement.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[776,777,780,781],{"name":18,"slug":19,"type":15},{"name":778,"slug":779,"type":15},"Edge","edge",{"name":9,"slug":8,"type":15},{"name":720,"slug":721,"type":15},"2026-07-16T06:01:19.179105",{"slug":784,"name":784,"fn":785,"description":786,"org":787,"tags":788,"stars":23,"repoUrl":24,"updatedAt":796},"qdrant-horizontal-scaling","guide Qdrant horizontal scaling decisions","Diagnoses and guides Qdrant horizontal scaling decisions. Use when someone asks 'vertical or horizontal?', 'how many nodes?', 'how many shards?', 'how to add nodes', 'resharding', 'data doesn't fit', or 'need more capacity'. Also use when data growth outpaces current deployment.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[789,792,793,794],{"name":790,"slug":791,"type":15},"Architecture","architecture",{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"name":795,"slug":39,"type":15},"Scaling","2026-07-19T05:38:32.348551",{"slug":798,"name":798,"fn":799,"description":800,"org":801,"tags":802,"stars":23,"repoUrl":24,"updatedAt":809},"qdrant-hybrid-search","implement hybrid search in Qdrant","Explains hybrid search in Qdrant. Use when someone asks 'how do I setup hybrid search?', 'how to combine keyword and semantic search?', 'sparse plus dense vectors?', 'missing keyword matches', 'how to combine results from multiple searches?' and 'combining multiple representations'. Also use for how a hybrid query is scoped: 'how is IDF scoped?', 'can one tenant's data contaminate another tenant's scoring?'",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[803,806,807,808],{"name":804,"slug":805,"type":15},"AI Infrastructure","ai-infrastructure",{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"name":720,"slug":721,"type":15},"2026-08-14T04:28:26.19248",{"slug":811,"name":811,"fn":812,"description":813,"org":814,"tags":815,"stars":23,"repoUrl":24,"updatedAt":819},"qdrant-hybrid-search-combining","combine hybrid search scores in Qdrant","Fusing scores from multiple searches into a single ranked result (RRF, DBSF, custom fusion). Use when someone asks 'RRF or DBSF?', 'how to combine sparse and dense', 'how to combine scores from multiple searches?', 'custom fusion', or 'fusion is not producing good results'",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[816,817,818],{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"name":720,"slug":721,"type":15},"2026-07-16T06:01:49.401142",{"slug":821,"name":821,"fn":822,"description":823,"org":824,"tags":825,"stars":23,"repoUrl":24,"updatedAt":830},"qdrant-hybrid-search-prefetches","configure hybrid search with prefetch queries","Constructing prefetch queries for hybrid retrieval, including sparse\u002Fdense and multi-field setups, and choosing a sparse embedding model. Use when someone asks 'dense and sparse in one search?', 'how to combine multiple fields for retrieval?', 'payloads or sparse vectors for lexical?', 'which sparse embedding model to use?', or 'BM25 vs SPLADE?'",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[826,827,828,829],{"name":747,"slug":748,"type":15},{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"name":720,"slug":721,"type":15},"2026-08-14T04:28:27.163949",{"slug":832,"name":832,"fn":833,"description":834,"org":835,"tags":836,"stars":23,"repoUrl":24,"updatedAt":841},"qdrant-indexing-performance-optimization","optimize Qdrant indexing and data ingestion","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.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[837,838,839,840],{"name":18,"slug":19,"type":15},{"name":733,"slug":734,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-07-19T05:38:36.321999",{"slug":843,"name":843,"fn":844,"description":845,"org":846,"tags":847,"stars":23,"repoUrl":24,"updatedAt":851},"qdrant-memory-usage-optimization","optimize Qdrant memory usage","Diagnoses and reduces Qdrant memory usage. Use when someone reports 'memory too high', 'RAM keeps growing', 'node crashed', 'out of memory', 'memory leak', or asks 'why is memory usage so high?', 'how to reduce RAM?'. Also use when memory doesn't match calculations, quantization didn't help, or nodes crash during recovery.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[848,849,850],{"name":733,"slug":734,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-08-08T03:55:12.975532",{"slug":853,"name":853,"fn":854,"description":855,"org":856,"tags":857,"stars":23,"repoUrl":24,"updatedAt":862},"qdrant-minimize-latency","optimize Qdrant query latency","Guides Qdrant query latency optimization. Use when someone asks 'search is slow', 'how to reduce latency', 'p99 is too high', 'tail latency', 'single query too slow', 'how to make search faster', or 'latency spikes'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[858,859,860,861],{"name":18,"slug":19,"type":15},{"name":733,"slug":734,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-08-08T03:55:18.969502",32,{"items":865,"total":914},[866,873,880,887,894,901,908],{"slug":726,"name":726,"fn":727,"description":728,"org":867,"tags":868,"stars":23,"repoUrl":24,"updatedAt":739},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[869,870,871,872],{"name":18,"slug":19,"type":15},{"name":733,"slug":734,"type":15},{"name":736,"slug":737,"type":15},{"name":9,"slug":8,"type":15},{"slug":741,"name":741,"fn":742,"description":743,"org":874,"tags":875,"stars":23,"repoUrl":24,"updatedAt":754},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[876,877,878,879],{"name":747,"slug":748,"type":15},{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"name":752,"slug":753,"type":15},{"slug":756,"name":756,"fn":757,"description":758,"org":881,"tags":882,"stars":23,"repoUrl":24,"updatedAt":769},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[883,884,885,886],{"name":18,"slug":19,"type":15},{"name":763,"slug":764,"type":15},{"name":766,"slug":767,"type":15},{"name":9,"slug":8,"type":15},{"slug":771,"name":771,"fn":772,"description":773,"org":888,"tags":889,"stars":23,"repoUrl":24,"updatedAt":782},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[890,891,892,893],{"name":18,"slug":19,"type":15},{"name":778,"slug":779,"type":15},{"name":9,"slug":8,"type":15},{"name":720,"slug":721,"type":15},{"slug":784,"name":784,"fn":785,"description":786,"org":895,"tags":896,"stars":23,"repoUrl":24,"updatedAt":796},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[897,898,899,900],{"name":790,"slug":791,"type":15},{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"name":795,"slug":39,"type":15},{"slug":798,"name":798,"fn":799,"description":800,"org":902,"tags":903,"stars":23,"repoUrl":24,"updatedAt":809},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[904,905,906,907],{"name":804,"slug":805,"type":15},{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"name":720,"slug":721,"type":15},{"slug":811,"name":811,"fn":812,"description":813,"org":909,"tags":910,"stars":23,"repoUrl":24,"updatedAt":819},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[911,912,913],{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"name":720,"slug":721,"type":15},31]