Vector Database인 Milvus에 대한 내용을 정리합니다.
Milvus 란?
Milvus 는 심층 신경망 및 기타 기계 학습(ML) 모델에서 생성된 대규모 임베딩 벡터를 저장, 색인 및 관리하는 단일 목표로 하는 벡터 데이터베이스(Vector Database) 입니다.
Milvus 워크플로우

Milvus는 Vector Index, Attribute, Filtering, Cloud Native Orchestration, Time Travel로 구성됩니다.
Milvus 특징
- 대규모 데이터 세트에서 벡터 검색을 수행할 때 고성능입니다.
- 다국어 지원 및 도구 체인을 제공하는 개발자 우선 커뮤니티입니다.
- 중단 시에도 클라우드 확장성과 높은 안정성.
- 스칼라 필터링과 벡터 유사성 검색을 결합하여 하이브리드 검색을 수행합니다.
Milvus 인덱스 유형
Milvus에서 지원하는 대부분의 벡터 인덱스 유형은 다음을 포함하여 근사 최근접 이웃 검색(ANNS)을 사용합니다.
- FLAT : FLAT는 소규모의 백만 규모 데이터 세트에서 완벽하게 정확하고 정확한 검색 결과를 찾는 시나리오에 가장 적합합니다.
- IVF_FLAT : IVF_FLAT는 양자화 기반 인덱스이며 정확도와 쿼리 속도 간의 이상적인 균형을 추구하는 시나리오에 가장 적합합니다.
- IVF_SQ8 : IVF_SQ8은 양자화 기반 인덱스이며 디스크, CPU 및 GPU 메모리 소비량을 크게 줄이려는 시나리오에 가장 적합합니다. 이러한 리소스는 매우 제한적입니다.
- IVF_PQ : IVF_PQ는 양자화 기반 인덱스이며 정확성을 희생하더라도 높은 쿼리 속도를 추구하는 시나리오에 가장 적합합니다.
- HNSW : HNSW는 그래프 기반 인덱스이며 검색 효율성에 대한 요구가 높은 시나리오에 가장 적합합니다.
- ANNOY : ANNOY는 트리 기반 인덱스이며 높은 재현율을 추구하는 시나리오에 가장 적합합니다.
Milvus 유사성 지표
Milvus에서 유사성 메트릭은 벡터 간의 유사성을 측정하는 데 사용됩니다.
좋은 거리 메트릭을 선택하면 분류 및 클러스터링 성능이 크게 향상됩니다.
입력 데이터 양식에 따라 최적의 성능을 위해 특정 유사성 메트릭이 선택됩니다.
부동 소수점 임베딩에 널리 사용되는 메트릭은 다음과 같습니다.
- 유클리드 거리(L2) : 이 메트릭은 일반적으로 컴퓨터 비전(CV) 분야에서 사용됩니다.
- 내적(IP) : 이 메트릭은 일반적으로 자연어 처리(NLP) 분야에서 사용됩니다.
바이너리 임베딩에 널리 사용되는 메트릭은 다음과 같습니다.
- 해밍 : 이 메트릭은 일반적으로 자연어 처리(NLP) 분야에서 사용됩니다.
- Jaccard : 이 메트릭은 일반적으로 분자 유사성 검색 분야에서 사용됩니다.
- Tanimoto : 이 메트릭은 일반적으로 분자 유사성 검색 분야에서 사용됩니다.
- 상부 구조 : 이 메트릭은 일반적으로 분자의 유사한 상부 구조를 검색하는 데 사용됩니다.
- 하위 구조 : 이 메트릭은 일반적으로 분자의 유사한 하위 구조를 검색하는 데 사용됩니다.
Milvus 응용
Milvus를 사용하면 응용 프로그램에 유사성 검색을 쉽게 추가할 수 있습니다.
Milvus의 적용 예는 다음과 같습니다.
- 이미지 유사성 검색 : 이미지를 검색 가능하게 만들고 방대한 데이터베이스에서 가장 유사한 이미지를 즉시 반환합니다.
- 비디오 유사성 검색 : 키 프레임을 벡터로 변환한 다음 그 결과를 Milvus에 제공하여 수십억 개의 비디오를 거의 실시간으로 검색하고 추천할 수 있습니다.
- 오디오 유사성 검색 : 음성, 음악, 효과음, 표면 유사음 등 방대한 양의 오디오 데이터를 빠르게 조회합니다.
- 분자 유사성 검색 : 특정 분자에 대한 초고속 유사성 검색, 하위 구조 검색 또는 상위 구조 검색.
- 추천 시스템 : 사용자의 행동과 요구에 따라 정보나 제품을 추천합니다.
- 질문 답변 시스템 : 사용자의 질문에 자동으로 답변하는 양방향 디지털 QA 챗봇입니다.
- DNA 염기서열 분류 : 유사한 DNA 염기서열을 비교하여 유전자의 분류를 밀리세컨드 단위로 정확하게 분류합니다.
- 텍스트 검색 엔진 : 키워드를 텍스트 데이터베이스와 비교하여 사용자가 원하는 정보를 찾도록 도와줍니다.
Milvus 아키텍처

클라우드 네이티브 벡터 데이터베이스인 Milvus는 설계에 따라 스토리지와 계산을 분리합니다.
탄력성과 유연성을 향상시키기 위해 Milvus의 모든 구성 요소는 상태 비저장입니다.
시스템은 네 가지 수준으로 나뉩니다.
- 액세스 계층: 액세스 계층은 상태 비저장 프록시 그룹으로 구성되며 사용자에 대한 시스템 및 엔드포인트의 전면 계층 역할을 합니다.
- 코디네이터 서비스: 코디네이터 서비스는 작업자 노드에 작업을 할당하고 시스템의 두뇌 역할을 합니다.
- 작업자 노드: 작업자 노드는 팔과 다리 역할을 하며 코디네이터 서비스의 지침을 따르고 사용자 트리거 DML/DDL 명령을 실행하는 덤 실행기입니다.
- 스토리지: 스토리지는 시스템의 뼈대이며 데이터 지속성을 담당합니다. 메타 스토리지, 로그 브로커, 오브젝트 스토리지로 구성됩니다.
참고 자료
- Milvus : https://milvus.io/
- Milvus Document : https://milvus.io/docs