본문으로 건너뛰기

© 2026 Molayo

GitHub릴리즈2026. 05. 14. 20:16

milvus-io/milvus

요약

Milvus는 텍스트, 이미지 등 비정형 데이터를 효율적으로 검색하기 위해 설계된 고성능 벡터 데이터베이스입니다. Go와 C++로 작성되었으며, CPU/GPU 하드웨어 가속과 완전 분산 아키텍처를 통해 수십억 개의 벡터에 대한 대규모 병렬 검색을 지원합니다. 개발자는 `pymilvus` Python SDK를 사용하여 Milvus를 쉽게 통합할 수 있으며, 메타데이터 필터링 및 하이브리드 검색 기능을 활용하여 AI 애플리케이션의 핵심 데이터 저장소로 사용할 수 있습니다.

핵심 포인트

  • Milvus는 비정형 데이터를 위한 고성능 벡터 데이터베이스이며, AI 애플리케이션에 필수적인 동력을 제공합니다.
  • Go와 C++ 기반으로 개발되었으며, 하드웨어 가속 및 완전 분산 아키텍처를 통해 뛰어난 확장성과 성능을 자랑합니다.
  • 수평적 확장이 가능하고 K8s-native 구조로 고가용성(High Availability)과 결함 허용 능력(Fault Tolerance)이 높습니다.
  • Python SDK인 `pymilvus`를 제공하여 로컬 환경부터 클라우드 기반의 완전 관리형 서비스까지 쉽게 통합할 수 있습니다.
  • 벡터 검색 외에도 메타데이터 필터링 및 하이브리드 검색을 지원하여 복합적인 데이터 검색 요구사항을 충족합니다.

🐦 Milvus는 확장을 위해 구축된 고성능 벡터 데이터베이스 (vector database)입니다. Milvus는 텍스트, 이미지, 멀티모달 (multi-modal) 정보와 같은 방대한 양의 비정형 데이터를 효율적으로 정리하고 검색함으로써 AI 애플리케이션에 동력을 제공합니다.

🧑💻 Go와 C++로 작성된 Milvus는 업계 최고 수준의 벡터 검색 성능을 달성하기 위해 CPU/GPU에 대한 하드웨어 가속 (hardware acceleration)을 구현합니다. 완전 분산형 및 K8s-네이티브 (K8s-native) 아키텍처 덕분에 Milvus는 수평적 확장 (scale horizontally)이 가능하며, 수십억 개의 벡터에 대해 수만 개의 검색 쿼리를 처리할 수 있고, 실시간 스트리밍 업데이트를 통해 데이터를 최신 상태로 유지할 수 있습니다. 또한 Milvus는 단일 머신 배포를 위한 Standalone 모드를 지원합니다. Milvus Lite는 pip install을 통해 Python에서 빠르게 시작하기에 좋은 경량 버전입니다.

설정 없이 Milvus를 사용하고 싶으신가요? Zilliz Cloud ☁️를 무료로 체험해 보세요. Milvus는 Zilliz Cloud에서 Serverless, Dedicated, BYOC 옵션을 통해 완전 관리형 서비스 (fully managed service)로 제공됩니다.

Milvus 사용 방법에 대한 질문이 있다면 Discord 커뮤니티에 참여하여 도움을 받으세요. 문제 보고, 버그 제보 및 기능 요청은 GitHub Issues에 등록하거나 Discussions에서 문의해 주세요.

Milvus 오픈 소스 프로젝트는 LF AI & Data Foundation 산하에 있으며, Apache 2.0 라이선스로 배포되며 Zilliz가 주요 기여자 (major contributor)입니다.

$ pip install -U pymilvus

이 명령은 Milvus를 위한 Python SDK인 pymilvus를 설치합니다. MilvusClient를 사용하여 클라이언트를 생성하세요:

from pymilvus import MilvusClient

pymilvus[milvus-lite]를 설치하여 빠른 시작을 위해 Milvus Lite를 시도해 볼 수도 있습니다. 로컬 벡터 데이터베이스를 생성하려면 데이터를 영구 저장할 로컬 파일 이름을 사용하여 클라이언트를 인스턴스화하기만 하면 됩니다: client = MilvusClient("milvus_demo.db")

배포된 Milvus 서버 또는 Zilliz Cloud에 연결하기 위한 자격 증명 (credentials)을 지정할 수도 있습니다:

client = MilvusClient( uri="<self-hosted_milvus_또는_zilliz_cloud의_endpoint>", token="<username_및_password_또는_zilliz_cloud_api_key>")

클라이언트를 사용하여 컬렉션 (collection)을 생성할 수 있습니다:

client.create_collection(
collection_name="demo_collection",
dimension=768, # 이 데모에서 사용할 벡터는 768차원(dimensions)을 가집니다
...

데이터 삽입 (Ingest data):

res = client.insert(collection_name="demo_collection", data=data)

벡터 검색 수행 (Perform vector search):

query_vectors = embedding_fn.encode_queries(["Who is Alan Turing?", "What is AI?"])
res = client.search(
collection_name="demo_collection", # 대상 컬렉션 (target collection)
...

Milvus는 대규모 벡터 검색 (vector search)을 처리하도록 설계되었습니다. Milvus는 비정형 데이터 (unstructured data)의 학습된 표현인 벡터 (vectors)를 정수 (integers), 문자열 (strings), JSON 객체 (JSON objects)와 같은 다른 스칼라 데이터 타입 (scalar data types)과 함께 저장합니다. 사용자는 메타데이터 필터링 (metadata filtering) 또는 하이브리드 검색 (hybrid search)을 통해 효율적인 벡터 검색을 수행할 수 있습니다. 개발자들이 AI 애플리케이션을 위한 벡터 데이터베이스 (vector database)로 Milvus를 선택하는 이유는 다음과 같습니다:

대규모 환경에서의 높은 성능 및 고가용성 (High Performance at Scale and High Availability)

  • Milvus는 연산 (compute)과 저장 (storage)을 분리하는 분산 아키텍처 (distributed architecture)를 특징으로 합니다. Milvus는 수평적 확장 (horizontally scale)이 가능하며 다양한 트래픽 패턴에 적응할 수 있습니다. 읽기 집약적 (read-heavy) 워크로드의 경우 쿼리 노드 (query nodes)를, 쓰기 집약적 (write-heavy) 워크로드의 경우 데이터 노드 (data node)를 독립적으로 증설함으로써 최적의 성능을 달성합니다. K8s 상의 상태가 없는 마이크로서비스 (stateless microservices)는 장애로부터 빠른 복구를 가능하게 하여 고가용성 (high availability)을 보장합니다. 또한 레플리카 (replicas) 지원을 통해 여러 쿼리 노드에 데이터 세그먼트 (data segments)를 로드함으로써 결함 허용 능력 (fault tolerance)과 처리량 (throughput)을 더욱 향상시킵니다. 성능 비교는 벤치마크 (benchmark)를 참조하십시오.

다양한 벡터 인덱스 타입 및 하드웨어 가속 지원 (Support for Various Vector Index Types and Hardware Acceleration)

  • Milvus는 시스템과 핵심 벡터 검색 엔진 (core vector search engine)을 분리하여, HNSW, IVF, FLAT (brute-force), SCANN, DiskANN을 포함하여 다양한 시나리오에 최적화된 모든 주요 벡터 인덱스 (vector index) 타입을 지원하며, 양자화 (quantization) 기반 변형 및 mmap도 지원합니다. Milvus는 메타데이터 필터링 (metadata filtering) 및 범위 검색 (range search)과 같은 고급 기능을 위해 벡터 검색을 최적화합니다. 또한, Milvus는 벡터 검색 성능을 높이기 위해 하드웨어 가속 (hardware acceleration)을 구현하며 NVIDIA의 CAGRA와 같은 GPU 인덱싱 (GPU indexing)을 지원합니다.

유연한 멀티테넌시 (Multi-tenancy) 및 핫/콜드 스토리지 (Hot/Cold Storage)

  • Milvus는 데이터베이스, 컬렉션 (collection), 파티션 (partition) 또는 파티션 키 (partition key) 수준의 격리를 통해 멀티테넌시 (multi-tenancy)를 지원합니다. 이러한 유연한 전략을 통해 단일 클러스터가 수백에서 수백만 명의 테넌트 (tenant)를 처리할 수 있으며, 최적화된 검색 성능과 유연한 액세스 제어 (access control)를 보장합니다. Milvus는 핫/콜드 스토리지 (hot/cold storage)를 통해 비용 효율성을 높입니다. 자주 액세스하는 핫 데이터 (hot data)는 더 나은 성능을 위해 메모리나 SSD에 저장할 수 있는 반면, 액세스 빈도가 낮은 콜드 데이터 (cold data)는 더 느리지만 비용 효율적인 스토리지에 보관됩니다. 이 메커니즘은 중요한 작업에 대한 높은 성능을 유지하면서 비용을 크게 절감할 수 있습니다.

전체 텍스트 검색 (Full Text Search) 및 하이브리드 검색 (Hybrid Search)을 위한 희소 벡터 (Sparse Vector)

  • 밀집 벡터 (dense vector)를 통한 시맨틱 검색 (semantic search) 외에도, Milvus는 BM25를 이용한 전체 텍스트 검색 (full text search)과 SPLADE 및 BGE-M3와 같은 학습된 희소 임베딩 (learned sparse embeddings)을 기본적으로 지원합니다. 사용자는 동일한 컬렉션 (collection)에 희소 벡터 (sparse vector)와 밀집 벡터 (dense vector)를 함께 저장할 수 있으며, 여러 검색 요청의 결과를 재순위화 (rerank)하는 함수를 정의할 수 있습니다. 시맨틱 검색 + 전체 텍스트 검색을 결합한 하이브리드 검색 (Hybrid Search) 예제를 참조하십시오.

데이터 보안 및 세밀한 액세스 제어 (Fine-grain Access Control)

  • Milvus는 필수 사용자 인증 (user authentication), TLS 암호화 (TLS encryption), 그리고 역할 기반 액세스 제어 (RBAC, Role-Based Access Control)를 구현하여 데이터 보안을 보장합니다. 사용자 인증은 유효한 자격 증명을 가진 권한 있는 사용자만이 데이터베이스에 액세스할 수 있도록 보장하며, TLS 암호화는 네트워크 내의 모든 통신을 보호합니다. 또한, RBAC를 통해 사용자의 역할에 따라 특정 권한을 할당함으로써 세밀한 액세스 제어 (fine-grained access control)가 가능합니다. 이러한 기능들은 Milvus를 기업용 애플리케이션을 위한 강력하고 안전한 선택지로 만들어 주며, 민감한 데이터를 무단 액세스 및 잠재적인 침해로부터 보호합니다.

Milvus는 텍스트 및 이미지 검색, 검색 증강 생성 (RAG, Retrieval-Augmented Generation), 추천 시스템과 같은 애플리케이션을 구축하는 AI 개발자들에게 신뢰를 받고 있습니다. Milvus는 스타트업부터 대기업에 이르기까지 많은 미션 크리티컬 (mission-critical) 비즈니스를 지원합니다.

다음은 Milvus를 사용하여 다양한 유형의 AI 애플리케이션을 구축하는 방법을 보여주는 데모 및 튜토리얼(tutorials) 선정 목록입니다:

Retrieval-Augmented Generation (RAG), 의미론적 검색 (Semantic Search), 하이브리드 검색 (Hybrid Search), 질의응답 (Question Answering), 추천 시스템 (Recommendation Systems) 및 다양한 퀵스타트 가이드 (quick-start guides)와 같은 주제를 다루는 포괄적인 튜토리얼 개요 (Tutorials Overview)를 탐색할 수 있습니다. 이러한 리소스들은 사용자가 빠르고 효율적으로 시작할 수 있도록 설계되었습니다.

튜토리얼 (Tutorial)유스케이스 (Use Case)관련 Milvus 기능
Milvus로 RAG 구축하기RAG벡터 검색 (vector search)
.........
이미지 검색 (Image Search)RAG신약 개발 (Drug Discovery)
---------

Milvus는 LangChain, LlamaIndex, OpenAI 및 HuggingFace와 같은 포괄적인 AI 개발 도구 제품군과 통합되어, Retrieval-Augmented Generation (RAG)과 같은 생성형 AI (GenAI) 애플리케이션을 위한 이상적인 벡터 저장소 (vector store) 역할을 합니다. Milvus는 텍스트, 이미지 및 비디오 모달리티 (modalities)에서 오픈 소스 임베딩 모델 (embedding models)과 임베딩 서비스 (embedding services) 모두와 함께 작동합니다. 또한 Milvus는 편리한 유틸리티인 pymilvus[model]를 제공하여, 사용자가 간단한 래퍼 (wrapper) 코드를 사용하여 비정형 데이터를 벡터 임베딩 (vector embeddings)으로 변환하고 최적화된 검색 결과를 위해 리랭킹 (reranking) 모델을 활용할 수 있게 합니다. Milvus 생태계에는 GUI 기반 관리를 위한 Attu, 시스템 디버깅을 위한 Birdwatcher, 모니터링을 위한 Prometheus/Grafana, 데이터 동기화를 위한 Milvus CDC, 데이터 마이그레이션을 위한 VTS, 그리고 검색 파이프라인 (search pipelines) 구축을 위한 Spark, Kafka, Fivetran 및 Airbyte용 데이터 커넥터 (data connectors)가 포함되어 있습니다.

자세한 내용은 https://milvus.io/docs/integrations_overview.md 를 확인하세요.

설치, 사용, 배포 및 관리에 대한 안내는 Milvus Docs를 확인하세요. 기술적 마일스톤 (milestones) 및 개선 제안 (enhancement proposals)에 대해서는 GitHub의 이슈 (issues)를 확인하세요.

Milvus 오픈 소스 프로젝트는 모든 사람의 기여를 환영합니다. 패치 제출 및 개발 워크플로 (workflow)에 대한 자세한 내용은 기여 가이드라인 (Guidelines for Contributing)을 참조하세요. 프로젝트 거버넌스 (governance)에 대해 배우고 더 많은 커뮤니티 리소스에 접근하려면 커뮤니티 리포지토리 (community repository)를 확인하세요.

요구 사항 (Requirements):

Linux 시스템 (Ubuntu 20.04 이상 권장):

Go: >= 1.21 CMake: >= 3.26.4 && CMake < 4 GCC: >= 11 Python: > 3.8 and <= 3.11

MacOS x86_64 시스템 (Big Sur 11.5 이상 권장):

Go: >= 1.21 CMake: >= 3.26.4 && CMake < 4 llvm: >= 15 Python: > 3.8 and <= 3.11

Apple Silicon MacOS 시스템 (Monterey 12.0.1 이상 권장):

Go: >= 1.21 (Arch=ARM64) CMake: >= 3.26.4 && CMake < 4 llvm: >= 15 Python: > 3.8 and <= 3.11

Milvus 리포지토리를 클론(Clone)하고 빌드(build)하세요.

# github 리포지토리를 클론합니다.
$ git clone https://github.com/milvus-io/milvus.git
# 제3자 의존성(third-party dependencies)을 설치합니다.
...

전체 지침은 개발자 문서(developer's documentation)를 참조하세요.

Discord에서 Milvus 커뮤니티에 참여하여 우리의 엔지니어링 팀과 제안, 조언 및 질문을 공유하세요.

연구 논문에서 Milvus를 사용할 때 인용할 참조 문헌:

@inproceedings{2021milvus,
title={Milvus: A Purpose-Built Vector Data Management System},
author={Wang, Jianguo and Yi, Xiaomeng and Guo, Rentong and Jin, Hai and Xu, Peng and Li, Shengjun and Wang, Xiangyu and Guo, Xiangzhou and Li, Chengming and Xu, Xiaohai and others},
...

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub Trending Go (weekly)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0