벡터 양자화: 대규모 검색 및 생성형 인공지능 애플리케이션

Mai Nguyen and Henry Weller

#genAI#Vector Search

Update 12/12/2024: The upcoming vector quantization capabilities mentioned at the end of this blog post are now available in public preview:

Support for ingestion and indexing of binary (int1) quantized vectors: gives developers the flexibility to choose and ingest the type of quantized vectors that best fits their requirements.

Automatic quantization and rescoring: provides a native mechanism for scalar quantization and binary quantization with rescoring, making it easier for developers to implement vector quantization entirely within Atlas Vector Search.

View the documentation to get started.

MongoDB Atlas Vector Search에 강력한 벡터 양자화 기능이 추가되었음을 발표하게 되어 기쁩니다. 이러한 기능은 성능을 유지하면서 벡터 크기를 줄여 개발자가 더 큰 규모와 더 낮은 비용으로 강력한 시맨틱 검색 및 생성형 인공지능 애플리케이션을 구축할 수 있도록 지원합니다. 또한 관계형 데이터베이스나 특정 벡터 데이터베이스와 달리 MongoDB의 유연한 문서 모델과 양자화된 벡터를 결합하면 다양한 임베딩 모델을 더욱 빠르고 쉽게 테스트하고 배포할 수 있습니다.

스칼라 양자화 벡터 수집 지원이 정식으로 제공되며, 향후 몇 주 내에 몇 가지 새로운 릴리스가 이어질 예정입니다. 벡터 양자화의 작동 방식을 알아보려면 계속 읽어보세요. 시작하려면 MongoDB 문서를 참조하세요!

Brand graphic representing Atlas Vector Search

대규모 벡터 애플리케이션의 과제

벡터를 사용하면 콘텐츠 요약, 감정 분석, 자연어 챗봇, 이미지 생성과 같은 다양한 새로운 가능성이 열립니다. 하지만 비정형 데이터에서 인사이트를 도출하려면 수십억 개의 벡터를 저장하고 검색해야 하는 경우가 발생합니다. 이는 곧 큰 어려움에 직면할 수 있습니다.

벡터는 컴퓨터가 이해할 수 있는 방식으로 비정형 정보를 나타내는 부동 소수점 숫자 배열(수백 개에서 수십억 개의 배열)이며, 벡터의 수가 증가함에 따라 이들을 검색하는 데 필요한 인덱스 크기도 증가합니다. 대규모 벡터 기반 애플리케이션에서 고정밀 벡터를 사용하면 처리 비용이 높아지고 쿼리 시간이 느려질 수 있습니다. 이는 확장성과 성능 저하로 이어지는 경우가 많습니다.

비용 효율성, 확장성 및 성능 향상을 위한 벡터 양자화

시맨틱 유사성을 유지하면서 벡터를 압축하는 기술인 벡터 양자화는 이러한 문제에 대한 해결책을 제시합니다. 컴퓨터의 저장 공간을 줄이기 위해 풀컬러 이미지를 흑백 이미지로 변환하는 것을 생각해 보세요. 이 과정에는 유사한 색상을 기본 색상 채널 또는 "양자화 구간"으로 그룹화하여 각 픽셀의 색상 정보를 단순화한 다음 각 픽셀을 해당 구간의 단일 값으로 표현하는 작업이 포함됩니다. 그런 다음 구간 값을 사용하여 크기는 더 작지만 원본 세부 정보의 대부분을 유지하는 새로운 흑백 이미지를 만듭니다(그림 1 참조).

그림 1: RGB 이미지를 흑백으로 양자화하는 예시
This image is an illustration of quantizing an RGB image into grayscale. On the left side is a photo of a puppy in normal color. In the middle is that same photo in RGB examples. And then on the right is a grayscale version of the photo.

벡터 양자화도 마찬가지로 고정밀 벡터를 더 적은 비트로 축소하여 중요한 세부 정보를 손상시키지 않고 메모리 및 스토리지 비용을 크게 절감합니다. 검색 및 AI 애플리케이션이 유용하려면 관련 있는 인사이트를 제공해야 하므로 이러한 균형을 유지하는 것이 매우 중요합니다.

두 가지 효과적인 양자화 방법은 스칼라(부동 소수점을 정수로 변환)와 이진(부동 소수점을 0 또는 1의 단일 비트로 변환)입니다. 현재 및 향후 제공될 양자화 기능을 통해 개발자는 Atlas Vector Search의 잠재력을 최대한 활용할 수 있습니다.

벡터 양자화의 가장 큰 이점은 컴퓨팅 리소스 감소 및 효율적인 벡터 처리를 통해 확장성이 향상되고 비용이 절감된다는 것입니다. MongoDB의 검색 노드는 워크로드 격리 및 메모리 최적화 인프라를 통해 독립적인 확장성을 제공하는 전용 인프라입니다. 시맨틱 검색과 생성형 인공지능 워크로드에 최적화된 검색 노드와 벡터 양자화를 결합하면 최대 볼륨 및 규모에서도 비용을 더욱 절감하고 성능을 향상시켜 더 많은 사용 사례를 창출할 수 있습니다.

Cohere의 AI 검색 담당 VP인 Nils Reimers는 "Cohere는 MongoDB Atlas에서 양자화된 벡터 수집을 지원하는 최초의 파트너 중 하나가 되어 기쁩니다."라고 말했습니다. "Cohere Embed v3와 같은 임베딩 모델은 기업이 자체 데이터 소스를 기반으로 더욱 정확한 검색 결과를 얻을 수 있도록 지원합니다. 양사 고객에게 필요에 맞는 정확하고 비용 효율적인 애플리케이션을 제공할 수 있기를 기대합니다."

테스트에서 고정밀 벡터와 비교했을 때 BSON 유형 벡터(효율적인 문서 저장을 위한 MongoDB의 JSON 유사 이진 직렬화 형식)는 저장 용량을 66%(41GB에서 14GB로) 줄였습니다. 그림 2와 3에서 볼 수 있듯이, 양자화된 벡터를 사용한 테스트 결과 메모리 사용량이 73%~96% 감소하고 지연 시간이 크게 개선되었습니다. 특히, 스칼라 양자화는 재현율 성능을 유지하며, 이진 양자화는 리스코어링을 통해 재현율 성능을 유지합니다. 리스코어링은 검색 결과의 정확도를 높이기 위해 양자화된 출력의 일부를 고정밀 벡터와 비교하여 평가하는 프로세스입니다.

그림 2: 다양한 임베딩 모델에 양자화를 적용하여 스토리지 사용량을 크게 줄이면서도 우수한 재현율과 지연 시간 성능을 유지
This image is a table displaying storage size and latency times for different amounts of documents and test groups. The test is divided into three groups, which are Full-Fidelity Vectors, Scalar Quantization, and Binary Quantization. Then, there are two different groups for the number of total documents, one being 200k docs on OpenAI embedding models, and the other being 3 million docs on Cohere embedding model. For the data, the full-fidelity vectors test on 200k docs had a vector index size of 1.2 GB and a latency of 13ms, and a 12GB vector index size and 26ms latency on the 3 million docs test. The Scalar Quantization test had a vector index size of .32 GB and 11ms latency on the 200k docs test, and a 3.2 GB vector index size and 19ms latency on the 3 million docs test. Finally, the binary quantization had a .05 GB vector index size on the 200k docs test (a 96% reduction from other tests) along with a 12ms latency, and then a .5 GB vector index size on 3 million docs test, representing a 96% reduction from the Full-Fidelity Vectors test.

그림 3: 리스코어링과 결합 시 이진 양자화의 재현율 성능이 크게 향상됨
This image is a graph of improvement in recall performance for binary quantization when combining with rescoring. The Y axis of the graph represents average recall over 50 queries, while the X axis represents num candidates. There are 4 lines on the graph, each representing a different type of queries. The line representing binary, in red, starts near 0,0 and stays below 0.6 on the graph across all num candidates, putting it as the lowest line on the graph. The float ANN line, in blue, starts near the top of the Y axis at 0 num candidates and moves in a level line across the graph, same goes for the scalar line, in orange, which comes in just below the float ANN. The binary + rescoring line starts towards the bottom of the Y axis at 0 num candidates, but gradually increases the more the graph moves right.

또한 비용 절감 효과 덕분에 벡터 양자화는 이전에는 컴퓨팅 리소스가 너무 많이 필요하거나 비용이 많이 들어 구현하기 어려웠던 고급 다중 벡터 사용 사례를 더 쉽게 구현할 수 있도록 지원합니다. 예를 들어, 벡터 양자화는 사용자가 다음을 수행하는 데 도움이 될 수 있습니다.

  • 프로토타이핑 중 동일한 소스 필드에서 생성된 여러 벡터를 사용하여 다양한 임베딩 모델을 쉽게 A/B 테스트할 수 있습니다. MongoDB의 문서 모델과 양자화된 벡터를 결합하면 더 낮은 비용으로 민첩성을 향상시킬 수 있습니다. 유연한 문서 스키마를 통해 개발자는 인덱스를 다시 빌드하거나 완전히 새로운 데이터 모델이나 인프라 세트를 프로비저닝하지 않고도 임베딩 모델 결과를 신속하게 배포하고 비교할 수 있습니다.

  • 다양한 관련성 소스(예: 제품 설명, 제품 이미지 등)에서 추출한 벡터를 동일한 또는 다른 모델에 통합하면 대규모 언어 모델(LLM)의 검색 결과 또는 컨텍스트 관련성을 더욱 향상시킬 수 있습니다.

시작 방법 및 향후 계획

이제 스칼라 양자화 벡터 수집이 지원되므로 개발자는 원하는 임베딩 모델 제공업체(Cohere, Nomic, Jina, Mixedbread 등)의 양자화된 벡터를 Atlas Vector Search에서 직접 가져와서 사용할 수 있습니다. 시작하려면 문서튜토리얼을 참조하세요.

그리고 향후 몇 주 내에 추가 벡터 양자화 기능이 제공되어 개발자는 양자화된 벡터를 사용하여 애플리케이션을 구축하고 최적화하는 데 필요한 포괄적인 툴 세트를 갖추게 될 것입니다.

이진 양자화 벡터 수집 지원을 통해 저장 공간을 더욱 줄일 수 있으므로 비용을 더 절감하고 개발자는 요구 사항에 가장 적합한 유형의 양자화된 벡터를 유연하게 선택할 수 있습니다.

Atlas Vector Search는 자동 양자화 및 리스코어링 기능을 통해 스칼라 양자화와 리스코어링을 사용한 이진 양자화를 기본적으로 지원합니다. 이를 통해 개발자는 플랫폼에서 벡터 양자화를 더욱 쉽게 활용할 수 있습니다.

MongoDB Atlas Vector Search는 양자화된 벡터를 지원합니다. 이를 통해 확장성이 뛰어나고 비용 효율적인 고성능 시맨틱 검색 및 생성형 AI 애플리케이션을 유연하게 구축할 수 있습니다. 시작하려면 문서튜토리얼 리소스를 참조하세요.

지금 바로 Atlas Vector Search를 시작하려면 빠른 시작 가이드를 확인하세요.