메이투안이 Milvus에서 100개 이상의 사용 사례를 지원하는 10B 규모 검색 플랫폼을 구축한 방법

10B+ 벡터
프로덕션에서는 Milvus에서 직접 실행합니다.
한 컬렉션에 2B+
재설계 없이 성장한 가장 큰 단일 워크로드
P99 8.1 ms
~1억 개 벡터, 768차원 벤치마크에서 약 1,000 QPS 및 97% 이상의 재현율(recall)
100+ 사용 사례
하나의 공유 Milvus 플랫폼에서: RAG, 에이전트 메모리 등
"메이투안이 AI에 전념했을 때, 우리는 벡터를 위해 처음부터 구축된 검색 기반이 필요했습니다. 우리는 오픈소스 Milvus를 선택해 모든 팀이 활용할 수 있는 플랫폼으로 전환했습니다. 1년 후, 이 플랫폼은 100억 개 이상의 벡터를 보유하며 RAG부터 에이전트 메모리까지 가장 빠르게 성장하는 AI 워크로드를 실행하고 있습니다."
The Meituan Database Team
Meituan 소개
Meituan은 아시아 최대 기술 기업 중 하나로, 지역 서비스를 위한 선도적인 온디맨드 플랫폼을 운영합니다. 슈퍼앱은 음식 배달, 매장 내 다이닝 및 소비자 리뷰, 호텔·여행 예약, 식료품, 즉시 소매까지 아우르며, 이 모든 것은 방대한 지역 상인과 라이더 네트워크를 통해 이루어집니다.
AI는 고객 질문에 답하는 것부터 상인에게 더 스마트한 도구를 제공하는 것까지, Meituan이 이 마켓플레이스를 서비스하는 방식의 핵심이 되었습니다. 현재 100개 이상의 비즈니스 시나리오에서 RAG, 에이전트 메모리, 멀티모달 검색을 사용하며, 각각은 그 아래에서 빠르고 필터링된 벡터 검색을 필요로 합니다. Meituan의 데이터베이스 팀은 이 공유 데이터 기반을 오픈소스 Milvus에서 운영합니다.
과제
벡터 검색이 Meituan 전반으로 확장되면서 데이터베이스 팀은 점점 더 다양한 워크로드를 지원해야 했습니다. 다양한 애플리케이션은 벡터 데이터 유형, 인덱스 알고리즘, 차원, 검색 성능에 대해 서로 다른 요구 사항을 가지고 있었고, 데이터 세트 크기는 수백만에서 수십억 개의 벡터에 이르렀습니다.
Meituan은 쿼리 성능, 리소스 효율성, 운영 비용의 균형을 유지하면서 이러한 다양한 요구 사항을 대규모로 충족할 수 있는 공유 인프라가 필요했습니다. 처음에는 Elasticsearch에서 벡터 검색을 실행했지만, 곧 Meituan의 성능 및 비용 요구 사항을 충족할 수 없게 되었습니다. Elasticsearch는 벡터를 4,096차원으로 제한하고, 소수의 벡터 유형만 지원했으며, 디스크 인덱스가 없어 모든 벡터가 메모리에 있어야 했습니다. 수억 개의 벡터 규모에서는 Meituan의 가장 크고 빠르게 성장하는 데이터 세트를 온라인으로 유지하는 비용이 가장 많이 들었습니다. 팀은 인덱스 유형이 대규모 데이터 세트를 RAM이 아닌 디스크에 보관할 수 있는 목적에 맞게 설계된 벡터 검색 엔진이 필요했습니다.
Milvus를 선택한 이유
데이터베이스 팀은 주요 벡터 검색 엔진을 기능, 성능, 생태계 측면에서 평가한 후 오픈소스 Milvus를 선택했습니다. 그 결정에는 세 가지 이유가 있었습니다.
기능. Milvus는 매우 다양한 워크로드 전반에 걸쳐 Meituan이 필요로 하는 벡터 데이터 유형과 인덱스 알고리즘의 폭을 제공했으며, 초대형 컬렉션을 위한 디스크 기반 인덱스도 포함했습니다. 또한 스토리지-컴퓨팅 분리 아키텍처는 대규모 벡터 워크로드를 효율적으로 확장할 수 있는 더 큰 유연성을 팀에 제공했습니다.
성능. 팀이 HNSW 인덱스에서 1억 개의 768차원 벡터를 대상으로 자체 벤치마크를 실시한 결과, Milvus는 P99 지연 시간 8.1ms, 약 1,000 QPS를 유지했으며 재현율은 97% 이상이었습니다.
생태계. Milvus는 또한 Meituan의 광범위한 오픈소스 AI 스택에 자연스럽게 맞아떨어졌습니다. 성숙한 SDK, 문서, 그리고 활발한 커뮤니티(46k+ GitHub 스타)를 제공했으며, 내부 팀이 채택한 일부 오픈소스 프레임워크는 이미 Milvus를 직접 지원했습니다. 이는 통합 마찰을 줄이고 새로운 벡터 검색 시나리오를 플랫폼에 도입하기 쉽게 만들었습니다.
솔루션
Meituan은 주요 벡터 검색 엔진을 평가한 후, 성장하는 AI 워크로드를 위한 벡터 네이티브 기반으로 Milvus를 선택했으며, 기존 Elasticsearch 배포는 더 넓은 이중 엔진 아키텍처의 일부로 유지했습니다. 이러한 벡터 사용 사례는 RAG 및 지식 베이스, 에이전트 메모리, 고객 서비스 및 진단 에이전트, 추천, 멀티모달 검색에 걸쳐 있습니다. 대부분은 비슷한 형태를 띠고 있습니다: 수백만에서 수천만 개의 벡터, 768~1,536차원, 초당 약 100개 쿼리. 소수는 훨씬 더 큰데, 예를 들어 20억 개의 벡터를 넘어선 워크로드가 있습니다.
각 팀이 자체 Milvus를 운영하는 대신, 데이터베이스 팀은 모든 것을 하나의 공유 플랫폼에 올려 어느 팀이든 벡터 데이터베이스 전문가가 되지 않아도 프로덕션 준비가 된 클러스터를 얻을 수 있게 했습니다. 이렇게 다양한 워크로드를 단일 플랫폼에서 서비스하는 것은 네 가지로 귀결되었습니다: 수십억 개의 벡터를 저비용으로 보관하고, 한 테넌트가 다른 테넌트를 끌어내리지 못하도록 격리하며, 비즈니스 중대 워크로드에 대해 안정성을 유지하고, 소규모 팀이 모두를 지원할 수 있을 만큼 충분한 셀프 서비스를 제공하는 것입니다.
Meituan's AI retrieval platform on Milvus.PNG
디스크 인덱스로 수십억 개의 벡터를 저비용으로 유지하기
비용 절감의 핵심은 Milvus의 디스크 인덱스입니다. DiskANN을 사용하면 대용량 컬렉션이 메모리 대신 대부분 디스크에 저장되므로 20억 개의 벡터 워크로드도 합리적인 비용으로 유지할 수 있습니다. Meituan의 하드웨어에서는 이러한 인덱스가 표준 배포가 쿼리 노드에 제공하는 것보다 더 많은 로컬 디스크를 필요로 했기 때문에, 팀은 전용 볼륨을 마운트하고 Milvus 운영자를 StatefulSets로 실행하여 각 노드가 재시작 후에도 자체 디스크를 유지하도록 했습니다. 운영자가 오픈 소스이기 때문에 이는 간단한 변경이었고, 그래서 Meituan이 디스크 인덱스를 그렇게 적극적으로 활용할 수 있는 것입니다.
많은 테넌트 간 격리: 제한된 폭발 범위를 가진 공용 및 전용 클러스터
Milvus는 많은 테넌트가 각자의 데이터베이스에서 하나의 클러스터를 공유할 수 있게 하므로, Meituan은 소규모 워크로드의 긴 꼬리를 공용 클러스터에 묶어 활용도를 높게 유지합니다. 더 큰 워크로드는 전용 클러스터를 받습니다: 백만 개가 넘는 벡터, 높은 QPS가 필요한 작업, 비즈니스 중대 작업, 또는 자체 튜닝이 필요한 작업이라면 말이죠.
공유의 한 가지 위험은 폭발 범위, 즉 문제를 일으키는 테넌트 하나가 이웃 테넌트까지 끌어내리는 것입니다. 그래서 Meituan은 공용 클러스터에 들어가는 테넌트 수를 제한하고, 새 워크로드를 배치하기 전에 그 작업의 규모, 중요성, 데이터를 평가합니다.
중요 워크로드를 위한 안정성: 빠른 장애 조치, 그리고 CDC 대기
Milvus는 스토리지와 컴퓨팅을 분리하므로 데이터 자체는 이미 안전합니다(객체 스토리지에 세 개의 복사본으로 저장됩니다). 그래서 Meituan의 안정성 작업은 실제로 서비스에 계속 접근 가능하게 유지하는 데 초점이 맞춰져 있습니다. 클라이언트는 프록시 노드를 통해 Milvus에 접속하며, 프록시가 죽으면 트래픽은 빠르게 이동해야 합니다. Meituan은 자체 Milvus SDK(Python 및 Java)에 장애 조치를 구축했습니다: 컨트롤 플레인이 어떤 프록시가 정상인지 추적하고 그 목록을 SDK에 제공하므로, 클라이언트는 살아있는 프록시로 바로 이동하고, 실패한 프록시는 종료되기 전에 목록에서 빠집니다. 이를 통해 모든 클러스터 앞에 로드 밸런서를 두고 그에 따른 오버헤드를 감수할 필요가 없어졌습니다.
재해 복구를 위해 Meituan은 클러스터의 노드를 여러 데이터 센터에 분산합니다. 먼저 프록시와 코디네이터, 그다음 미들웨어까지, 모든 구성 요소가 가용 영역에 걸쳐 균형을 이루고 여분(N+1)을 갖도록 하는 것을 목표로 합니다. 정말로 중단될 수 없는 워크로드의 경우 Milvus의 CDC를 사용해 대기 클러스터를 동기화 상태로 유지하며, 기본 클러스터가 완전히 실패할 경우 인수할 준비를 합니다.
셀프 서비스, 그래서 하나의 작은 팀이 모두를 지원한다
Meituan의 플랫폼은 워크로드를 소유한 팀에게 일상적인 제어 권한을 넘겨줍니다: 시각적 Collection 관리(생성, 삭제, 로드, 해제), Milvus 기본 API에 대한 원클릭 접근, 벡터+스칼라 하이브리드 검색, 모니터링 대시보드, 데이터베이스 수준 접근 제어. 백업은 데이터베이스 단위로 자동으로 실행되며, 데이터 동기화 채널은 Hive 및 RDS 같은 소스에서 벡터를 가져오거나 재해 복구용으로 내보냅니다. 일상적인 작업이 사용자에게 넘어가므로 온콜 부담이 낮게 유지되고, 작은 플랫폼 팀이 전체 시스템을 건강하게 유지합니다.
결과 및 이점
프로덕션의 100억+ 벡터, 약 1년 만에 0에서 시작. 이제 하나의 표준화된 플랫폼이 100+ 사용 사례에 대해 대규모로 Milvus를 실행하며, 자동화된 클러스터 제공, 백업, 셀프 서비스 덕분에 운영 팀을 소규모로 유지합니다.
단일 워크로드에서 빌리언 규모, 헤드룸 확보. 가장 큰 단일 워크로드는 재설계 없이 20억 개 이상의 벡터로 성장했습니다.
P99 8.1 ms, ~1,000 QPS에서 recall >97% — 팀의 1억 벡터, 768차원 벤치마크 기준. 이는 대부분의 100 QPS 미만 워크로드가 필요로 하는 것보다 훨씬 많은 헤드룸입니다.
회사에서 가장 빠르게 성장하는 AI 워크로드가 여기서 실행됩니다. RAG와 에이전트 메모리가 성장을 주도하므로, Meituan은 각 팀이 자체적으로 구축하는 대신 공유 검색 인프라를 구축합니다.
빌리언 규모 컬렉션도 비용 효율적으로 유지됩니다. 대부분의 컬렉션을 RAM 대신 디스크에 보관하면 20억 벡터 워크로드를 저렴하게 실행할 수 있으며, Milvus가 오픈소스이기 때문에 팀은 자체 디스크 인덱스로 비용을 더욱 절감하고 있습니다.
전략적 성과는 분명합니다. 벡터 검색은 더 이상 각 Meituan 팀이 혼자 해결할 문제가 아닙니다. 표준화되고 신뢰할 수 있는 플랫폼이 되어, 그 위의 AI 팀들이 인프라 대신 제품을 만드는 데 집중할 수 있습니다.
다음 단계
Meituan은 세 가지 측면에서 Milvus에 대한 투자를 강화하고 있습니다. 새 클러스터는 이제 Milvus 2.6을 기본값으로 사용하며, 팀은 내장 임베딩 함수 등의 기능을 채택하면서 기존 워크로드를 이전하고 있습니다. 커널 측면에서는 빌리언 규모에서 비용 효율성을 더 높이기 위해 Milvus 2.6 기반의 자체 구축 양자화 기반 디스크 인덱스를 개발하고 있습니다. 또한 에이전트가 회사 전반으로 확산됨에 따라, 팀은 Milvus와 그 생태계 위에 플랫폼 수준의 에이전트 메모리 역량을 구축하여 내부 팀이 메모리와 지식 베이스 빌딩 블록을 기본으로 제공받을 수 있게 하고 있습니다. 이 각각의 노력은 Milvus에서 실행되는 워크로드를 성장시키며, 팀은 앞으로도 커뮤니티에 지속적으로 기여할 계획입니다.
"Meituan은 오픈소스를 발전시키는 엔지니어링 중심 회사입니다. 대부분의 팀이 도달하지 못하는 규모로 Milvus를 운영하며, 배운 것을 다시 환원합니다. Milvus가 Meituan의 AI 워크로드 아래에 있는 벡터 기반이라는 점을 자랑스럽게 생각하며, 그들의 팀 및 커뮤니티와 함께 계속 구축해 나가기를 기대합니다." — James Luan, CTO, Zilliz
Milvus 시작하기 또는 관리형 Milvus 서비스 체험하기
Milvus는 세계에서 가장 널리 채택된 오픈소스 벡터 데이터베이스로, 빌리언 규모의 유사도 검색을 위해 설계되었으며 노트북에서 분산 클러스터까지 실행될 수 있습니다. Meituan 플랫폼 뒤에서 사용되는 것과 동일한 벡터 네이티브 엔진을 제공합니다. 전체 인덱스 유형, 하이브리드 벡터-스칼라 검색, 확장 가능한 스토리지-컴퓨팅 분리 아키텍처를 갖추고 있습니다.
GitHub에서 Milvus를 시작하고, 문서를 읽고, Discord에서 커뮤니티에 참여하세요.
완전 관리형 서비스로 동일한 엔진이 필요하다면, 유지보수 없는 운영과 엔터프라이즈 보안을 갖춘 Zilliz Cloud는 Milvus를 기반으로 구축되었으며 해당 API와 호환됩니다.


