I'm running a standalone Milvus instance with DiskANN enabled, and I'm seeing unexpectedly high RAM usage during search. My machine has 64GB of RAM, and I’m hitting OOM errors even though DiskANN is supposed to be disk-based.
My collection has around 6.88 million vectors, dimension 2304, stored as bfloat16. However, based on rough calculations, it looks like Milvus is loading the entire dataset into memory as float values (not bfloat16), because the RAM usage is approximately:
6.88M × 2304 × 4 bytes ≈ 64 GB
When I check the logs, Milvus correctly reports bfloat16 vectors and a DiskANN index, but the actual memory footprint during search is almost equal to the full collection size, which doesn’t seem like the expected “disk-first” behavior.
So my questions are:
Why is DiskANN using RAM that is nearly equal to the size of my collection? Is my configuration incorrect, or am I misunderstanding how DiskANN memory usage works? How can I debug this issue further?
Here’s a simplified version of my config:
queryNode: enableDisk: true # Enable DiskANN search common: DiskIndex: MaxDegree: 56 SearchListSize: 100 PQCodeBudgetGBRatio: 0.125 SearchCacheBudgetGBRatio: 0.1 BeamWidthRatio: 4
Any guidance on why RAM usage is so high or how to troubleshoot this would be appreciated.