용어

AutoID

AutoID는 기본 필드에 대해 자동 증가(AutoIncrement) 기능을 활성화할지 여부를 결정하는 기본 필드의 속성입니다. AutoID의 값은 타임스탬프를 기반으로 정의됩니다. 자세한 내용은 create_schema를 참조하십시오.

자동 인덱스

Milvus는 경험적 데이터를 바탕으로 특정 필드에 가장 적합한 인덱스 유형과 매개변수를 자동으로 결정합니다. 이는 특정 인덱스 매개변수를 직접 제어할 필요가 없는 경우에 이상적입니다. 자세한 내용은 add_index를 참조하십시오.

Attu

Attu는 Milvus를 위한 올인원 관리 도구로, 시스템 관리의 복잡성과 비용을 대폭 줄여줍니다.

Birdwatcher

Birdwatcher는 etcd에 연결되는 Milvus용 디버깅 도구로, Milvus 서버의 상태를 모니터링하고 실시간으로 조정할 수 있게 해줍니다. 또한 etcd 파일 백업을 지원하여 개발자의 문제 해결을 돕습니다.

Bulk Writer

Bulk Writer는 Milvus SDK(예: PyMilvus, Java SDK)에서 제공하는 데이터 처리 도구로, 원시 데이터 세트를 Milvus와 호환되는 형식으로 변환하여 효율적으로 가져올 수 있도록 설계되었습니다.

Bulk Insert

Bulk Insert는 단일 요청으로 여러 파일을 가져올 수 있게 하여 쓰기 성능을 향상시키고, 대용량 데이터셋에 대한 작업을 최적화하는 API입니다.

Cardinal

Zilliz Cloud에서 개발한 카디널(Cardinal)은 타의 추종을 불허하는 검색 품질과 성능을 제공하는 최첨단 벡터 검색 알고리즘입니다. 혁신적인 설계와 광범위한 최적화를 통해 카디널은 Knowhere보다 수배에서 10배에 이르는 성능을 발휘하며, 다양한 K 크기, 높은 필터링 비율, 서로 다른 데이터 분포 등 다양한 운영 시나리오를 유연하게 처리합니다.

Channel

Milvus는 스트리밍 서비스 아키텍처의 일환으로 PChannel과 VChannel이라는 두 가지 유형의 채널을 활용합니다. 각 PChannel은 Woodpecker가 관리하는 WAL 스트림에 대응하며, 각 VChannel은 컬렉션 내의 샤드에 대응합니다. 스트리밍 서비스는 데이터 일관성과 장애 복구를 보장하기 위해 이러한 채널을 관리합니다.

컬렉션

Milvus에서 컬렉션은 관계형 데이터베이스 관리 시스템(RDBMS)의 테이블에 해당합니다. 컬렉션은 엔티티를 저장하고 관리하는 데 사용되는 주요 논리적 객체입니다. 자세한 내용은 ‘컬렉션 관리’를 참조하십시오.

의존성

의존성은 다른 프로그램이 정상적으로 작동하기 위해 의존하는 프로그램을 말합니다. Milvus의 의존성에는 etcd(메타데이터 저장), MinIO 또는 S3(객체 스토리지), 그리고 Woodpecker(스냅샷 로그 관리)와 같은 메시지 큐가 포함됩니다. 자세한 내용은 ‘데이터 인프라’를 참조하십시오.

동적 스키마

동적 스키마를 사용하면 기존 스키마를 수정하지 않고도 새로운 필드가 포함된 엔티티를 컬렉션에 삽입할 수 있습니다. 즉, 컬렉션의 전체 스키마를 알지 못해도 데이터를 삽입할 수 있으며, 아직 정의되지 않은 필드도 포함할 수 있습니다. 컬렉션을 생성할 때 동적 필드를 활성화하면 이 스키마 자유 기능을 사용할 수 있습니다. 자세한 내용은 ‘동적 필드 활성화’를 참조하십시오.

임베딩

Milvus는 널리 사용되는 임베딩 제공업체와 연동되는 내장 임베딩 기능을 제공합니다. Milvus에서 컬렉션을 생성하기 전에 이러한 기능을 사용하여 데이터셋에 대한 임베딩을 생성함으로써, 데이터 준비 및 벡터 검색 과정을 간소화할 수 있습니다. 실제 임베딩 생성 방법은 ‘PyMilvus 모델을 사용하여 텍스트 임베딩 생성하기’를 참조하십시오.

엔티티

엔티티는 실제 세계의 객체를 나타내는 필드 그룹으로 구성됩니다. Milvus의 각 엔티티는 고유한 기본 키로 표현됩니다.

주키를 사용자 정의할 수 있습니다. 수동으로 구성하지 않으면 Milvus가 엔티티에 주키를 자동으로 할당합니다. 주키를 사용자 정의하기로 선택한 경우, 현재 Milvus는 주키 중복 제거를 지원하지 않는다는 점에 유의하십시오. 따라서 동일한 컬렉션 내에 중복된 주키가 존재할 수 있습니다. 자세한 내용은 ‘엔티티 삽입’을 참조하십시오.

필드

Milvus 컬렉션의 필드는 RDBMS의 테이블 열에 해당합니다. 필드는 구조화된 데이터(예: 숫자, 문자열)를 위한 스칼라 필드이거나, 임베딩 벡터를 위한 벡터 필드일 수 있습니다.

필터

Milvus는 술어를 사용한 검색을 통해 스칼라 필터링을 지원하며, 쿼리 및 검색 내에서 필터 조건을 정의하여 결과를 구체화할 수 있습니다.

필터링된 검색은 벡터 검색에 스칼라 필터를 적용하여 특정 기준에 따라 검색 결과를 정제할 수 있게 해줍니다. 자세한 내용은 필터링된 검색을 참조하십시오.

하이브리드 검색은 Milvus 2.4.0부터 제공되는 하이브리드 검색용 API입니다. 여러 벡터 필드를 검색하고 이를 융합할 수 있습니다. 벡터 검색과 스칼라 필드 필터링이 결합된 경우, 이를 "필터링된 검색"이라고 합니다. 자세한 내용은 하이브리드 검색을 참조하십시오.

인덱스

벡터 인덱스는 원시 데이터에서 파생된 재구성된 데이터 구조로, 벡터 유사도 검색 과정을 크게 가속화할 수 있습니다. Milvus는 벡터 필드와 스칼라 필드 모두에 대해 다양한 인덱스 유형을 지원합니다. 자세한 내용은 벡터 인덱스 유형을 참조하십시오.

Kafka-Milvus 커넥터

Kafka-Milvus 커넥터는 Milvus용 Kafka 싱크 커넥터를 의미합니다. 이를 통해 Kafka에서 Milvus로 벡터 데이터를 스트리밍할 수 있습니다.

Knowhere

Knowhere는 Faiss, Hnswlib, Annoy 등 여러 벡터 유사도 검색 라이브러리를 통합한 Milvus의 핵심 벡터 실행 엔진입니다. 또한 Knowhere는 이기종 컴퓨팅을 지원하도록 설계되었습니다. 인덱스 구축 및 검색 요청을 어떤 하드웨어(CPU 또는 GPU)에서 실행할지 제어합니다. Knowhere라는 이름은 바로 이러한 ‘어디에서 연산을 실행할지(knowing where)’를 파악한다는 의미에서 유래했습니다.

로그 스냅샷

로그 스냅샷은 Milvus 내 데이터에 대한 업데이트 및 변경 사항을 기록하고 처리하는, 세그먼트 내의 더 작은 단위인 이진 로그입니다. 세그먼트의 데이터는 여러 개의 이진 로그에 영구 저장됩니다. Milvus에는 InsertBinlog, DeleteBinlog, DDLBinlog의 세 가지 유형의 이진 로그가 있습니다. 자세한 내용은 메타 스토리지 문서를 참조하십시오.

메트릭 유형

유사도 메트릭 유형은 벡터 간의 유사도를 측정하는 데 사용됩니다. 현재 Milvus는 유클리드 거리(L2), 내적(IP), 코사인 유사도(COSINE) 및 이진 메트릭 유형을 지원합니다. 사용 시나리오에 따라 가장 적합한 메트릭 유형을 선택할 수 있습니다. 자세한 내용은 유사도 메트릭을 참조하십시오.

MemoryBuffer

MemoryBuffer는 Woodpecker의 경량 배포 모드로, 들어오는 쓰기 작업을 메모리에 임시로 버퍼링한 후 주기적으로 클라우드 오브젝트 스토리지로 플러시합니다. 이 모드는 소규모 배포 환경이나 성능보다 단순성을 우선시하는 프로덕션 환경에서 배치 작업이 많은 워크로드에 가장 적합합니다. 자세한 내용은 Woodpecker 아키텍처를 참조하십시오.

Mmap

메모리 매핑 파일은 파일 내용을 메모리에 직접 매핑하여 효율적인 데이터 처리를 가능하게 합니다. 이는 메모리가 제한적이어서 모든 데이터를 불러올 수 없는 경우에 특히 유용합니다. 이 기법은 데이터 용량을 늘리고 일정 수준까지 성능을 유지할 수 있습니다. 그러나 데이터가 메모리 용량을 크게 초과할 경우, 검색 및 쿼리 속도가 현저히 저하될 수 있습니다. 자세한 내용은 MMap 지원 데이터 저장을 참조하십시오.

Milvus 백업

Milvus 백업은 데이터의 복사본을 생성하는 도구로, 데이터 손실 발생 시 원본을 복원하는 데 사용할 수 있습니다.

Milvus CDC

Milvus CDC (변경 데이터 캡처)는 주-대기(primary-standby) 재해 복구를 위해 한 Milvus 클러스터에서 다른 클러스터로 데이터 변경 사항을 복제하는 데 사용되는 도구입니다.

Milvus CLI

Milvus 명령줄 인터페이스 (CLI)는 데이터베이스 연결, 데이터 작업, 데이터 가져오기 및 내보내기를 지원하는 명령줄 도구입니다. Milvus Python SDK를 기반으로 하며, 대화형 명령줄 프롬프트를 사용하여 터미널을 통해 명령을 실행할 수 있습니다.

Milvus 마이그레이션

Milvus 마이그레이션은 다양한 데이터 소스의 데이터를 Milvus 2.x로 손쉽게 마이그레이션할 수 있도록 설계된 오픈소스 도구입니다.

Milvus 클러스터

Milvus의 클러스터 배포 환경에서는 노드 그룹이 서비스를 제공하여 고가용성과 손쉬운 확장성을 실현합니다.

Milvus 독립형

Milvus의 독립형 배포에서는 데이터 삽입, 인덱스 구축, 벡터 유사도 검색을 포함한 모든 작업이 단일 프로세스에서 완료됩니다.

다중 벡터

Milvus는 2.4.0 버전부터 하나의 컬렉션 내에서 여러 벡터 필드를 지원합니다. 자세한 내용은 하이브리드 검색을 참조하십시오.

파티션

파티션은 컬렉션을 분할한 것입니다. Milvus는 컬렉션 데이터를 물리적 저장소에서 여러 부분으로 나누는 것을 지원합니다. 이 과정을 파티셔닝이라고 하며, 각 파티션은 여러 세그먼트를 포함할 수 있습니다. 자세한 내용은 파티션 관리를 참조하십시오.

파티션 키

필드의 파티션 키 속성을 사용하면 엔티티를 파티션 키 값에 따라 서로 다른 파티션으로 분리할 수 있습니다. 이러한 그룹화를 통해 동일한 키 값을 공유하는 엔티티가 함께 저장되므로, 파티션 키 필드로 필터링된 쿼리 실행 시 시스템이 관련 없는 파티션을 건너뛸 수 있어 검색 작업 속도가 향상됩니다. 자세한 내용은 ‘파티션 키 사용’을 참조하십시오.

PChannel

PChannel은 물리적 채널(physical channel)을 의미합니다. 각 PChannel은 Woodpecker가 관리하는 WAL 스트림에 해당합니다. 기본적으로 Milvus 클러스터가 시작될 때 데이터 삽입, 삭제 및 업데이트를 기록하는 로그를 저장하기 위해 일련의 PChannel이 할당됩니다. 자세한 내용은 ‘스트리밍 서비스’를 참조하십시오.

PyMilvus

PyMilvus는 Milvus의 Python SDK입니다. 소스 코드는 오픈 소스로 공개되어 GitHub에 호스팅됩니다. Milvus와 통신하기 위해 MilvusClient(신규 버전 Python SDK) 또는 기존 ORM 모듈 중 하나를 유연하게 선택할 수 있습니다.

쿼리

쿼리는 지정된 부울 표현식을 필터로 사용하여 스칼라 필터링을 수행하는 API입니다. 자세한 내용은 Get 및 스칼라 쿼리를 참조하십시오.

QuorumBuffer

QuorumBuffer는 실시간 응답성과 강력한 내결함성을 모두 요구하는, 지연 시간에 민감한 고주파수 읽기/쓰기 워크로드를 위해 설계된 Woodpecker의 배포 모드입니다. 3개의 복제본을 사용하는 쿼럼 쓰기 방식을 적용한 고속 쓰기 버퍼로 작동하며, 강력한 일관성과 고가용성을 보장합니다. 자세한 내용은 Woodpecker 아키텍처를 참조하십시오.

범위 검색을 사용하면 검색 벡터로부터 지정된 거리 내에 있는 벡터를 찾을 수 있습니다. 자세한 내용은 범위 검색을 참조하십시오.

스키마

스키마는 데이터 유형과 데이터 속성을 정의하는 메타 정보입니다. 각 컬렉션에는 컬렉션의 모든 필드, 자동 ID(주키) 할당 활성화 여부 및 컬렉션 설명을 정의하는 고유한 컬렉션 스키마가 있습니다. 필드 스키마도 컬렉션 스키마에 포함되며, 이는 필드의 이름, 데이터 유형 및 기타 속성을 정의합니다. 자세한 내용은 ‘스키마 관리’를 참조하십시오.

검색은 벡터 유사도 검색을 수행하는 작업을 실행하는 API로, 실행을 위해 벡터 데이터가 필요합니다. 자세한 내용은 단일 벡터 검색을 참조하십시오.

세그먼트

세그먼트는 삽입된 데이터를 저장하는 자동으로 생성된 데이터 파일입니다. 하나의 컬렉션에는 여러 세그먼트가 포함될 수 있으며, 각 세그먼트는 수많은 엔티티를 담을 수 있습니다. 벡터 유사도 검색이 진행되는 동안 Milvus는 각 세그먼트를 분석하여 검색 결과를 집계합니다.

세그먼트에는 ‘성장 중(growing)’과 ‘봉인됨(sealed)’의 두 가지 유형이 있습니다. 성장 중인 세그먼트는 특정 임계값이나 시간 제한에 도달할 때까지 새로운 데이터를 계속 수집하며, 그 이후에는 봉인됩니다. 일단 봉인되면 세그먼트는 더 이상 새로운 데이터를 수락하지 않고 오브젝트 스토리지로 전송됩니다. 한편, 유입되는 데이터는 새로운 성장 중인 세그먼트로 라우팅됩니다. 성장 중인 세그먼트에서 봉인된 세그먼트로의 전환은 미리 정의된 엔티티 한도에 도달하거나 성장 상태에서 허용되는 최대 기간을 초과할 때 트리거됩니다. 자세한 내용은 ‘설계 세부 사항’을 참조하십시오.

Spark-Milvus 커넥터

Spark-Milvus 커넥터는 Apache Spark와 Milvus 간의 원활한 통합을 제공하며, Apache Spark의 데이터 처리 및 머신 러닝(ML) 기능을 Milvus의 벡터 데이터 저장 및 검색 기능과 결합합니다.

샤드

Milvus는 기본 키의 해싱을 기반으로 구성된 샤드를 사용하여 여러 노드에 쓰기 작업을 분산함으로써 데이터 쓰기 성능을 향상시킵니다. 이를 통해 클러스터의 병렬 컴퓨팅 기능을 활용합니다.

파티셔닝은 파티션 이름을 지정하여 읽기 부하를 줄이는 반면, 샤딩은 쓰기 부하를 여러 서버에 분산시킵니다.

스파스 벡터

스파스 벡터는 벡터 임베딩을 사용하여 단어나 구를 표현하며, 대부분의 요소는 0이고 단 하나의 0이 아닌 요소만이 특정 단어의 존재를 나타냅니다. SPLADEv2와 같은 스파스 벡터 모델은 도메인 외 지식 검색, 키워드 인식 및 해석 가능성 측면에서 밀집 모델보다 뛰어난 성능을 보입니다. 자세한 내용은 ‘스파스 벡터’를 참조하십시오.

스트리밍 서비스

스트리밍 서비스는 다양한 스트리밍 관련 기능을 지원하기 위해 WAL(Write-Ahead Log)을 기반으로 구축된 Milvus 내부 스트리밍 시스템 모듈을 지칭하는 개념입니다. 여기에는 스트리밍 데이터 수집/구독, 클러스터 상태의 장애 복구, 스트리밍 데이터를 이력 데이터로 변환, 증가하는 데이터에 대한 쿼리 등이 포함됩니다. 이 서비스는 스트리밍 코디네이터, 스트리밍 노드 클러스터 및 스트리밍 클라이언트 구성 요소로 이루어져 있습니다. 자세한 내용은 스트리밍 서비스를 참조하십시오.

비정형 데이터

이미지, 비디오, 오디오, 자연어 등을 포함한 비정형 데이터는 미리 정의된 모델이나 구성 방식을 따르지 않는 정보입니다. 이 데이터 유형은 전 세계 데이터의 약 80%를 차지하며, 다양한 인공지능(AI) 및 머신러닝(ML) 모델을 사용하여 벡터로 변환될 수 있습니다.

VChannel

VChannel은 가상 채널(virtual channel)을 의미합니다. 각 VChannel은 컬렉션 내의 샤드를 나타냅니다. 각 컬렉션에는 데이터 삽입, 삭제 및 업데이트를 기록하기 위한 VChannel 그룹이 할당됩니다. VChannel은 논리적으로는 분리되어 있지만, 물리적으로는 스트리밍 서비스를 통해 리소스를 공유합니다. 자세한 내용은 스트리밍 서비스를 참조하십시오.

벡터

임베딩 벡터는 이메일, IoT 센서 데이터, 인스타그램 사진, 단백질 구조 등과 같은 비정형 데이터의 특징을 추상화한 것입니다. 수학적으로 말하면, 임베딩 벡터는 부동 소수점 숫자 또는 이진수의 배열입니다. 비정형 데이터를 임베딩 벡터로 변환하는 데는 최신 임베딩 기법이 사용됩니다. Milvus는 2.4.0 버전부터 밀집 벡터와 희소 벡터를 모두 지원합니다.

WAL 스토리지

WAL(Write-Ahead Log) 스토리지는 분산 시스템에서 데이터 내구성과 일관성을 보장하는 기반입니다. 변경 사항이 커밋되기 전에 먼저 로그에 기록되므로, 장애 발생 시 중단된 지점부터 정확하게 복구할 수 있습니다. Milvus는 Woodpecker를 WAL 저장 시스템으로 사용하며, 이 시스템은 MemoryBuffer 및 QuorumBuffer 모드를 모두 지원합니다. 자세한 내용은 Woodpecker 아키텍처를 참조하십시오.

Woodpecker

Woodpecker는 Milvus 2.6에 도입된 클라우드 네이티브 WAL 시스템으로, Kafka와 Pulsar를 대체합니다. 제로 디스크 아키텍처와 두 가지 배포 모드(MemoryBuffer 및 QuorumBuffer)를 통해 높은 처리량, 낮은 운영 오버헤드, 오브젝트 스토리지 상에서의 원활한 확장성을 제공합니다. 자세한 내용은 ‘Woodpecker 아키텍처’를 참조하십시오.

Zilliz Cloud

Zilliz Cloud에서 제공하는 완전 관리형 Milvus로, 더 많은 엔터프라이즈 기능과 고도로 최적화된 성능을 제공합니다.