용어집 (Terminology)
이 문서는 Milvus에서 자주 쓰는 핵심 용어를 정리한 용어집이에요. 각 용어의 정의와 함께 더 자세한 내용을 볼 수 있는 관련 문서 링크를 함께 담아요.
출처: Milvus 문서
본문
AutoID
AutoID는 기본 필드의 속성으로, 기본 필드에 AutoIncrement(자동 증가)를 활성화할지 여부를 결정해요. AutoID의 값은 타임스탬프를 기준으로 정의돼요. 자세한 내용은 create_schema를 참고하세요.
Auto Index
Milvus는 경험적 데이터를 바탕으로 특정 필드에 가장 적합한 인덱스 타입과 파라미터를 자동으로 결정해요. 특정 인덱스 파라미터를 제어할 필요가 없는 상황에서 이상적이에요. 자세한 내용은 add_index를 참고하세요.
Attu
Attu는 Milvus의 올인원 관리 도구로, 시스템 관리의 복잡성과 비용을 크게 줄여줘요.
Birdwatcher
Birdwatcher는 Milvus의 디버깅 도구로, etcd에 연결해 Milvus 서버의 상태를 모니터링하고 실시간으로 조정할 수 있게 해줘요. 또한 etcd 파일 백업을 지원해 개발자의 문제 해결을 돕기도 해요.
Bulk Writer
Bulk Writer는 Milvus SDK(예: PyMilvus, Java SDK)에서 제공하는 데이터 처리 도구로, 효율적인 가져오기를 위해 원시 데이터셋을 Milvus와 호환되는 형식으로 변환해요.
Bulk Insert
Bulk Insert는 단일 요청으로 여러 파일을 가져올 수 있게 해 쓰기 성능을 향상시키는 API로, 대규모 데이터셋으로 작업을 최적화해요.
Cardinal
Cardinal은 Zilliz Cloud가 개발한 첨단 벡터 검색 알고리즘으로, 비교할 수 없는 검색 품질과 성능을 제공해요. 혁신적인 설계와 광범위한 최적화를 통해 Cardinal은 다양한 K 크기, 높은 필터링, 다양한 데이터 분포 등의 다양한 프로덕션 시나리오를 적응적으로 처리하면서 Knowhere를 몇 배에서 한 자릿수 이상 능가해요.
Channel
Milvus는 스트리밍 서비스 아키텍처의 일부로 PChannel과 VChannel 두 가지 유형의 채널을 사용해요. 각 PChannel은 Woodpecker가 관리하는 WAL 스트림에 해당하고, 각 VChannel은 컬렉션의 샤드에 해당해요. 스트리밍 서비스는 데이터 일관성과 장애 복구를 보장하기 위해 이 채널들을 관리해요.
Collection
Milvus에서 컬렉션은 관계형 데이터베이스 관리 시스템(RDBMS)의 테이블에 해당해요. 컬렉션은 엔티티를 저장하고 관리하는 데 사용되는 주요 논리 객체예요. 자세한 내용은 Manage Collections를 참고하세요.
Dependency
의존성(dependency)은 다른 프로그램이 작동하기 위해 의존하는 프로그램이에요. Milvus의 의존성에는 etcd(메타데이터 저장), MinIO 또는 S3(객체 저장), Woodpecker 같은 메시지 큐(스냅샷 로그 관리)가 포함돼요. 자세한 내용은 Data Infrastructure를 참고하세요.
Dynamic schema
동적 스키마는 기존 스키마를 수정하지 않고 새 필드가 있는 엔티티를 컬렉션에 삽입할 수 있게 해줘요. 즉, 컬렉션의 전체 스키마를 알지 못해도 데이터를 삽입하고 아직 정의되지 않은 필드를 포함할 수 있다는 뜻이에요. 컬렉션을 만들 때 동적 필드를 활성화하면 이 스키마 없는(schema-free) 기능을 켤 수 있어요. 자세한 내용은 Enable Dynamic Field를 참고하세요.
Embeddings
Milvus는 인기 있는 임베딩 제공자와 함께 작동하는 내장 임베딩 함수를 제공해요. Milvus에서 컬렉션을 만들기 전에 이 함수들을 사용해 데이터셋의 임베딩을 생성할 수 있어 데이터 준비와 벡터 검색 과정을 간소화해요. 임베딩 생성 실습은 Using PyMilvus's Model To Generate Text Embeddings을 참고하세요.
Entity
엔티티는 실제 세계의 객체를 나타내는 필드 그룹으로 구성돼요. Milvus의 각 엔티티는 고유한 기본 키로 표현돼요.
기본 키를 사용자 지정할 수 있어요. 수동으로 구성하지 않으면 Milvus가 엔티티에 기본 키를 자동으로 할당해요. 기본 키를 사용자 지정하기로 선택하면 Milvus가 현재 기본 키 중복 제거를 지원하지 않는다는 점을 주의하세요. 따라서 같은 컬렉션에 중복 기본 키가 있을 수 있어요. 자세한 내용은 Insert Entities를 참고하세요.
Field
Milvus 컬렉션의 필드는 RDBMS 테이블의 열(column)에 해당해요. 필드는 구조화된 데이터(예: 숫자, 문자열)를 위한 스칼라 필드이거나 임베딩 벡터를 위한 벡터 필드일 수 있어요.
Filter
Milvus는 조건자(predicate)로 검색해 스칼라 필터링을 지원해요. 쿼리와 검색 안에서 필터 조건을 정의해 결과를 정제할 수 있게 해줘요.
Filtered search
필터링된 검색은 벡터 검색에 스칼라 필터를 적용해 특정 기준에 따라 검색 결과를 정제할 수 있게 해줘요. 자세한 내용은 Filtered search를 참고하세요.
Hybrid search
Hybrid Search는 Milvus 2.4.0부터 지원되는 하이브리드 검색 API예요. 여러 벡터 필드를 검색하고 융합할 수 있어요. 스칼라 필드 필터링과 결합된 벡터 검색은 "filtered search"라고 해요. 자세한 내용은 Hybrid Search를 참고하세요.
Index
벡터 인덱스는 원시 데이터에서 파생된 재구성된 데이터 구조로, 벡터 유사도 검색 과정을 크게 가속화할 수 있어요. Milvus는 벡터 필드와 스칼라 필드 모두에 대해 다양한 인덱스 타입을 지원해요. 자세한 내용은 Vector index types을 참고하세요.
Kafka-Milvus Connector
Kafka-Milvus Connector는 Milvus용 Kafka 싱크 커넥터를 말해요. Kafka에서 Milvus로 벡터 데이터를 스트리밍할 수 있게 해줘요.
Knowhere
Knowhere는 Milvus의 핵심 벡터 실행 엔진으로, Faiss, Hnswlib, Annoy를 포함한 여러 벡터 유사도 검색 라이브러리를 통합해요. Knowhere는 이기종 컴퓨팅을 지원하도록 설계됐어요. 즉, 인덱스 구축과 검색 요청을 어떤 하드웨어(CPU 또는 GPU)에서 실행할지 제어해요. 이것이 Knowhere라는 이름의 유래예요—어디서(where) 연산을 실행할지 안다(know)는 뜻이죠.
Log snapshot
로그 스냅샷은 바이너리 로그로, Milvus에서 데이터에 대한 업데이트와 변경을 기록하고 처리하는 세그먼트 안의 더 작은 단위예요. 세그먼트의 데이터는 여러 binlog에 영속화돼요. Milvus에는 InsertBinlog, DeleteBinlog, DDLBinlog의 세 가지 유형의 binlog가 있어요. 자세한 내용은 Meta storage를 참고하세요.
Metric type
유사도 메트릭 타입은 벡터 간 유사도를 측정하는 데 사용돼요. 현재 Milvus는 유클리드 거리(L2), 내적(IP), 코사인 유사도(COSINE), 이진 메트릭 타입을 지원해요. 시나리오에 따라 가장 적합한 메트릭 타입을 선택할 수 있어요. 자세한 내용은 Similarity Metrics을 참고하세요.
MemoryBuffer
MemoryBuffer는 Woodpecker의 경량 배포 모드로, 들어오는 쓰기를 메모리에 임시 버퍼링하고 주기적으로 클라우드 객체 저장소로 플러시해요. 이 모드는 소규모 배포 또는 단순성을 성능보다 우선시하는 프로덕션 환경의 배치 중심 워크로드에 가장 적합해요. 자세한 내용은 Woodpecker Architecture를 참고하세요.
Mmap
메모리 매핑 파일(memory-mapped files)은 파일 내용을 메모리에 직접 매핑해 효율적인 데이터 처리를 가능하게 해요. 이는 메모리가 제한적이고 모든 데이터를 로드할 수 없을 때 특히 유용해요. 이 기법은 데이터 용량을 늘리고 어느 정도 성능을 유지할 수 있어요. 그러나 데이터가 메모리 용량을 크게 초과하면 검색과 쿼리 속도가 크게 저하될 수 있어요. 자세한 내용은 MMap-enabled Data Storage을 참고하세요.
Milvus Backup
Milvus Backup은 데이터 사본을 만드는 도구로, 데이터 손실 사건 이후 원본을 복원하는 데 사용할 수 있어요.
Milvus CDC
Milvus CDC(change data capture)는 주-대기 재해 복구를 위해 한 Milvus 클러스터에서 다른 클러스터로 데이터 변경을 복제하는 도구예요.
Milvus CLI
Milvus Command-Line Interface(CLI)는 데이터베이스 연결, 데이터 작업, 데이터 가져오기·내보내기를 지원하는 명령줄 도구예요. Milvus Python SDK를 기반으로 하며, 대화형 명령줄 프롬프트를 통해 터미널에서 명령을 실행할 수 있게 해줘요.
Milvus Migration
Milvus Migration은 다양한 데이터 소스에서 Milvus 2.x로 데이터를 쉽게 마이그레이션할 수 있게 설계된 오픈소스 도구예요.
Milvus cluster
Milvus의 클러스터 배포에서는 높은 가용성과 쉬운 확장성을 달성하기 위해 노드 그룹이 서비스를 제공해요.
Milvus standalone
Milvus의 단일 배포에서는 데이터 삽입, 인덱스 구축, 벡터 유사도 검색을 포함한 모든 작업이 하나의 단일 프로세스에서 완료돼요.
Multi-Vector
Milvus는 2.4.0부터 한 컬렉션에서 여러 벡터 필드를 지원해요. 자세한 내용은 Hybrid Search를 참고하세요.
Partition
파티션은 컬렉션의 분할이에요. Milvus는 컬렉션 데이터를 물리적 저장소에서 여러 부분으로 나누는 것을 지원해요. 이 과정을 파티셔닝(partitioning)이라고 하며, 각 파티션은 여러 세그먼트를 포함할 수 있어요. 자세한 내용은 Manage Partitions를 참고하세요.
Partition key
필드의 파티션 키 속성은 파티션 키 값을 기준으로 엔티티를 별개의 파티션으로 분리할 수 있게 해줘요. 이 그룹화는 같은 키 값을 공유하는 엔티티가 함께 저장되도록 보장하며, 파티션 키 필드로 필터링된 쿼리 중 시스템이 관련 없는 파티션을 건너뛰게 해 검색 작업을 가속화할 수 있어요. 자세한 내용은 Use Partition Key를 참고하세요.
PChannel
PChannel은 물리적 채널(physical channel)을 뜻해요. 각 PChannel은 Woodpecker가 관리하는 WAL 스트림에 해당해요. 기본적으로 Milvus 클러스터가 시작될 때 PChannel 그룹이 데이터 삽입, 삭제, 업데이트를 기록하는 로그를 저장하도록 할당돼요. 자세한 내용은 Streaming Service를 참고하세요.
PyMilvus
PyMilvus는 Milvus의 Python SDK예요. 소스 코드는 오픈소스이며 GitHub에서 호스팅돼요. MilvusClient(새 버전 Python SDK) 또는 원래 ORM 모듈을 선택해 Milvus와 통신할 수 있는 유연성이 있어요.
Query
Query는 지정된 불리언 표현식을 필터로 사용해 스칼라 필터링을 수행하는 API예요. 자세한 내용은 Get & Scalar Query를 참고하세요.
QuorumBuffer
QuorumBuffer는 실시간 응답성과 강력한 내결함성을 모두 요구하는 지연 시간에 민감하고 고빈도 읽기/쓰기 워크로드를 위해 설계된 Woodpecker의 배포 모드예요. 3중 복제 쿼럼 쓰기를 사용하는 고속 쓰기 버퍼로 기능하며 강력한 일관성과 높은 가용성을 보장해요. 자세한 내용은 Woodpecker Architecture를 참고하세요.
Range search
범위 검색은 검색 벡터로부터 지정된 거리 안에 있는 벡터를 찾을 수 있게 해줘요. 자세한 내용은 Range search를 참고하세요.
Schema
스키마는 데이터 타입과 데이터 속성을 정의하는 메타 정보예요. 각 컬렉션은 컬렉션의 모든 필드, 자동 ID(기본 키) 할당 활성화 여부, 컬렉션 설명을 정의하는 자체 컬렉션 스키마를 가져요. 필드 스키마도 컬렉션 스키마에 포함되며, 필드의 이름, 데이터 타입, 기타 속성을 정의해요. 자세한 내용은 Manage Schema를 참고하세요.
Search
Search는 벡터 유사도 검색을 수행하는 API로, 실행하려면 벡터 데이터가 필요해요. 자세한 내용은 Single-Vector Search를 참고하세요.
Segment
세그먼트는 삽입된 데이터를 저장하는 자동 생성 데이터 파일이에요. 컬렉션은 여러 세그먼트를 포함할 수 있고, 각 세그먼트는 많은 엔티티를 보유할 수 있어요. 벡터 유사도 검색 중 Milvus는 각 세그먼트를 검사해 검색 결과를 구성해요.
세그먼트에는 growing과 sealed의 두 가지 유형이 있어요. growing 세그먼트는 특정 임계값이나 시간 제한에 도달할 때까지 새 데이터를 계속 수집하다가 sealed가 돼요. 일단 sealed되면 세그먼트는 더 이상 새 데이터를 받지 않고 객체 저장소로 전송돼요. 그동안 들어오는 데이터는 새 growing 세그먼트로 라우팅돼요. growing 세그먼트에서 sealed 세그먼트로의 전환은 미리 정의된 엔티티 한도에 도달하거나 growing 상태에서 허용된 최대 지속 시간을 초과할 때 트리거돼요. 자세한 내용은 Design Details를 참고하세요.
Spark-Milvus Connector
Spark-Milvus Connector는 Apache Spark와 Milvus 사이의 원활한 통합을 제공해요. Apache Spark의 데이터 처리와 머신러닝(ML) 기능을 Milvus의 벡터 데이터 저장·검색 기능과 결합해요.
Shard
Milvus는 기본 키의 해싱을 기반으로 구성된 샤드를 사용해 쓰기 작업을 여러 노드에 분산함으로써 데이터 쓰기 성능을 향상시켜요. 이는 클러스터의 병렬 컴퓨팅 기능을 활용해요.
파티셔닝은 파티션 이름을 지정해 읽기 부하를 줄이고, 샤딩은 여러 서버 간에 쓰기 부하를 분산해요.
Sparse vector
스파스 벡터는 대부분의 요소가 0이고 특정 단어의 존재를 나타내는 하나의 0이 아닌 요소만 있는 벡터 임베딩으로 단어나 구문을 나타내요. SPLADEv2 같은 스파스 벡터 모델은 도메인 외 지식 검색, 키워드 인식, 해석 가능성에서 밀집 모델보다 성능이 뛰어나요. 자세한 내용은 Sparse Vectors를 참고하세요.
Streaming Service
Streaming Service는 Write-Ahead Log(WAL)를 중심으로 구축된 Milvus 내부 스트리밍 시스템 모듈의 개념으로, 다양한 스트리밍 관련 기능을 지원해요. 여기에는 스트리밍 데이터 수집/구독, 클러스터 상태의 장애 복구, 스트리밍 데이터의 과거 데이터 변환, growing 데이터 쿼리가 포함돼요. 이 서비스는 Streaming Coordinator, Streaming Node Cluster, Streaming Client 컴포넌트로 구성돼요. 자세한 내용은 Streaming Service를 참고하세요.
Unstructured data
이미지, 비디오, 오디오, 자연어를 포함한 비구조화 데이터는 미리 정의된 모델이나 구성 방식을 따르지 않는 정보예요. 이 데이터 타입은 세계 데이터의 약 80%를 차지하며, 다양한 인공지능(AI) 및 ML 모델을 사용해 벡터로 변환할 수 있어요.
VChannel
VChannel은 가상 채널(virtual channel)을 뜻해요. 각 VChannel은 컬렉션의 샤드를 나타내요. 각 컬렉션에는 데이터 삽입, 삭제, 업데이트를 기록하기 위한 VChannel 그룹이 할당돼요. VChannel은 논리적으로 분리되어 있지만 스트리밍 서비스를 통해 물리적으로 리소스를 공유해요. 자세한 내용은 Streaming Service를 참고하세요.
Vector
임베딩 벡터는 이메일, IoT 센서 데이터, Instagram 사진, 단백질 구조 등 비구조화 데이터의 특징 추상화예요. 수학적으로 임베딩 벡터는 부동소수점 숫자 또는 이진수의 배열이에요. 현대 임베딩 기법은 비구조화 데이터를 임베딩 벡터로 변환하는 데 사용돼요. Milvus는 2.4.0부터 밀집 벡터와 스파스 벡터를 모두 지원해요.
WAL Storage
Write-Ahead Log(WAL) 저장은 분산 시스템에서 데이터 내구성과 일관성의 기반이에요. 어떤 변경이 커밋되기 전에 먼저 로그에 기록돼요. 이는 실패가 발생하더라도 중단했던 지점에서 정확히 복구할 수 있게 보장해요. Milvus는 WAL 저장 시스템으로 Woodpecker를 사용하며, MemoryBuffer와 QuorumBuffer 모드를 모두 지원해요. 자세한 내용은 Woodpecker Architecture를 참고하세요.
Woodpecker
Woodpecker는 Milvus 2.6에서 Kafka와 Pulsar를 대체하는 클라우드 네이티브 WAL 시스템이에요. 제로 디스크 아키텍처와 두 가지 배포 모드(MemoryBuffer와 QuorumBuffer)로 객체 저장소에서 높은 처리량, 낮은 운영 오버헤드, 원활한 확장성을 제공해요. 자세한 내용은 Woodpecker Architecture를 참고하세요.
Zilliz Cloud
Zilliz Cloud의 완전 관리형 Milvus로, 더 많은 엔터프라이즈 기능과 고도로 최적화된 성능을 제공해요.
더 알아보기 (Learn more)
- Milvus 공식 문서 — 전체 참조 자료
- Manage Collections — 컬렉션 관리
- Streaming Service — 스트리밍 서비스
- Woodpecker Architecture — Woodpecker 아키텍처