세계 최고 수준의 음악 플랫폼이 Milvus로 1억 개 이상의 노래를 사운드와 가사로 검색하는 방법

100M+ 트랙
전체 카탈로그가 내장되어 있으며, 롱테일을 포함한 검색이 가능합니다.
~10 ms P99
수십억 개의 오디오 임베딩을 초당 수백 건의 검색으로 매칭합니다.
소리와 의미로
허밍, 클립, 또는 의역된 가사로 노래를 찾아보세요. 제목만으로 찾는 것이 아니라요.
음악 플랫폼 소개
이 플랫폼은 세계 최대 음악 스트리밍 서비스 중 하나로, 1억 개 이상의 트랙 카탈로그와 100여 개 국가에 걸친 수억 명의 리스너를 보유하고 있습니다.
이 플랫폼의 리스너들은 재생 버튼을 누르는 것 이상의 일을 합니다. 방 건너편에서 재생 중인 노래를 식별하기 위해 휴대폰을 들어 올리고, 반쯤 기억나는 가사를 입력해 트랙을 찾으며, 저녁을 채우기 위해 "비슷한 노래"를 요청하고, 권리 확인을 위해 카탈로그와 대조해야 하는 자신의 오디오를 업로드합니다. 이러한 각각의 검색은 전체 카탈로그를 대상으로 하며, 올바른 트랙을 즉시 찾아야 합니다. 그 검색 레이어는 Milvus에서 실행됩니다.
과제
플랫폼의 카탈로그는 1억 개가 넘는 트랙에 이르며, 리스너들의 검색 방식은 한 번에 세 가지 요구 사항을 만들어 냈습니다.
음악 검색은 키워드만이 아니라 소리와 의미를 기반으로 작동해야 합니다. 리스너는 멜로디를 흥얼거리거나, 스피커에서 5초를 재생하거나, 가사를 원래 쓰인 대로가 아니라 기억나는 대로 입력합니다. 매칭할 제목이나 태그가 없습니다. 플랫폼은 노래가 어떻게 들리는지와 가사가 무엇을 의미하는지를 기준으로 작동하는 검색이 필요했습니다. 키워드 매칭만으로는 불가능한 일입니다.
카탈로그는 수십억 개의 벡터이며, 모든 것이 검색 가능한 상태로 유지되어야 합니다. 소리 기반 매칭은 모든 트랙을 짧은 세그먼트로 나누고 각각을 임베딩하는 것을 의미합니다. 따라서 1억 개가 넘는 트랙이 수십억 개의 오디오 벡터가 되고, 모든 가사 세트마다 텍스트 벡터가 하나씩 추가됩니다. 모든 벡터는 롱테일을 포함해 동시에 온라인 상태로 남아 있어야 합니다. 그렇지 않으면 1년 동안 아무도 재생하지 않은 희귀한 트랙이 바로 검색이 찾지 못하는 트랙이 됩니다.
모든 검색은 대규모 환경에서 실시간으로 결과를 반환해야 합니다. 노래를 식별하거나 가사 쿼리에 응답하는 것은 리스너가 기다리는 일이므로, 수십억 개의 벡터를 대상으로 초당 수백 건의 검색을 밀리초 단위로 반환해야 합니다. 카탈로그가 계속 성장해도 속도가 저하되어서는 안 됩니다.
Milvus를 선택한 이유
Milvus는 세 가지 요구 사항 모두에 직접적으로 대응합니다. 그래서 팀은 검색을 Milvus 기반으로 구축했습니다.
벡터, 전체 텍스트, 메타데이터 필터 검색을 단일 쿼리로 처리하도록 특화되어 있습니다. Milvus는 오디오 및 가사 임베딩을 저장하고 클립이 어떻게 들리는지 또는 가사가 무엇을 의미하는지에 따라 최근접 이웃을 찾습니다. 그래서 흥얼거림이나 바꿔 쓴 가사도 올바른 트랙으로 연결됩니다. 가사의 경우 전체 텍스트 키워드 검색과 벡터 검색을 단일 하이브리드 쿼리로 결합해 단어와 의미를 함께 매칭하고, 동일한 호출에서 메타데이터 필터(아티스트, 장르, 지역, 권리)를 적용합니다. 이것은 키워드 전용 시스템이 제공할 수 없는 하이브리드 검색입니다.
수십억 개의 벡터에서 검증되었습니다. Milvus는 수십억 규모의 컬렉션을 위해 설계된 분산 데이터베이스입니다. 따라서 임베딩된 전체 카탈로그가 하나의 시스템에 저장되며, 라이브러리가 성장함에 따라 클러스터와 함께 확장됩니다. 새로운 이정표마다 아키텍처를 다시 설계할 필요가 없습니다.
높은 처리량에서 밀리초 단위의 지연 시간. Milvus는 수십억 개의 벡터를 대상으로 초당 수백 건의 쿼리에서 약 10밀리초 만에 매칭 결과를 반환하며, 무거운 인덱싱을 실시간 쿼리와 분리하여 새 음악이 추가되는 동안에도 검색 속도를 유지합니다.
오픈소스이며, 자체 인프라에서 실행됩니다. 이러한 요구 사항을 충족하는 것 외에도 Milvus는 오픈소스이므로, 이 규모로 운영하는 팀은 자체 인프라에서 Milvus를 실행하고, 워크로드에 맞게 튜닝하고 확장하며, 벤더 종속 없이 자신들의 스택에 통합할 수 있습니다.
솔루션
Milvus는 음악을 소리나 의미로 찾는 모든 기능의 기반이 되는 유사도 검색 레이어입니다. 오디오와 텍스트 모두 벡터가 되어 필터링에 사용되는 메타데이터와 함께 Milvus에 저장됩니다.
Anonymous Music Insert.png
카탈로그 색인. 모든 트랙은 짧고 겹치는 클립으로 잘리며, 오디오 모델은 각 클립을 소리의 음색, 멜로디, 리듬을 포착하는 벡터로 변환합니다. 따라서 하나의 트랙은 단일 포인트가 아니라 몇 초마다 하나씩 이어지는 벡터의 연속이 됩니다. 가사는 텍스트 모델로 별도 처리됩니다. 각 가사 집합은 벡터로 임베딩되고 동시에 전문 검색용으로 인덱싱되어, 쿼리가 의미 또는 정확한 단어로 매칭될 수 있습니다. 아티스트, 앨범, 장르, 발매일, 인기, 지역/권리는 같은 레코드에 스칼라 필드로 기록됩니다. 오디오 클립은 수십억 규모의 컬렉션을 형성하고, 가사 벡터, 전문 검색 인덱스, 메타데이터는 그 옆에 자리합니다. 그래프 기반 ANN 인덱스(HNSW)는 빠른 검색을 유지하고, 스칼라 인덱스는 메타데이터를 필터링 가능하게 만듭니다.
쿼리에 답하기. 네 가지 제품 기능은 모두 Milvus에 대한 유사도 검색으로 귀결됩니다.
- 노래 인식. 캡처된 수 초의 오디오가 임베딩되어 Milvus의 오디오 컬렉션에서 검색됩니다. 여기서 각 트랙은 순서대로 된 여러 개의 짧은 클립으로 저장됩니다. 녹음은 같은 노래의 연속된 클립 묶음과 매칭되는데, 이는 올바른 트랙만이 만들어낼 수 있는 결과이므로 Milvus는 이를 해당 노래 하나로 확정하고 실시간으로 반환합니다.
- 가사 검색. 각 가사는 Milvus에 의미론적 밀집 벡터와 전문(BM25) 인덱스를 모두 같은 레코드에 저장하므로, 단일 하이브리드 검색이 의미와 표현을 함께 매칭하여 하나의 순위 목록을 반환합니다. 리스너가 가사를 단어 그대로 기억하든 대략적인 의미만 기억하든, 쿼리는 올바른 노래에 도달합니다.
- 추천. 리스너가 재생 중인 트랙이 쿼리가 되며, Milvus는 리스너의 지역과 취향에 맞게 필터링된 음향적으로 유사한 트랙을 라디오 및 새 음악 발견용으로 반환합니다.
- 저작권 매칭. 업로드된 클립이 청크로 분할되어 카탈로그에서 검색됩니다. 높은 유사도 히트의 연속은 보호된 자료의 재사용을 표시하고, 권리 필드는 소유권을 결정합니다.
네 가지 기능 모두 Milvus에서 동일한 데이터를 검색합니다. 동일한 오디오 및 가사 벡터, 동일한 메타데이터, 각 쿼리에 포함된 동일한 필터를 사용합니다. 차이가 나는 것은 튜닝입니다. 팀은 검색 계층을 Milvus 클러스터 집합으로 자체 호스팅하고 각각의 역할에 맞게 크기를 조정합니다. 인식 경로는 최저 지연 시간을 위해, 전체 카탈로그 컬렉션은 수십억 개로 확장됨에 따라 처리량과 재현율을 위해 조정합니다. 새로운 음악은 동일한 인덱싱 경로를 거쳐 도착하는 즉시 검색 가능해집니다.
결과 및 이점
- 모든 노래는 약 10밀리초 안에, 초당 수백 건의 검색으로 식별됩니다. 몇 초의 오디오 또는 한 줄의 텍스트만으로도 정확한 트랙이 반환되며, 높은 동시 부하에서도 리스너에게 즉각적으로 느껴질 만큼 빠릅니다.
- 1억 개가 넘는 모든 트랙이 수십억 개의 벡터에 걸쳐 검색 가능한 상태로 유지됩니다. 롱테일을 포함한 모든 트랙이 임베딩되어 온라인 상태이므로, 카탈로그가 너무 커져서 찾을 수 없는 노래는 없습니다.
- 노래는 제목뿐 아니라 소리와 의미로도 찾을 수 있습니다. 흥얼거린 멜로디, 5초 클립, 또는 잘못 기억한 가사도 올바른 트랙으로 이어집니다. 키워드 검색으로는 절대 불가능한 일입니다.
- 인식, 가사 검색, 추천, 저작권 매칭이 하나의 엔진에서 실행됩니다. 새로운 오디오 기능은 새로 구축해야 하는 시스템이 아니라, 이미 전체 카탈로그를 실시간으로 검색하는 계층에서 시작합니다.
- 모든 것이 팀 자체 인프라에서 실행되며, 클러스터를 키우는 방식으로 확장됩니다. 트래픽과 카탈로그가 성장함에 따라 팀은 이미 운영 중인 Milvus 클러스터에 용량을 추가하며, 검색 계층을 재설계할 필요가 없습니다.
전략적 성과는 "소리로 검색"이 프로젝트가 아니라 하나의 역량이 된다는 점입니다. 플랫폼이 음악의 소리에 기반해 구축하고 싶은 모든 것은 이미 1억 개가 넘는 전체 트랙을 실시간으로 검색하는 기반 위에서 시작됩니다.
Milvus 시작하기
Milvus는 46K+ GitHub 스타를 보유한 세계에서 가장 널리 채택된 오픈소스 벡터 데이터베이스로, 수십억 규모의 유사도 검색을 위해 구축되었습니다. 노트북에서 분산 클러스터까지 어디서든 실행할 수 있으며, 팀은 벡터 워크로드를 인덱싱, 필터링, 확장하는 방식에 대한 완전한 제어 권한을 얻을 수 있습니다.
GitHub에서 Milvus를 시작하고, 문서를 읽거나, Discord에서 커뮤니티에 참여하세요.
Milvus를 직접 실행하고 싶지 않은 팀은 Zilliz Cloud에서 완전 관리형 서비스로 동일한 엔진을 사용할 수 있으며, 시작할 때 무료 티어가 제공됩니다.


