안녕하세요? 이번에는 VectorDataBase의 유명한 MILVUS 데이터베이스를 설치하는 방법에 대해 작성해보겠습니다.
설치 이후 LangChain과 같이 RAG(검색 증강 생성)을 사용하는 모습도 나중에 작성하겠습니다.
Milvus란?
Milvus는 벡터 데이터베이스로, 대규모 벡터 데이터를 효율적으로 관리하고 검색할 수 있도록 설계된 오픈 소스 데이터베이스 시스템입니다.
벡터 데이터는 고차원 특성을 가진 데이터 포인트로, 일반적으로 머신러닝과 딥러닝 모델의 출력
(예: 이미지, 텍스트, 오디오 등의 임베딩)으로 생성됩니다.
Milvus는 이러한 벡터들을 빠르게 검색하고 유사성을 평가하는 데 최적화되어 있으며, 특히 AI 애플리케이션에서 널리 사용됩니다.
더군다나 라이센스가 상업적으로 사용가능하므로 제가 사용합니다 하핫!
내가 Milvus를 선택한 이유
제가 Milvus를 선택하는 주요 이유는 다음과 같습니다
- 고성능 벡터 검색
Milvus는 대규모 벡터 데이터에 대해 고속 검색을 지원합니다.
이를 통해 유사성 검색, 추천 시스템, 패턴 인식 등의 작업이 매우 효율적으로 이루어집니다. - 확장성
Milvus는 분산 시스템을 지원하며, 대규모 데이터와 트래픽을 처리할 수 있는 확장성을 제공합니다.
이를 통해 데이터의 양과 검색 요청이 증가하더라도 성능을 유지할 수 있습니다. - AI 친화적
Milvus는 AI 애플리케이션을 위해 설계되어 있으며, 벡터 검색을 최적화하기 위한 다양한 인덱스 알고리즘과 최적화 기능을 제공합니다. 또한, 다른 AI 도구들과의 통합이 용이합니다. - 오픈 소스 커뮤니티 지원
Milvus는 활발한 오픈 소스 커뮤니티가 지원하는 프로젝트로, 다양한 튜토리얼, 문서, 지원 리소스가 제공됩니다.
Milvus의 장점
- 빠른 검색 성능
고차원 벡터 데이터를 효율적으로 검색할 수 있는 다양한 인덱싱 기법(IVF_FLAT, HNSW 등)을 지원하여 매우 빠른 검색 성능을 제공합니다.
=> 다양한 인덱스 기법 https://milvus.io/docs/index-vector-fields.md?tab=floating - 유연한 데이터 관리
여러 인덱스 타입과 데이터 파티셔닝 기능을 통해 다양한 데이터 관리 및 검색 시나리오를 지원합니다. - 확장성
분산된 클러스터 환경에서 동작하도록 설계되어, 대규모 데이터와 트래픽을 처리할 수 있습니다. - 통합 가능성
다양한 AI 프레임워크(TensorFlow, PyTorch 등) 및 데이터 처리 도구와 쉽게 통합할 수 있습니다.
Index Vector Fields | Milvus Documentation
This guide walks you through the basic operations on creating and managing indexes on vector fields in a collection. | v2.4.x
milvus.io
Milvus의 단점
- 복잡성
Milvus는 고성능과 확장성을 제공하는 만큼, 설정과 운영이 다소 복잡할 수 있습니다.
특히, 분산 환경에서 클러스터를 구성하고 유지하는 데 높은 기술적 요구가 따릅니다. - 특화된 사용 사례
Milvus는 벡터 데이터에 특화되어 있어, 범용 데이터베이스로 사용하기에는 적합하지 않습니다.
일반적인 관계형 데이터베이스 기능을 필요로 하는 경우에는 다른 솔루션이 더 적합할 수 있습니다. - 학습 곡선
Milvus의 다양한 기능을 효과적으로 사용하기 위해서는 학습이 필요하며,
사용자가 벡터 데이터베이스와 인덱싱 기법에 대한 기본적인 이해가 있어야 합니다.
하지만 저의 블로그를 보신다면 문제없이 사용가능합니다^^
Milvus docker Container vs Milvus Docker-Compose
밀버스 공식 페이지에 접속을 하면 docker-standalone과 docker-compose 두개가 있습니다.
각 두개의 기능을 설명합니다.
Milvus docker Container
- 단일 컨테이너 실행
Milvus를 컨테이너로 실행할 때는 Milvus의 단일 인스턴스(milvus-standalone)를 독립적으로 실행합니다. - 간단한 설정
단일 컨테이너로 Milvus를 실행할 때는 필요한 환경 변수를 설정하고, 필요한 볼륨을 마운트하며, 네트워크 설정을 직접 구성합니다.
이 방법은 간단한 테스트나 개발 환경에서 Milvus를 빠르게 실행하고자 할 때 유용합니다. - 제한된 기능
단일 컨테이너로 Milvus를 실행하는 경우, etcd와 MinIO와 같은 추가적인 서비스를 수동으로 설정해야 하며, 이 과정이 복잡할 수 있습니다. 또한, 분산 환경을 구축하려면 추가적인 설정이 필요합니다.
Milvus docker Compose
- 다중 컨테이너 실행
Docker Compose를 사용하면 Milvus와 함께 필요한 모든 관련 서비스를 한 번에 정의하고 실행할 수 있습니다.
ex) milvus-standalone, milvus-etcd, milvus-minio 등을 한꺼번에 설정하고 실행할 수 있습니다. - 편리한 설정 관리
Docker Compose 파일(docker-compose.yaml)에 모든 서비스의 설정을 정의할 수 있습니다.
이를 통해 네트워킹, 볼륨, 환경 변수 등을 쉽게 설정할 수 있으며, 필요한 모든 서비스가 자동으로 연결됩니다. - 확장성과 관리 용이성
Docker Compose를 사용하면 여러 서비스를 간단하게 확장하거나 중단할 수 있습니다.
또한, 여러 서비스 간의 종속성이나 네트워크 설정을 자동으로 관리해 주기 때문에, 복잡한 구성도 쉽게 관리할 수 있습니다. - 통합된 스택
Milvus를 운영할 때 필요한 모든 서비스(etcd, MinIO, Milvus 본체 등)를 한 번에 정의하고 실행할 수 있어, 전체 스택을 쉽게 재현하고 배포할 수 있습니다.
다음 글은 Milvus를 docker에 설치하는 방법으로 작성하겠습니다.
감사합니다.
'VectorDB' 카테고리의 다른 글
| [VectorDB] 밀버스(milvus) DB 데이터 csv 추출 튜토리얼 (1) | 2024.09.30 |
|---|---|
| [VectorDB]Milvus와 하이브리드 서치을 활용한 고급 벡터 검색 구현하기 (1) | 2024.09.03 |
| [VectorDB] Milvus와 BGE-M3 모델로 문서 임베딩 및 AI 질의응답 구현하기 (8) | 2024.09.02 |
| [VectorDB] Milvus 연결 + 컬렉션 및 스키마 생성하기 (0) | 2024.08.26 |
| [VectorDB] Milvus docker에 설치하기 (1) | 2024.08.22 |