Milvus 3.0 이 2026년 5월 9일에 3.0-beta 로 공개됐다. 아직 정식 출시(GA)가 아니라 베타다. 2.6.x가 프로덕션 버전이고, 3.0은 미리 보는 단계다. 그래서 이 글은 "지금 올려라"가 아니라 3.0 이 어떤 방향으로 가려 하는지, 그게 어떤 가치인지를 정리한 스터디 노트다.
한 문장으로 줄이면 이렇다. 2.x 가 "벡터 검색 엔진"을 다듬는 흐름이었다면, 3.0 은 운영 컴포넌트를 더 줄이고, 데이터 레이크와 한 몸이 되려는 흐름이다.
이 글은 Milvus 아키텍처와 동작에서 정리한 2.6 구조를 전제로 한다. storage-compute 분리, segment(growing/sealed), WAL 개념이 아직 낯설면 그 글을 먼저 읽는 게 좋다.
3.0 의 변경점은 많지만, 묶어 보면 세 갈래다.
하나씩 본다.
2.x 를 처음 보면 컴포넌트 수에 질린다. 코디네이터 여러 종류에 워커 노드, 거기에 Kafka/Pulsar 같은 외부 메시지 큐까지 얹혀 있었다. 3.0 은 이 구조를 정리한다.
| 항목 | 2.5 이전 | 3.0 |
|---|---|---|
| Streaming Node | 없음 (또는 2.5 실험적·기본 비활성) | 기본 활성화 |
| indexNode | 별도 컴포넌트 | 제거 (역할 흡수) |
| WAL 메시지 큐 | Kafka / Pulsar 외부 의존 | Woodpecker 권장 (zero-disk) |
Streaming Node 는 실시간으로 들어오는 데이터를 WAL 에 쓰고 아직 영속화되지 않은 최신 데이터의 검색을 맡는 컴포넌트다. 2.5 에서 실험적으로 들어왔다가 3.0 에서 기본값이 됐다. 스트림 처리(Streaming Node)와 배치 처리(Query Node, Data Node)를 분리해 둔 덕에 실시간 입력과 대량 검색이 서로 간섭하지 않는다.
Woodpecker 는 Kafka/Pulsar 를 대체하는 Milvus 자체 WAL 이다. 별도 큐 서버나 전용 디스크 없이 오브젝트 스토리지에 직접 쓰는 zero-disk 방식이라, 운영자가 따로 관리할 인프라가 줄어든다. 2.6 에서 도입돼 3.0 에서 권장 방식이 됐다. 다만 아키텍처 글에서도 적었듯 상업적 사용 라이선스 이슈가 거론된 적이 있어, 환경에 따라 Kafka 를 그대로 쓰는 선택지도 남겨 둔다.
이게 왜 가치인가. 전용 벡터 DB 를 꺼리는 가장 큰 이유가 "운영할 컴포넌트가 너무 많다"였는데, 3.0 은 정확히 그 부담을 깎는다.
3.0 에서 가장 성격이 다른 변화가 External Collection 이다. 지금까지 벡터 DB 를 쓰려면 원본 데이터를 임베딩해서 DB 안으로 복사해 넣어야 했다. External Collection은 그 복사를 없앤다. 데이터는 원래 있던 자리(레이크의 파일)에 두고, Milvus는 스키마·인덱스·쿼리 실행만 관리한다.
여기에 Storage V3(S3 호환 오브젝트 스토리지 위의 manifest 기반 컬럼 저장 엔진)와 Snapshot(특정 시점의 읽기 전용 뷰)이 더해진다. Spark 가 Milvus 컬렉션을 Snapshot 으로 직접 읽을 수도 있다.
직설적으로 말하면, Milvus 가 별도 섬으로 떨어진 검색 엔진이 아니라 레이크하우스의 한 부품이 되려는 방향이다. 이미 데이터 레이크(S3와 Spark 등)를 운영하는 조직이라면, 데이터를 이중으로 적재하지 않아도 되는 게 실질적인 이득이다.
벡터 DB 를 쓰다 보면 "이런 기본적인 것도 안 되나" 싶은 순간이 온다. 3.0 은 그 빈칸들을 메운다.
TIMESTAMPTZ 필드를 두고 TTL 필드로 지정하면, 만료된 항목을 Milvus가 회수한다. 로그·세션처럼 수명이 있는 데이터에 유용하다.count, sum, avg, min, max 같은 SQL식 집계와 필드별 오름/내림차순 정렬을 서버에서 처리한다. 예전에는 클라이언트로 데이터를 가져와 직접 계산해야 했다.기존 글에서 정리한 결론은 "수천만 벡터·저부하 규모에선 속도가 아니라 기능이 전용 DB 를 쓰는 이유"였다. 3.0 을 이 관점으로 거르면, 화려한 것보다 다음 둘이 실질적이다.
반대로 External Collection·Storage V3 같은 레이크하우스 통합은 이미 대규모 데이터 레이크를 굴리는 조직에서 빛나는 기능이라, 소규모에선 당장 체감이 덜하다.
3.0 은 beta 라 프로덕션에 바로 올릴 단계는 아니다. 변화의 방향은 운영 대상을 줄이고, 데이터 레이크와 통합하고, 스키마와 검색 기능을 확장하는 것으로 정리할 수 있다. "전용 벡터 DB 는 운영이 부담스럽다"와 "데이터를 또 복사해야 한다"는 두 가지 거부감을 정면으로 겨냥한 셈이다.
다음엔 Streaming Node 가 기본이 된 3.0 구조에서 데이터 입력·검색 흐름이 2.6 과 어떻게 달라지는지, External Collection 으로 S3 의 데이터를 실제로 zero-copy 검색하는 흐름을 직접 띄워 확인해 볼 생각이다.