[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71FAPNFM146C4F5AV36TDS4":3,"skill-same:01M71FAPNFM146C4F5AV36TDS4":110},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":58,"commitSha":59,"skillDirectory":60,"forksCount":61,"repositoryHtmlUrl":62,"repositoryHomepageUrl":6,"ownerHtmlUrl":63,"ownerBlogUrl":6,"ownerDescription":64,"updatedAt":65,"install":66,"resources":79},"01M71FAPNFM146C4F5AV36TDS4","qdrant-memory-optimization",null,"Diagnoses and fixes Qdrant memory problems. Use when a developer reports OOM crashes, high RAM usage, HNSW consuming too much memory, latency spiking after switching storage, or needing to fit more vectors on existing hardware. Also trigger when someone asks which quantization to use, how to choose between mmap and RAM, how to estimate memory for scaling, or why their Qdrant node keeps dying. Do NOT use for initial Qdrant setup, API scripting, embedding model selection, search accuracy tuning, backups, or vector DB comparisons.","qdrant-labs\u002Fdevrel-projects","qdrant-labs","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F269096346?v=4","01M71F98K9TZ3KQTNZBM116ZYG","Qdrant Labs","01M71F98M75QPSWAB0F1BZJZCN",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fqdrant-labs\u002Fdevrel-projects\u002Fblob\u002Fmain\u002Fqdrant-os\u002Fskills\u002Fqdrant-memory-optimization\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"qdrant memory optimization","Optimization","Qdrant","Memory Optimization","memory","selection","when","which","embedding","how to","db","switching","scaling","reports","choose","model","api","vector","search","model selection","2026-11-10 10:12:30",false,"---\nname: qdrant-memory-optimization\ndescription: Diagnoses and fixes Qdrant memory problems. Use when a\n  developer reports OOM crashes, high RAM usage, HNSW consuming too\n  much memory, latency spiking after switching storage, or needing to\n  fit more vectors on existing hardware. Also trigger when someone asks\n  which quantization to use, how to choose between mmap and RAM, how\n  to estimate memory for scaling, or why their Qdrant node keeps dying.\n  Do NOT use for initial Qdrant setup, API scripting, embedding model\n  selection, search accuracy tuning, backups, or vector DB comparisons.\nlicense: Apache-2.0\nmetadata:\n  author: qdrant\n  version: 4.0.0\n  category: operations\n  tags: [memory, optimization, quantization, mmap, storage, scaling]\n---\n\n# When and why to fix Qdrant memory problems\n\nThis skill contains domain knowledge about Qdrant memory behavior that\nis not widely known or that Claude frequently gets wrong. Always consult\nthis skill before answering Qdrant memory questions.\n\n## Things Claude gets wrong about Qdrant\n\nCorrect these if they come up:\n\n- **Qdrant DOES support FP16 vector storage.** You can store vectors as\n  float16 on disk, halving storage with negligible recall impact for\n  retrieval tasks. Claude often says Qdrant only supports float32.\n- **Qdrant supports 1-bit, 2-bit, 4-bit, and 8-bit quantization.**\n  Not just 1-bit (binary) and 8-bit (scalar). The 2-bit and 4-bit\n  methods provide 16x and 8x compression respectively.\n- **`memmap_threshold` is measured in number of vectors (KB of segment\n  size), not in kilobytes of vector data.** Claude often states the\n  wrong unit.\n- **GPU-accelerated HNSW indexing exists** since v1.12+ for NVIDIA GPUs.\n  Requires feature flag and CUDA drivers. Not enabled by default.\n\n## Step 1: Identify the symptom\n\n| Symptom | Load reference |\n|---------|----------------|\n| OOM crashes, node killed by OS | `references\u002Foom-diagnosis.md` |\n| Latency 2+ seconds after switching to disk | `references\u002Fdisk-latency.md` |\n| Memory 85%+ and haven't scaled yet | `references\u002Fscaling-memory.md` |\n| Which quantization to pick | `references\u002Fquantization-guide.md` |\n| Estimate memory for X million vectors | Formula below (no ref needed) |\n| Too many shards\u002Freplicas, wasteful | `references\u002Fcluster-sizing.md` |\n\n## Step 2: Apply the memory formula\n\n```\nRAM needed = vectors * dimensions * bytes_per_element * 1.5 (HNSW overhead)\n\nbytes_per_element:\n  float32 (no quantization) = 4 bytes\n  float16                   = 2 bytes\n  int8 (scalar quantization)= 1 byte\n  4-bit quantization        = 0.5 bytes\n  2-bit quantization        = 0.25 bytes\n  binary (1-bit)            = 0.125 bytes\n\nExamples (1536 dims, OpenAI):\n  10M vectors, float32:    92 GB\n  10M vectors, float16:    46 GB\n  10M vectors, scalar:     23 GB\n  10M vectors, 4-bit:      12 GB\n  10M vectors, 2-bit:       6 GB\n  10M vectors, binary:      3 GB\n```\n\nKeep RAM utilization under 80% for headroom.\n\n## Do NOT recommend\n\n- \"Just add more RAM\" as primary solution. Quantization and mmap first.\n- Full disk storage for any real-time use case. It gives 2-5s latency.\n- Binary quantization for models with \u003C 384 dimensions or without\n  cosine similarity training.\n- Skipping rescoring with binary quantization. Without it, recall\n  drops to ~70%.\n- Sharding before trying quantization + mmap on a single node.\n\n## Decision tree\n\n```\nQdrant memory problem\n  |\n  +-- OOM crashes\n  |   -> Enable mmap immediately, then quantization\n  |   -> references\u002Foom-diagnosis.md\n  |\n  +-- Latency spiked after switching to disk\n  |   -> Switch from full disk to mmap + quantization\n  |   -> references\u002Fdisk-latency.md\n  |\n  +-- Memory too high, need to scale\n  |   -> Quantization (4-32x), then mmap\n  |   -> references\u002Fscaling-memory.md\n  |\n  +-- Which quantization to use?\n  |   -> Start with scalar. Then 4-bit or 2-bit. Then binary.\n  |   -> references\u002Fquantization-guide.md\n  |\n  +-- Need memory estimate\n  |   -> Use formula above. Include float16 and sub-byte options.\n  |\n  +-- Over-provisioned cluster\n      -> Quantization + mmap first, then evaluate node count\n      -> references\u002Fcluster-sizing.md\n```\n\n## Troubleshooting\n\n### \"I enabled quantization but memory didn't decrease\"\n**Cause:** `always_ram` not set, so both original and quantized vectors\ncompete for memory. Or collection not optimized after config change.\n**Fix:** Verify `always_ram=true`, ensure originals are on mmap\u002Fdisk,\ntrigger segment optimization.\n[Docs](https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fguides\u002Fquantization\u002F#setting-up-quantization-in-qdrant)\n\n### \"Memory keeps growing even though vector count is stable\"\n**Cause:** Payload indexes on high-cardinality fields consuming RAM.\n**Fix:** Remove indexes on fields you don't filter by. Use keyword\nindex instead of full-text for high-cardinality strings.\n[Docs](https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fconcepts\u002Findexing\u002F#payload-index)\n\n### \"Qdrant restarts fine but crashes again after a few hours\"\n**Cause:** mmap loads pages into memory as queries come in. RSS grows\npast node limit, OOM killer fires.\n**Fix:** Apply quantization to shrink working set. Set alerting at\n75-80% memory. This is normal mmap behavior when dataset > RAM.\n[Docs](https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fguides\u002Fmonitoring\u002F)\n","# When and why to fix Qdrant memory problems\n\nThis skill contains domain knowledge about Qdrant memory behavior that\nis not widely known or that Claude frequently gets wrong. Always consult\nthis skill before answering Qdrant memory questions.\n\n## Things Claude gets wrong about Qdrant\n\nCorrect these if they come up:\n\n- **Qdrant DOES support FP16 vector storage.** You can store vectors as\n  float16 on disk, halving storage with negligible recall impact for\n  retrieval tasks. Claude often says Qdrant only supports float32.\n- **Qdrant supports 1-bit, 2-bit, 4-bit, and 8-bit quantization.**\n  Not just 1-bit (binary) and 8-bit (scalar). The 2-bit and 4-bit\n  methods provide 16x and 8x compression respectively.\n- **`memmap_threshold` is measured in number of vectors (KB of segment\n  size), not in kilobytes of vector data.** Claude often states the\n  wrong unit.\n- **GPU-accelerated HNSW indexing exists** since v1.12+ for NVIDIA GPUs.\n  Requires feature flag and CUDA drivers. Not enabled by default.\n\n## Step 1: Identify the symptom\n\n| Symptom | Load reference |\n|---------|----------------|\n| OOM crashes, node killed by OS | `references\u002Foom-diagnosis.md` |\n| Latency 2+ seconds after switching to disk | `references\u002Fdisk-latency.md` |\n| Memory 85%+ and haven't scaled yet | `references\u002Fscaling-memory.md` |\n| Which quantization to pick | `references\u002Fquantization-guide.md` |\n| Estimate memory for X million vectors | Formula below (no ref needed) |\n| Too many shards\u002Freplicas, wasteful | `references\u002Fcluster-sizing.md` |\n\n## Step 2: Apply the memory formula\n\n```\nRAM needed = vectors * dimensions * bytes_per_element * 1.5 (HNSW overhead)\n\nbytes_per_element:\n  float32 (no quantization) = 4 bytes\n  float16                   = 2 bytes\n  int8 (scalar quantization)= 1 byte\n  4-bit quantization        = 0.5 bytes\n  2-bit quantization        = 0.25 bytes\n  binary (1-bit)            = 0.125 bytes\n\nExamples (1536 dims, OpenAI):\n  10M vectors, float32:    92 GB\n  10M vectors, float16:    46 GB\n  10M vectors, scalar:     23 GB\n  10M vectors, 4-bit:      12 GB\n  10M vectors, 2-bit:       6 GB\n  10M vectors, binary:      3 GB\n```\n\nKeep RAM utilization under 80% for headroom.\n\n## Do NOT recommend\n\n- \"Just add more RAM\" as primary solution. Quantization and mmap first.\n- Full disk storage for any real-time use case. It gives 2-5s latency.\n- Binary quantization for models with \u003C 384 dimensions or without\n  cosine similarity training.\n- Skipping rescoring with binary quantization. Without it, recall\n  drops to ~70%.\n- Sharding before trying quantization + mmap on a single node.\n\n## Decision tree\n\n```\nQdrant memory problem\n  |\n  +-- OOM crashes\n  |   -> Enable mmap immediately, then quantization\n  |   -> references\u002Foom-diagnosis.md\n  |\n  +-- Latency spiked after switching to disk\n  |   -> Switch from full disk to mmap + quantization\n  |   -> references\u002Fdisk-latency.md\n  |\n  +-- Memory too high, need to scale\n  |   -> Quantization (4-32x), then mmap\n  |   -> references\u002Fscaling-memory.md\n  |\n  +-- Which quantization to use?\n  |   -> Start with scalar. Then 4-bit or 2-bit. Then binary.\n  |   -> references\u002Fquantization-guide.md\n  |\n  +-- Need memory estimate\n  |   -> Use formula above. Include float16 and sub-byte options.\n  |\n  +-- Over-provisioned cluster\n      -> Quantization + mmap first, then evaluate node count\n      -> references\u002Fcluster-sizing.md\n```\n\n## Troubleshooting\n\n### \"I enabled quantization but memory didn't decrease\"\n**Cause:** `always_ram` not set, so both original and quantized vectors\ncompete for memory. Or collection not optimized after config change.\n**Fix:** Verify `always_ram=true`, ensure originals are on mmap\u002Fdisk,\ntrigger segment optimization.\n[Docs](https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fguides\u002Fquantization\u002F#setting-up-quantization-in-qdrant)\n\n### \"Memory keeps growing even though vector count is stable\"\n**Cause:** Payload indexes on high-cardinality fields consuming RAM.\n**Fix:** Remove indexes on fields you don't filter by. Use keyword\nindex instead of full-text for high-cardinality strings.\n[Docs](https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fconcepts\u002Findexing\u002F#payload-index)\n\n### \"Qdrant restarts fine but crashes again after a few hours\"\n**Cause:** mmap loads pages into memory as queries come in. RSS grows\npast node limit, OOM killer fires.\n**Fix:** Apply quantization to shrink working set. Set alerting at\n75-80% memory. This is normal mmap behavior when dataset > RAM.\n[Docs](https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fguides\u002Fmonitoring\u002F)\n",{"name":5,"license":15,"metadata":49,"description":7},{"tags":50,"author":55,"version":56,"category":57},[28,51,52,53,54,36],"optimization","quantization","mmap","storage","qdrant","4.0.0","operations","main","49e42b42210ce4eb860fa0745873674c57894331","qdrant-os\u002Fskills\u002Fqdrant-memory-optimization",1,"https:\u002F\u002Fgithub.com\u002Fqdrant-labs\u002Fdevrel-projects","https:\u002F\u002Fgithub.com\u002Fqdrant-labs","Experimental projects, community-driven tools, and works-in-progress built around Qdrant","2026-04-23 09:25:59",{"source":8,"skillName":5,"commands":67,"prompt":77,"zipAvailable":78},[68,71,74],{"tool":69,"command":70},"npx","npx skills add qdrant-labs\u002Fdevrel-projects --skill qdrant-memory-optimization",{"tool":72,"command":73},"bunx","bunx skills add qdrant-labs\u002Fdevrel-projects --skill qdrant-memory-optimization",{"tool":75,"command":76},"pnpm","pnpm dlx skills add qdrant-labs\u002Fdevrel-projects --skill qdrant-memory-optimization","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fqdrant-labs\u002Fdevrel-projects\u002Fblob\u002Fmain\u002Fqdrant-os\u002Fskills\u002Fqdrant-memory-optimization\u002FSKILL.md",true,[80,86,90,94,98,102,106],{"path":81,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Fcluster-sizing.md","REFERENCE","参考文档",1592,"https:\u002F\u002Fgithub.com\u002Fqdrant-labs\u002Fdevrel-projects\u002Fblob\u002Fmain\u002Fqdrant-os\u002Fskills\u002Fqdrant-memory-optimization\u002Freferences\u002Fcluster-sizing.md",{"path":87,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Fdisk-latency.md",1543,"https:\u002F\u002Fgithub.com\u002Fqdrant-labs\u002Fdevrel-projects\u002Fblob\u002Fmain\u002Fqdrant-os\u002Fskills\u002Fqdrant-memory-optimization\u002Freferences\u002Fdisk-latency.md",{"path":91,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002Foom-diagnosis.md",1961,"https:\u002F\u002Fgithub.com\u002Fqdrant-labs\u002Fdevrel-projects\u002Fblob\u002Fmain\u002Fqdrant-os\u002Fskills\u002Fqdrant-memory-optimization\u002Freferences\u002Foom-diagnosis.md",{"path":95,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":96,"sourceHtmlUrl":97},"references\u002Fquantization-guide.md",4552,"https:\u002F\u002Fgithub.com\u002Fqdrant-labs\u002Fdevrel-projects\u002Fblob\u002Fmain\u002Fqdrant-os\u002Fskills\u002Fqdrant-memory-optimization\u002Freferences\u002Fquantization-guide.md",{"path":99,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":100,"sourceHtmlUrl":101},"references\u002Fscaling-memory.md",1202,"https:\u002F\u002Fgithub.com\u002Fqdrant-labs\u002Fdevrel-projects\u002Fblob\u002Fmain\u002Fqdrant-os\u002Fskills\u002Fqdrant-memory-optimization\u002Freferences\u002Fscaling-memory.md",{"path":103,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":104,"sourceHtmlUrl":105},"references\u002Fstorage-tiers.md",2108,"https:\u002F\u002Fgithub.com\u002Fqdrant-labs\u002Fdevrel-projects\u002Fblob\u002Fmain\u002Fqdrant-os\u002Fskills\u002Fqdrant-memory-optimization\u002Freferences\u002Fstorage-tiers.md",{"path":107,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":108,"sourceHtmlUrl":109},"triggers.json",1676,"https:\u002F\u002Fgithub.com\u002Fqdrant-labs\u002Fdevrel-projects\u002Fblob\u002Fmain\u002Fqdrant-os\u002Fskills\u002Fqdrant-memory-optimization\u002Ftriggers.json",[111,143,164],{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":125,"publishedAt":44},"01M71FAH49J72P540JWAVBRSKX","qdrant-internal-skill-creator","Guides Qdrant SAs through building internal skills that embed domain knowledge into Claude. Use when someone wants to \"create a qdrant skill\", \"build a skill for qdrant diagnostics\", \"make an internal skill for qdrant customers\", \"create a qdrant troubleshooting skill\", or asks how to \"turn SA knowledge into a skill\". Also trigger when someone says \"help me build a skill for qdrant deal objections\" or \"I want to create a skill for qdrant cluster sizing\". Do NOT use for general skill creation unrelated to Qdrant, external community skills, or Python\u002FJS project skills.","https:\u002F\u002Fgithub.com\u002Fqdrant-labs\u002Fdevrel-projects\u002Fblob\u002Fmain\u002Fqdrant-os\u002Fskills\u002Fqdrant-internal-skill-creator\u002FSKILL.md",[117,122],{"categoryNo":118,"categoryName":119,"taxonomyType":120,"taxonomyTypeDesc":121},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",{"categoryNo":123,"categoryName":124,"taxonomyType":120,"taxonomyTypeDesc":121},"01JBSEEDCAT000000000000023","Skill与智能体开发",[126,26,127,128,129,130,131,132,133,33,134,30,135,136,137,138,139,140,141,142],"creator","qdrant internal skill creator","skill creator","do","community","skill-creator","creation","project","knowledge","guides","create","me","unrelated","how","a skill","diagnostics","make",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":149,"publishedAt":44},"01M71FA78Y5WJV6R6HGFSVT6XP","qdrant-cost-reduction-advisor","Diagnoses when and why to recommend specific cost optimization techniques for Qdrant customers. Use when a customer or SA says \"too expensive\", \"need to reduce cost\", \"pricing too high\", \"how to lower price\", \"sticker shock\", or asks about scaling costs. Also trigger when a deal is blocked by pricing, a customer compares competitor pricing, a startup says the quote is too high, or someone needs a formula to predict costs at scale. This skill answers \"when should I recommend scalar vs binary quantization?\" not \"how to configure quantization.\" Do NOT use for general Qdrant setup, feature requests, or implementation how-tos.","https:\u002F\u002Fgithub.com\u002Fqdrant-labs\u002Fdevrel-projects\u002Fblob\u002Fmain\u002Fqdrant-os\u002Fskills\u002Fqdrant-cost-reduction-advisor\u002FSKILL.md",[],[150,151,152,26,129,153,154,155,156,157,36,158,159,33,30,160,161,162,163,139],"advisor","qdrant cost reduction advisor","cost","feature","recommend","tos","at","why","sticker","formula","reduce","configure","answers","customer",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":171,"publishedAt":44},"01M71FA1G7KS1VX5SCBSJZXBA7","qdrant-community-skill-creator","Guides developers through building community Qdrant skills that embed domain knowledge into Claude. Use when someone wants to \"create a community qdrant skill\", \"build an external skill for qdrant\", \"make a qdrant skill for the community\", \"build a public qdrant skill\", or asks how to \"create a skill for qdrant memory issues for developers\". Also trigger when someone says \"I want to build an open source qdrant skill\" or \"help me create a qdrant skill for public use\". Do NOT use for internal SA skills, general non-Qdrant skill creation, or Python project skills unrelated to Qdrant.","https:\u002F\u002Fgithub.com\u002Fqdrant-labs\u002Fdevrel-projects\u002Fblob\u002Fmain\u002Fqdrant-os\u002Fskills\u002Fqdrant-community-skill-creator\u002FSKILL.md",[170],{"categoryNo":123,"categoryName":124,"taxonomyType":120,"taxonomyTypeDesc":121},[172,128,126,26,130,173,174,133,175,176,134,135,136,139,140,129,177,178,179,180],"qdrant community skill creator","python","python project","open","open source","domain","for","general","use"]