AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

MongoDB Vector Search 벤치마크 결과

This page explores the results of our MongoDB Vector Search performance benchmark. MongoDB offers a range of solutions that support various implementation needs. Customers can choose the levels of performance and accuracy that are suited to their specific business setup.

  • 2048 차원에서 voyage-3-large 임베딩을 사용하는 15.3M 벡터에서, 양자화가 구성된 MongoDB Vector Search는 < 50ms 쿼리 지연 시간 으로 90~95%의 정확도를 유지합니다.

  • 이진 양자화는 인덱스 제공 비용의 약 1/4로 더 저렴한 솔루션을 제공합니다. 완전 충실도 벡터로 다시 점수를 매기기 때문에 많은 확장하다 워크로드에 적합한 옵션이 될 수 있지만, 성능이 요구 사항에 맞는지 확인하려면 샘플 데이터 세트 에 대해 테스트를 실행 것이 좋습니다.

  • 대규모 워크로드를 양자화하여 실행할 때는 1024차원 이상을 권장합니다.

  • numCandidates에 선택된 값에 따라 선택적 필터가 성능을 향상시키거나 악화시킬 수 있습니다.

  • 이진 양자화를 위한 재점수화의 추가 비용은 높은 동시성 워크로드에서 처리량 감소로 나타납니다.

  • 샤딩은 처리량을 약간 개선하지만 처리량 향상을 위해 검색 노드의 수를 늘리거나 검색 노드의 사용 가능한 코어 수를 확장할 것을 권장합니다.

첫 번째 결과 집합은 5.5M(550만 개) 문서로 구성된 데이터셋에 대해 수행한 테스트를 보여줍니다. 이 데이터세트는 각 문서마다 voyage-3-large를 사용해 생성한 다양한 차원(256, 512, 1024, 2048)의 벡터를 포함하고 있습니다.

MongoDB Vector Search 양자화 벤치마크 결과
클릭하여 확대

스칼라 양자화된 결과는 모두 이진 양자화된 결과보다 높은 수준에서 시작하지만 numCandidates 이 증가해도 점근 수준을 유지합니다. 반대로 이진 양자화된 쿼리는 더 많은 numCandidates 가 요청될수록 더 정확한 결과를 산출하여 스칼라 양자화의 점근선에 접근하고, 일부 경우에는 이를 전달하는데, 특히 1000의 numCandidates 이상에서는 지연 시간 비용 .

Lower values of limit generally require higher numCandidates to approach 100% accuracy, because the query is more selective about the very top results. This effect is particularly visible in the binary quantization plot. Higher-dimensional vectors (1024d and above) reach the 90-95% target range at lower numCandidates, as the richer representation makes near neighbors easier to distinguish. The tests that limit the results to 100 reach the 90-95% target range with lower numCandidates than the tests that limit the results to 10, because the larger result set gives the search more opportunities to surface relevant neighbors.

이러한 정보를 바탕으로 대규모 데이터셋을 다룰 때는 1024차원 이상의 차원을 유지하고 양자화를 적용하는 것이, 낮은 차원에 양자화를 적용하지 않는 것보다 확장성 측면에서 더 좋다는 결론을 내렸습니다. 또한 요청하는 벡터의 수 역시 결과에 영향을 미칩니다.

더 큰 15.3M(1,530만 개) 벡터 데이터셋의 경우 차원을 2048차원으로 고정한 뒤 양자화, 필터링 및 동시성이 성능에 미치는 영향을 조사했습니다. 이전 테스트 결과에서 더 높은 차원이 리콜(재현율) 유지에 더 유리하게 작용했기 때문에 2048차원으로 설정하였으며, 사실 1024차원만으로도 90~95% 리콜 목표 달성에는 충분했을 것입니다.

이진 양자화를 사용할 때, 기준선과 비교하여 90~95% 리콜 목표를 달성하려면 훨씬 더 많은 numCandidates가 필요하다는 것을 관찰했습니다. numCandidates가 높을수록 일반적으로 지연 시간이 길어지지만, 이는 상황에 따라 달라질 수 있습니다.

MongoDB Vector Search 동시성 벤치마크 결과
클릭하여 확대

15.3M(1,530만 개) 항목 중 약 500k(전체의 약 3%에 해당하는 약 50만 개)가 반려동물 용품 카테고리에 속하는 데이터셋에 선택적 필터를 적용할 때 리콜과 지연 시간이 어떻게 변하는지 관찰했습니다.

MongoDB Vector Search 필터링 벤치마크 결과
클릭하여 확대

선택적 필터하다 는 데이터의 작은 조각(이 경우 ~3%)만 일치시키는 필터하다 입니다. 이제 검색 엔진 이 작은 하위 집합 내에서 가장 가까운 이웃을 찾아야 하므로 동일한 리콜에 도달하려면 더 많은 인덱스 탐색하고 더 많은 후보를 평가해야 합니다. 각 쿼리 필터링되지 않은 쿼리 보다 더 많은 작업을 수행합니다.

예상대로 3% 선택적 필터하다 사용하면 쿼리가 더 많은 작업을 수행할 수 있음을 알 수 있습니다. 더 낮은 limit 값에서 이진 양자화의 경우, 필터링되지 않은 쿼리에 비해 90~95% 재현율을 달성하기 위해 약 4배 많은 작업이 필요했습니다.

Hierarchical Navigable Small Worlds 에 대한 Acorn- 101 검색 전략을 지원 루센 의 향후 개선 사항은 이 프로세스 개선할 수 있습니다. 그러나 요청된 후보 수가 세그먼트 내 메타데이터 필터하다 와 일치하는 벡터 수를 초과할 때 ENN을 수행하면 선택한 양자화 체제에 관계없이 필터하다 선택성이 쿼리 성능에 큰 역할을 한다는 것을 알 수 있습니다.

이 테스트는 스칼라 및 이진 양자화를 사용할 때 다양한 limit 값에서 동시 요청 수를 1, 10 및 100으로 확장하여 테스트했습니다. numCandidates 값은 90~95%의 리콜을 달성할 수 있도록 선택되었습니다.

MongoDB Vector Search 동시성 벤치마크 결과
클릭하여 확대

스칼라 양자화가 limit의 모든 값에서 더 높은 QPS를 달성하는 것을 관찰했습니다. 이는 각 쿼리 더 낮은 numCandidates로 재채점 없이 완료될 수 있기 때문일 수 있습니다. 더 높은 동시성에서는 동시성 10과 동시성 100에 대한 QPS 곡선이 서로 가까워 시스템이 가용 CPU 리소스를 효율적으로 사용하고 있으며 예비 동시성은 주로 지연 시간 영향을 미칩니다.

One exceptional data point is limit 10, concurrency 100 for scalar quantization yielding significantly higher QPS. This is likely because no rescoring and lower limit values means fewer comparisons are performed for this query, allowing each request to return more quickly and make the cores available to serve other queries.

요청 처리를 위한 사용 가능한 vCPU 수를 확장하려면 검색 노드 계층을 확장하거나 검색 노드 수를 최소 2에서 최대 32 노드로 확장하는 방식이 동시성 병목 현상을 해소하고, 수천 건의 QPS 수준까지 무리 없이 확장할 수 있도록 도와줄 수 있습니다.

클러스터와 컬렉션이 _id에서 샤딩되고, 바이너리 양자화 인덱스에 대해 필터링되지 않은 쿼리가 실행될 경우 어떤 일이 발생하는지도 관찰했습니다.

MongoDB Vector Search 동시성 벤치마크 결과
클릭하여 확대

여기에서 numCandidates의 더 낮은 값을 제공하여 90~95% 재현율 범위 에서 결과를 생성할 수 있기 때문에 샤딩된 결과가 limit 10에서 더 높은 QPS를 갖는 것을 볼 수 있습니다. 이는 15.3M 데이터 세트가 세 개의 샤드로 분할 있고, 각 샤드에는 5.1M 벡터가 HNSW 그래프를 포함하는 세그먼트에 분산되어 있기 때문입니다. 우리는 3 샤드에 동시에 수집된 각 쿼리 분산형이 가장 가까운 n 벡터를 찾을 가능성이 더 높은 덜 고급 검색 기능적으로 수행하고 있습니다. 이러한 이유로 numCandidates를 줄이고 쿼리를 제공 데 더 많은 코어를 사용할 수 있으므로 샤딩 시 QPS가 약간 높지만 차이는 그다지 크지 않습니다. 벡터 검색 성능은 안정적으로 유지되므로 처리량 확장하다 하기 위해 클러스터 를 샤드 할 필요가 없습니다.

참고

limit 100, numCandidates 200의 경우에도 값은 유사합니다. 지능형 샤드 키 매칭이 필터로 사용되는 필터 쿼리에서는 더 나은 성능을 기대할 수 있습니다.