벤치마크 결과 차이 파헤치기: Milvus vs. Qdrant
GenAI의 인기가 높아지면서 점점 더 많은 벡터 데이터베이스가 시장에 등장했습니다. 지난해 초, 우리는 새롭게 떠오르는 벡터 데이터베이스 기술의 성능에 대한 인사이트를 제공하기 위해 VectorDB Bench를 소개했습니다.
최근 이 분야에 깊이 관여하고 있는 개발자들이 Zilliz의 우리에게 연락해, Qdrant의 벤치마크 결과와 VectorDB Bench에서의 우리 결과 사이에 존재하는 상당한 차이를 이해하고자 했습니다. 특히 그들은 Qdrant 벤치마크 결과에서 Milvus의 부진한 성능에 대한 설명이 필요했습니다. 이러한 문의에 대응하여 Zilliz의 엔지니어링 팀은 이러한 차이의 근본 원인을 밝히기 위해 종합적인 조사를 시작했습니다.
이 블로그 게시물은 Milvus의 성능 차이에 특히 주목하면서 벤치마크 차이에 대한 심층적인 기술 분석을 제공합니다. 더 지체하지 말고, 이번 조사의 세부 내용을 살펴보겠습니다.
이유 #1: 오래된 Milvus 버전
벤치마크 결과의 차이는 주로 테스트에 사용된 Milvus 버전이 서로 다르다는 데서 비롯됩니다. 2022년 8월 10일에 게시되고 Milvus v2.1을 기반으로 한 Qdrant 벤치마크 보고서는 이후 버전에서 이루어진 중요한 발전을 충분히 반영하지 못합니다. 이 보고서의 원시 데이터를 확인해 보세요. 그 이후 Milvus는 상당한 개선을 거쳤습니다.
Milvus v2.2.1에서는 벡터 엔진(Knowhere라고도 함)을 업그레이드하고 병렬 처리 전략을 개정했습니다. 이후 v2.2.3의 업데이트에서는 검색 성능이 추가로 향상되었습니다. 우리의 백서는 이러한 발전을 강조하며, Milvus 2.2.3이 쿼리 성능(지연 시간 및 처리량)과 확장성(십억 규모 컬렉션 및 다중 복제본)에서 Milvus 2.0보다 네 배 더 빠르다는 것을 보여줍니다.
그 뒤를 이어 v2.2.9에서는 필터링 검색 성능이 개선되었습니다. v2.2.12에서는 큰 top-K 값에 대해 최소한의 오버헤드로 더 나은 검색 효율성을 도입했고, partition-key가 활성화된 시나리오나 다중 파티션 시나리오에서 쓰기 성능을 향상했으며, 더 큰 머신을 위한 CPU 사용량을 최적화했습니다. 또한 v2.3.2는 로딩 중 데이터 복사를 최소화하고 대량 삽입을 개선함으로써 중요한 성능 향상을 이뤘습니다.
이러한 지속적인 개선은 Milvus의 역량을 크게 변화시켰습니다. 그 결과 Milvus 2.1을 기반으로 한 벤치마크는 더 이상 이 기술의 현재 성능을 정확하게 반영하지 않습니다. Milvus의 최신 역량을 더 잘 이해하려면 개발자들은 테스트에 Milvus 2.3을 사용하는 VectorDB Bench를 참고하는 것이 좋습니다.
이유 #2: Milvus의 부적절한 사용
Milvus 성능에 대한 Qdrant의 벤치마크 결과는 부분적으로 Growing Segments만 사용한 방식에서 비롯됩니다. 이름에서 알 수 있듯이 Milvus는 두 가지 segment 유형인 Growing Segments와 Sealed Segments로 최적화합니다. Growing Segments는 미리 정의된 임계값에 도달할 때까지 계속 데이터를 수신합니다. 이러한 세그먼트는 빠른 데이터 입력을 우선시하고 brute-force 검색 전략을 활용하므로 쿼리 성능이 느려집니다.
반면, Sealed Segments는 더 이상 데이터를 받지 않으므로 인덱스를 가지게 되어 상당한 성능 향상을 가져옵니다. Milvus는 사전 정의된 임계값에 도달하면 Growing Segments를 자동으로 sealed 상태로 전환하므로, 이 데이터도 인덱스와 함께 사용될 때 성능 향상의 이점을 누릴 수 있습니다.
Qdrant 벤치마크는 Growing Segments 사용에만 초점을 맞췄으며, 이는 자연스럽게 보고된 더 느린 성능으로 이어졌습니다. Growing Segments에만 집중하는 것은 Milvus가 실제 애플리케이션에서 사용되는 방식과 다르며, Milvus에 포함된 세그먼트 전략의 목적을 무색하게 합니다.
또한 사용자가 데이터 최신성과 검색 효율성의 균형을 맞출 수 있도록 Milvus v2.3은 growing indexes를 위한 IVF-FLAT 인덱스 지원을 도입했습니다. 또한 Milvus v2.3.4는 Growing Segments를 위한 Binlog 인덱스를 도입했습니다. 이 업데이트를 통해 이러한 세그먼트에서 IVF 또는 Fast Scan과 같은 고급 인덱스를 사용할 수 있게 되어 검색 성능을 최대 10배까지 향상시킬 수 있습니다. 결과적으로 이 기능 개선으로 인해 이전 Qdrant 벤치마크 결과의 관련성은 더욱 낮아졌습니다.
이유 #3: Qdrant를 위한 벤치마크 중심 최적화
Qdrant가 다른 벤더 대비 뛰어난 벤치마크 성능을 보이는 것은 벤치마킹에 초대형 세그먼트를 사용하기 때문입니다. 이 전략은 벤치마크에서 주목할 만한 결과를 제공했지만, 실제 적용 가능성에는 의문이 있습니다. 벡터 데이터베이스에서 세그먼트의 크기는 매우 중요합니다. Qdrant가 대형 세그먼트에 집중한 것은 벤치마크 점수를 높였지만, 일상적인 사용에서 운영 유연성을 저해할 수 있습니다.
효과적인 벡터 데이터베이스는 다양한 워크로드와 변화하는 데이터 요구 사항을 처리해야 합니다. 초대형 세그먼트는 벤치마크에서는 효과적일 수 있지만, 실제 상황에서 일반적인 다양한 쿼리에는 어려움을 겪을 수 있습니다. 이는 관리의 복잡성을 증가시키고 리소스 요구량을 높일 수 있습니다.
초대형 세그먼트와 같은 Qdrant의 벤치마크 중심 최적화는 인상적인 성능을 보여주지만, 동적이고 실제적인 환경에서의 실용성에는 우려가 제기됩니다. 이는 실제 벡터 데이터베이스 배포에서 이러한 벤치마크 결과의 전반적인 관련성에 의문을 제기합니다.
맺음말: 공정하고 정보에 기반한 결정을 향한 길
벡터 데이터베이스와 관련해서는 신뢰할 수 있고 포괄적인 벤치마킹이 필수적입니다. Zilliz가 구축한 VectorDB Bench는 개발자에게 실제 성능 데이터를 제공합니다. 벤치마크에서 절대적인 공정성을 달성하는 것이 어렵다는 점을 인정하면서, 우리는 이 영역의 집단 지식을 풍부하게 하기 위해 우리의 인사이트를 공유합니다.
ANN Benchmark는 공정한 평가를 찾는 이들에게 유용한 도구로, 벡터 데이터베이스에 대한 표준화된 평가를 제공합니다. 이 분야의 기술이 발전함에 따라, 우리는 명확하고 투명하며 협력적인 벤치마킹 노력의 필요성을 강조합니다. 개발자는 벡터 데이터베이스를 선택할 때 정보에 기반한 결정을 내리기 위해 진실하고 정확한 벤치마크에 접근하거나 자신의 데이터에 대해 직접 테스트를 수행해야 합니다.
계속 읽기

We spent 8 years making vector databases faster. Then we stopped.
Rarely queried embeddings still need to stay searchable. See how Vector Lakebase enables on-demand vector search without always-on compute costs.

How to Install and Run OpenClaw (Previously Clawdbot/Moltbot) on Mac
Turn your Mac into an AI gateway for WhatsApp, Telegram, Discord, iMessage, and more — in under 5 minutes.

Legal Document Analysis: Harnessing Zilliz Cloud's Semantic Search and RAG for Legal Insights
Enhance legal document analysis with Zilliz Cloud’s Semantic Search and RAG. Improve accuracy, efficiency, and scalability for contracts, case law, and compliance.


