Milvus의 하이브리드 검색 리뷰
Milvus 2.4는 단일 컬렉션 내 다중 벡터 컬럼 도입으로 하이브리드 검색 기능을 확장했습니다. 이 업그레이드는 여러 벡터 유형과 필드에 걸친 동시 쿼리를 가능하게 하여 더욱 고급스럽고 유연한 데이터 검색을 지원합니다. 그런 다음 각 필드의 검색 결과는 더 정확한 결과를 제공하기 위해 여러 재순위화 알고리즘을 사용해 통합되고 재순위화됩니다.
이 기능은 왜 중요하며, 어떤 이점을 제공할까요? 이 기능의 배후에 있는 설계 전략은 무엇일까요? 이 글에서는 이러한 질문들을 살펴보겠습니다. 또한 단일 벡터 검색과 하이브리드 검색의 결과를 비교하는 실용적인 예시를 제공하여, 이 강력한 새로운 기능이 어떻게 더 정확한 결과를 산출할 수 있는지 보여드리겠습니다.
하이브리드 검색이란 무엇인가요?
기본부터 시작해 보겠습니다: Milvus에서 하이브리드 검색이란 무엇일까요?
Milvus는 단일 컬렉션 내 동일한 데이터셋에 대해 최대 10개의 벡터 필드 생성을 지원합니다. 이러한 지원을 기반으로, 하이브리드 검색은 사용자가 여러 벡터 컬럼을 동시에 검색할 수 있도록 합니다. 이 기능은 멀티모달 검색, 희소 및 밀집 하이브리드 검색, 밀집 및 전문 검색의 하이브리드를 결합할 수 있게 하여 다재다능하고 유연한 검색 기능을 제공합니다.
서로 다른 컬럼의 이러한 벡터들은 다양한 임베딩 모델에서 비롯되었거나 서로 다른 처리 방법을 거친 데이터의 다양한 측면을 나타냅니다. 하이브리드 검색의 결과는 다양한 재순위화 전략을 사용해 통합됩니다.
하이브리드 검색 작동 방식
Milvus에서 하이브리드 검색이 작동하는 방식
이 기능은 서로 다른 컬럼이 다음을 가능하게 합니다:
정보의 여러 관점을 표현. 예를 들어 전자상거래에서 제품 이미지는 정면, 측면, 상단 뷰를 포함합니다. 서로 다른 뷰는 서로 다른 유형이나 차원의 벡터로 표현될 수 있습니다.
다양한 유형의 벡터 임베딩 활용. 여기에는 BERT 및 Transformers 같은 모델의 밀집 임베딩과 BM25, BGE-M3, 및 SPLADE 같은 알고리즘의 희소 임베딩이 포함됩니다.
이미지, 비디오, 오디오, 텍스트 파일과 같은 다양한 비정형 데이터 유형에서 멀티모달 벡터의 융합 지원. 예를 들어 범죄 수사에서 용의자는 지문, 음성 지문, 얼굴 인식과 같은 생체 인식 모달리티를 통해 표현될 수 있으며, 이는 서로 다른 모달리티 전반에서 개인을 식별하는 데 도움을 줍니다.
벡터 검색과 전문 검색의 융합 지원.
우리가 하이브리드 검색을 개선한 이유
OpenAI가 최근 멀티모달 모델 GPT-4o를 발표하면서 AI의 미래에 대한 논의가 다시 불붙었습니다. 멀티모달 데이터를 처리하는 것은 인공 일반 지능(AGI)을 달성하기 위해 점점 더 필요해지고 있습니다. 그 등장은 또한 "모든 것은 벡터화될 수 있다"는 개념을 강조합니다. AI 시대의 인코딩 방식인 벡터는 서로 다른 모달리티를 연결하는 핵심축입니다. 벡터가 담고 있는 정보는 점점 더 다양하고 복잡해지고 있으며, 벡터 데이터를 저장하고 검색하기 위한 벡터 데이터베이스에 더 높은 요구 사항을 부과하고 있습니다.
따라서 하이브리드 검색으로의 진화는 매우 중요합니다. 이것이 Milvus가 이러한 증가하는 요구를 충족하기 위해 최신 릴리스에서 하이브리드 검색 지원을 도입한 이유입니다. 이 전략적 개선을 통해 Milvus는 복잡하고 멀티모달한 데이터 표현을 수용할 수 있으며, 점점 더 복잡해지는 데이터셋을 이해하고 처리하는 AI 시스템의 역량을 향상시킵니다.
이 새로운 기능을 통해 Milvus는 개발자가 AI 기반 애플리케이션에서 새로운 가능성을 탐색할 수 있도록 지원하며, 데이터 복잡성과 실행 가능한 인사이트 사이의 격차를 더욱 좁힙니다.
Milvus에서 하이브리드 검색을 설계한 방법
여러 벡터 열 전반에서 벡터 검색을 지원하려면 Milvus 설계를 대대적으로 재구성해야 했습니다. 예를 들어, 시스템 호환성과 안정성을 보장하기 위해 저장 및 쓰기 제한을 해제하고, 복잡한 쿼리를 처리하기 위해 여러 벡터 열에 대한 고급 검색 방법을 도입했습니다.
하이브리드 검색은 어떻게 작동하나요?
이전에는 Milvus가 쓰기 경로에서 컬렉션당 하나의 벡터 열만 허용했습니다. 우리는 이 제한을 제거하고 컬렉션당 기본 네 개의 벡터 열을 도입했으며, 최대 열 개까지 확장할 수 있습니다. 컬렉션 내의 각 벡터 열은 서로 다른 메트릭 및 인덱스 유형을 지원할 수 있습니다.
중요 참고: 시스템 호환성을 위해 모든 벡터 열의 인덱스가 생성되고 메모리에 로드된 경우에만 컬렉션을 쿼리할 수 있습니다.
읽기 경로에서 여러 벡터 열 전반에 걸쳐 검색을 수행하기 위해 다중 경로 벡터 검색과 하이브리드 재순위화 전략을 구현했습니다. 프로세스는 다음과 같습니다:
검색: 각 벡터 검색 경로(각 열)에 대해 검색된 결과를 제어하는 내부 매개변수를 정의합니다. 이 단계는 filter 및 limit와 같은 중간 매개변수를 지원하지만
output_field및group_by_field와 같은 출력 매개변수는 지원하지 않습니다.재순위화: 각 검색 경로에서 결과를 얻은 후 다음 단계는 재순위화 프로세스에서 이러한 결과를 병합하는 것입니다. Milvus는 두 가지 고전적인 재순위화 전략인 Ranked Retrieval Fusion (RRF)과 WeightedRanker를 지원합니다. 또한 Milvus는 사용자가 클라이언트 측에서 재순위화 모델을 활용하여 결과를 재정렬할 수 있도록 합니다.
Milvus 내 하이브리드 검색 프로세스란 무엇인가
Milvus 시스템 내 하이브리드 검색 프로세스란 무엇인가?
이 아키텍처는 여러 벡터 열이 필수적인 환경에서 Milvus가 정보 저장 및 검색의 복잡성을 효과적으로 처리할 수 있도록 보장합니다.
재순위화 전략
현재 Milvus는 다음과 같은 재순위화 전략을 지원합니다:
Ranked Retrieval Fusion (RRF): 이 전략은 서로 다른 벡터 열 전반의 순위를 기반으로 결과를 결합합니다.
WeightedRanker: 이 접근 방식은 서로 다른 벡터 검색의 점수(또는 벡터 거리)의 가중 평균을 계산하여 결과를 병합합니다. 각 벡터 필드의 중요도에 따라 가중치를 할당합니다.
다음 그래픽은 Milvus에서 재순위화 프로세스가 어떻게 작동하는지 보여줍니다.
재순위화 작동 방식
Milvus에서 재순위화가 작동하는 방식
Ranked Retrieval Fusion (RRF)
RRF는 순위의 역수를 기반으로 검색 결과를 결합하는 데이터 융합 알고리즘입니다. 특히 중요도의 명확한 우선순위가 없을 때 각 벡터 필드의 영향을 균형 있게 조정합니다. 이 전략은 모든 벡터 필드를 동등하게 고려하고 싶거나 각 필드의 상대적 중요도가 불확실할 때 사용됩니다.
RRF의 기본 프로세스는 다음과 같습니다:
검색 중 순위 수집: 여러 벡터 필드 전반의 검색기가 결과를 검색하고 정렬합니다.
순위 융합: RRF 알고리즘은 각 검색기의 순위에 가중치를 부여하고 결합합니다. 공식은 다음과 같습니다:
RRF 공식
여기서 𝑁은 서로 다른 검색 경로의 수를 나타내며, rank𝑖(𝑑)는 𝑖번째 검색기가 검색한 문서 𝑑의 순위 위치이고, 𝑘는 일반적으로 60으로 설정되는 평활화 파라미터입니다.
- 종합 순위 지정: 결합된 점수를 기반으로 검색된 결과의 순위를 다시 매겨 최종 결과를 생성합니다.
WeightedRanker
WeightedRanker 전략은 각 벡터 필드의 중요도에 따라 각 벡터 검색 경로의 결과에 서로 다른 가중치를 할당합니다. 이 재순위 지정 전략은 각 벡터 필드의 중요도가 서로 다를 때 적용되며, 더 높은 가중치를 부여하여 특정 벡터 필드를 다른 필드보다 강조할 수 있습니다. 예를 들어, 멀티모달 검색에서는 텍스트 설명이 이미지의 색상 분포보다 더 중요하게 간주될 수 있습니다.
WeightedRanker의 기본 프로세스는 다음과 같습니다:
검색 중 점수 수집: 서로 다른 벡터 검색 경로에서 결과와 해당 점수를 수집합니다.
점수 정규화: 각 경로의 점수를 [0,1] 범위로 정규화하며, 1에 가까운 값일수록 관련성이 더 높음을 나타냅니다. 이 정규화는 점수 분포가 서로 다른 메트릭 유형에 따라 달라지기 때문에 매우 중요합니다. 예를 들어, IP의 거리는 [-∞,+∞] 범위인 반면, L2의 거리는 [0,+∞] 범위입니다. Milvus는 arctan 함수를 사용하여 값을 [0,1] 범위로 변환함으로써 서로 다른 메트릭 유형에 대한 표준화된 기준을 제공합니다.
가중치 할당: 각 벡터 검색 경로에 가중치
w𝑖를 할당합니다. 사용자는 데이터 소스의 신뢰성, 정확도 또는 기타 관련 지표를 반영하는 가중치를 지정합니다. 각 가중치는 [0,1] 범위입니다.점수 융합: 정규화된 점수의 가중 평균을 계산하여 최종 점수를 도출합니다. 그런 다음 결과는 이 점수를 기준으로 높은 점수에서 낮은 점수 순으로 정렬되어 최종 정렬 결과를 생성합니다.
weightedranker fomula
예시로 살펴보는 하이브리드 검색과 단일 벡터 검색 비교
이 섹션에서는 단일 벡터 검색과 하이브리드 검색을 각각 사용한 이미지 검색 결과를 비교하여, 하이브리드 검색이 검색 결과의 품질을 어떻게 향상시킬 수 있는지 보여줍니다. 자세한 내용은 this notebook의 전체 코드 스니펫을 참조하세요.
데이터셋
우리는 공개 소스에서 신호등이 포함된 이미지를 다운로드하여 데이터셋으로 사용했습니다.
the dataset
쿼리 이미지
이 데모에서 아래 이미지는 데이터셋 내에서 찾고자 하는 쿼리 이미지입니다.
query image
ResNet 및 CLIP을 사용한 특징 추출
특징 추출을 수행하고 이미지를 Milvus에 삽입하기 전에 여러 벡터 열이 있는 컬렉션을 만들어야 합니다. 아래 코드 스니펫에서는 서로 다른 임베딩 모델을 사용해 추출한 이미지 특징 벡터를 저장하기 위해 두 개의 벡터 열을 만들었습니다.
Create a collection with multiple vector columns
이 데모에서는 ResNet과 CLIP을 임베딩 모델로 사용합니다.
- ResNet (Residual Network): 이미지 인식 및 분류에 널리 사용되는 모델입니다.
resnet.png
- CLIP (Contrastive Language–Image Pre-training): 시각 데이터와 텍스트 데이터 사이의 간극을 연결하는 텍스트-이미지 바이모달 임베딩 모델입니다. 이미지 검색을 위해 캡션에서 특징을 추출하는 데 사용합니다.
clip
ResNet 벡터를 사용한 단일 벡터 검색 결과
데이터셋에 이미지 검색 쿼리와 동일한 이미지가 포함되어 있다면, 단일 열 밀집 벡터 검색으로 올바른 결과를 빠르게 반환할 수 있습니다. 그러나 실제 사례에서는 쿼리 이미지가 다양한 각도나 환경적 배경으로 인해 데이터셋의 이미지와 다른 경우가 많아 벡터 검색 결과에 영향을 줍니다. 이 예시에서는 쿼리 이미지의 특정 특징, 특히 신호등에 초점을 맞춰 이미지 검색을 수행합니다.
쿼리 이미지의 특정 특징 - 신호등
아래 결과에서 볼 수 있듯이, 반환된 모든 이미지는 주로 신호등 객체를 강조합니다. 그러나 쿼리 이미지(No.3) 자체는 가장 유사한 이미지로 순위가 매겨지지 않았습니다. 검색 결과를 상위 두 개의 이미지로만 제한하면, 쿼리 이미지는 결과에 전혀 나타나지 않습니다.
검색 결과 - resnet.png
CLIP 벡터를 사용한 단일 벡터 검색 결과
다음으로, 또 다른 단일 벡터 검색을 살펴보겠습니다. CLIP의 멀티모달 이해 능력 덕분에 텍스트 입력을 사용해 이미지를 검색할 수 있습니다. 여기서 검색 입력은 "배경에 건물이 있는 이미지"입니다.
검색 결과 - clip
결과는 반환된 이미지가 건물이라는 배경 요소에 초점을 맞추고 있음을 나타냅니다. 그러나 쿼리 이미지는 여전히 최상위 일치 항목으로 보이지 않습니다.
하이브리드 검색 결과
이전 두 개의 단일 경로 벡터 검색 결과가 이상적이지 않았기 때문에, 여러 벡터 열에 걸쳐 하이브리드 검색을 수행했습니다. 이 하이브리드 검색에서는 두 AnnSearchRequest 경로의 결과를 가중 평균 방식으로 융합합니다. ResNet 및 CLIP 열의 가중치는 각각 0.7과 0.8로 설정되었습니다.
하이브리드 검색 결과
위 결과에서 볼 수 있듯이, 이번에는 쿼리 이미지가 가장 유사한(Top 1) 이미지로 반환되었습니다.
이 예시는 하이브리드 검색이 이미지와 텍스트의 멀티모달 입력을 어떻게 효과적으로 통합하는지 보여줍니다. 단일 벡터 검색과 비교했을 때, 하이브리드 검색은 최종 결과에서 상당한 개선을 보여줍니다.
마무리
하이브리드 검색은 여러 벡터 필드에 대한 동시 쿼리를 가능하게 하여 데이터 검색 기능을 향상시키는 Milvus의 핵심 기능입니다. 이 기능은 하이브리드 희소 및 밀집 검색, 멀티모달 검색, 하이브리드 밀집 및 전체 텍스트 검색을 결합하며, 이러한 모든 검색 결과는 더 정확하고 관련성 높은 최종 결과를 위해 효율적인 재순위 지정 전략을 사용해 통합되고 재순위가 지정됩니다.
앞으로 우리는 하이브리드 검색을 다양한 도메인으로 확장하는 데 집중할 것입니다. 예를 들어, Twitter나 TikTok의 인기 소셜 주제 추천과 같은 사용 사례를 위해 시간 기반 재순위 지정을 활용하도록 확장할 수 있습니다. 또한 더 정교한 검색 경험을 제공하기 위해 더욱 강력한 융합 알고리즘과 재순위 지정 모델을 도입할 계획입니다.
하이브리드 검색의 잠재력은 여기서 다룬 내용을 넘어섭니다. 앞으로의 더 많은 업데이트를 기대해 주세요.
계속 읽기

Zilliz Skills Breakdown: How AI Agents Master Vector Databases
Zilliz's Milvus Skill (pymilvus, 7 files) and Zilliz Cloud Skill (zilliz-cli, 14 modules) bring vector-DB dev and ops into one Claude Code session.

Cosmos World Foundation Model Platform for Physical AI
NVIDIA's Cosmos platform enables safe, digital twin training of GenAI models for physical applications, overcoming data scarcity and safety challenges.

Vector Databases vs. Graph Databases
Use a vector database for AI-powered similarity search; use a graph database for complex relationship-based queries and network analysis.



