milvus-logo
LFAI
홈페이지
  • 밀버스 소개

릴리스 노트

Milvus의 새로운 기능을 알아보세요! 이 페이지에는 각 릴리스의 새로운 기능, 개선 사항, 알려진 문제 및 버그 수정 사항이 요약되어 있습니다. 이 섹션에서 v2.4.0 이후 출시된 각 버전에 대한 릴리스 노트를 확인할 수 있습니다. 이 페이지를 정기적으로 방문하여 업데이트에 대해 알아보는 것이 좋습니다.

v2.4.11

릴리스 날짜: 2024년 9월 11일

Milvus 버전Python SDK 버전Java SDK 버전Node.js SDK 버전
2.4.112.4.62.4.32.4.8

Milvus 2.4.11은 MARISA 트라이 인덱스, 압축 및 로딩 작업과 관련된 여러 가지 중요한 문제를 해결하는 버그 수정 릴리스입니다. 이 릴리스에는 표현식을 보고 삭제 안정성을 개선하는 새로운 기능이 도입되었습니다. 2.4.x 시리즈의 모든 사용자는 이 버전으로 업그레이드하여 이러한 개선 사항과 수정 사항을 활용하시기 바랍니다.

주요 기능

  • 2.4에서 표현식에 대한 정적 보기 추가(#35954)
  • 버퍼 삭제 관련 할당량 로직 구현(#35997)

버그 수정

  • GreaterThan 및 GreaterThanEqual 비교에 대한 Trie 인덱스 범위 연산 문제 해결(#36126)
  • 트라이 인덱스 구성에서 marisa_label_order 사용 수정(#36060)
  • trie.predictive_search 값 검사 개선(#35999)
  • 반전된 인덱스에서 이진 산술 표현식 지원 활성화(#36097).
  • 스킵인덱스로 인한 세그먼트 오류 수정(#35908)
  • 프록시 메타 캐시에서 메모리 누수 해결(#36076)
  • 디렉터리 충돌을 방지하기 위해 mmap 파일 경로 이름 변경(#35975)
  • 믹스 압축에서 실패/시간 초과 작업에 대한 로깅 및 정리 개선(#35967).
  • 위임자가 메모리를 많이 사용하는 동안 논리 교착 상태 해결(#36066).
  • 압축으로 모든 삽입이 삭제될 때 빈 세그먼트 생성 구현(#36045)
  • 2.4의 이전 버전 로드 정보에서 로드 필드 목록 채우기 수정(#36018)
  • 2.4에서 추적 구성 업데이트 로직 수정(#35998)
  • 동적 파티션 릴리스 중 검색/쿼리 요청 실패 해결(#36019)
  • 폴백 매개변수의 재정의 방지(#36006)
  • 유효성 검사를 위한 적절한 권한 그룹 등록 보장(#35938)
  • DB 리미터 노드의 잘못된 정리 방지(#35992)
  • 장애 복구 후 복제본이 쿼리에 참여하지 않는 문제 해결(#35925)
  • 클러스터링 압축 쓰기에서 데이터 경합 해결(#35958)
  • 이동 작업 후 변수 참조 수정(#35904)
  • 클러스터링 키 스킵 로드 동작 검사 구현(#35899)
  • 2.4에서 쿼리코드 옵저버의 단일 시작 보장(#35817)

개선 사항

  • Milvus 및 프로토 버전을 2.4.11로 업그레이드(#36069).
  • 단위 테스트에서 메모리 누수 문제 해결 및 단위 테스트 빌드에 use_asan 옵션 활성화(#35857).
  • l0segmentsrowcount 제한을 보다 적절한 값으로 조정(#36015).
  • 델타로그 메모리 추정 계수를 1로 수정(#36035).
  • 로드 필드 목록 비교를 위한 슬라이스셋퀄 구현(#36062).
  • 삭제 작업의 로그 빈도 감소(#35981)
  • etcd 버전을 3.5.14로 업그레이드(#35977)
  • 워밍업 후 MMAP-RSS 감소 최적화(#35965)
  • 읽기 요청에 대한 속도 제한기에서 냉각 오프 기간 제거(#35936)
  • 이전에 로드된 컬렉션에 대한 로드 필드 검사 개선(#35910)
  • 2.4에서 권한 목록과 관련된 역할 삭제 지원 추가(#35863)
  • 더 이상 사용되지 않는 프로토 라이브러리 사용을 금지하는 depguard 규칙 구현(#35818).

기타

v2.4.10

릴리스 날짜 2024년 8월 30일

Milvus 버전Python SDK 버전Java SDK 버전Node.js SDK 버전
2.4.102.4.62.4.32.4.6

Milvus 2.4.10은 기능 및 안정성이 크게 개선되었습니다. 주요 기능으로는 AutoID 사용 컬렉션에 대한 업서트 작업 지원, 부분 컬렉션 로딩 기능, 메모리 사용량 최적화를 위한 다양한 메모리 매핑(MMAP) 구성 등이 있습니다. 이번 릴리스에서는 패닉, 코어 덤프, 리소스 누수를 유발하는 여러 버그도 해결되었습니다. 이러한 개선 사항을 최대한 활용하려면 업그레이드를 권장합니다.

주요 기능

  • 자동 ID를 사용한 업서트: 자동 ID 생성을 통한 업서트 작업 지원(#34633)
  • 필드 부분 로드 수집 [베타 프리뷰]: 컬렉션의 특정 필드 로드 허용(#35696)
  • RBAC 개선 사항:
    • 변경 데이터 캡처(CDC)에 대한 RBAC 메시지 지원 추가(#35562)
    • 읽기 전용/읽기/관리 권한 그룹을 도입하여 RBAC 부여 프로세스 간소화(#35543)
    • RBAC 구성 백업 및 복원을 위한 새로운 API(#35513)
    • RBAC 메타데이터 복원 후 프록시 캐시 새로 고침(#35636)
  • MMAP 구성 개선: MMAP 동작을 제어하기 위한 보다 일반적인 구성 옵션(#35609)
  • 데이터베이스 액세스 제한: 데이터베이스에 대한 읽기 액세스를 제한하는 새로운 속성(#35754)

버그 수정

  • Arrow Go 클라이언트가 오류를 반환하지 않는 문제 수정(#35820)
  • 부정확한 속도 제한 수정(#35700)
  • 가져오기 관련 API 실패 후 프록시 패닉 해결(#35559)
  • GC 채널 체크포인트 중 실수로 삭제될 수 있는 문제 수정(#35708)
  • 빈 후보 임포트 세그먼트로 인한 패닉 해결(#35674)
  • MMAP 메모리 할당 해제 수정(#35726)
  • 2.2에서 2.4로 업그레이드 시 적절한 채널 감시 보장(#35695)
  • 데이터노드 감시 해제 채널 해제 기능 수정(#35657)
  • 루트코드 메타데이터의 파티션 수 수정(#35601)
  • 특정 파라미터에 대한 동적 구성 업데이트 관련 문제 해결(#35637)

개선 사항

성능

  • 동적 필드에서 검색 최적화(#35602)
  • AVX512의 비트 세트 성능 개선(#35480)
  • 효율성 향상을 위해 once 초기화 후 값 다시 읽기(#35643)

롤링 업그레이드 개선

  • 일시 중단 후 쿼리 노드를 읽기 전용으로 표시(#35586)
  • 이전 코디네이터와 새 노드/프록시의 공존 방지(#35760)

기타

  • Milvus 코어 빌드 프로세스 최적화(#35660)
  • 프로토부프-고 v2로 업데이트(#35555)
  • 트레이스드 및 스패니드에 대한 16진수 문자열 인코딩으로 향상된 추적(#35568)
  • 쿼리 후크에 대한 히트 세그먼트 번호 메트릭 추가(#35619)
  • 로드 매개변수 구성 기능에 대한 이전 SDK와의 호환성 개선(#35573)
  • HTTP v1/v2 스로틀링 지원 추가(#35504)
  • 인덱스 메모리 추정 수정(#35670)
  • 큰 세그먼트 생성을 피하기 위해 믹스 컴팩터에 여러 세그먼트를 쓰는 기능(#35648).

v2.4.9

릴리스 날짜: 2024년 8월 20일

Milvus 버전Python SDK 버전Java SDK 버전Node.js SDK 버전
2.4.92.4.52.4.32.4.4

Milvus v2.4.9는 일부 코너 케이스에서 제한(topk) 미만의 결과를 반환할 수 있는 중요한 문제를 해결하고 플랫폼의 성능과 사용성을 향상시키기 위한 몇 가지 주요 개선 사항을 포함합니다.

중요한 수정 사항

  • 읽기 가능한 스냅샷에서 l0 세그먼트 제외(#35510).

개선 사항

  • 프록시에서 중복된 스키마 헬퍼 생성을 제거했습니다(#35502).
  • 우분투 20.04에서 Milvus 컴파일 지원 추가(#35457).
  • 잠금 사용을 최적화하고 이중 플러시 클러스터링 버퍼 쓰기(#35490)를 방지했습니다.
  • 유효하지 않은 로그 제거(#35473).
  • 클러스터링 압축 사용 가이드 문서(#35428)를 추가했습니다.
  • 스키마 도우미에서 동적 필드에 대한 지원을 추가했습니다(#35469).
  • 생성된 YAML에 msgchannel 섹션을 추가했습니다(#35466).

v2.4.8

릴리스 날짜: 2024년 8월 14일

Milvus 버전Python SDK 버전Java SDK 버전Node.js SDK 버전
2.4.82.4.52.4.32.4.4

Milvus 2.4.8은 시스템의 성능과 안정성에 몇 가지 중요한 개선 사항을 도입했습니다. 가장 눈에 띄는 기능은 지정된 클러스터링 키를 기반으로 대규모 컬렉션의 데이터를 재분배하여 검색 및 쿼리 효율성을 높이고 스캔하는 데이터의 양을 줄이는 클러스터링 압축의 구현입니다. 또한 압축은 샤드 데이터 노드에서 분리되어 모든 데이터 노드가 독립적으로 압축을 수행할 수 있어 내결함성, 안정성, 성능, 확장성이 향상되었습니다. 또한, Go와 C++ 구성 요소 간의 인터페이스가 비동기 CGO 호출을 사용하도록 리팩터링되어 세션 시간 초과와 같은 문제를 해결했으며, 프로파일링을 기반으로 여러 가지 다른 성능 최적화가 이루어졌습니다. 애플리케이션 종속성도 업데이트되어 알려진 보안 취약점을 해결했습니다. 또한 이번 릴리스에는 수많은 성능 최적화와 중요한 버그 수정도 포함되어 있습니다.

주요 기능

  • 클러스터링 압축을 구현하여 지정된 클러스터링 키를 기반으로 데이터를 재분배하여 쿼리 효율성을 향상시킬 수 있습니다(#34326),(#34363).

개선 사항

  • CGO에서 비동기 검색 및 검색 기능을 구현했습니다.(#34200)
  • 압축 프로세스를 샤드 데이터 노드에서 분리하여 시스템 모듈성을 개선했습니다.(#34157)
  • 프록시/위임자 내 쿼리 노드에서 클라이언트 풀링 지원을 추가하여 성능을 향상시켰습니다.(#35195)
  • Gin 및 RestfulV1 핸들러에서 JSON 마샬링 및 언마샬링 중 CPU 오버헤드를 최소화하기 위해 Sonic을 통합했습니다.(#35018)
  • 인증 결과 검색을 최적화하기 위해 인메모리 캐시를 도입했습니다.(#35272)
  • 자동 인덱스의 기본 메트릭 유형을 수정했습니다.[#34277, #34479]
  • 가변 열에 대한 런타임 메모리 형식을 리팩터링하여 메모리 사용량을 줄였습니다.[#34367, #35012, #35041]
  • 영구 데이터 저장이 가능하도록 압축 프로세스를 리팩터링했습니다.(#34268)
  • 증가하는 세그먼트에 대한 메모리 매핑 파일 지원을 활성화하여 메모리 관리를 개선했습니다.(#34110)
  • RESTful API 지원, 로깅 일관성 수준, 시스템 오류와 사용자 오류 구분을 추가하여 액세스 로그를 개선했습니다.[#34295, #34352, #34396]
  • Knowhere에서 새로운 range_search_k 매개변수를 활용하여 범위 검색 속도를 높였습니다.(#34709)
  • 필터 구성 및 쿼리 속도를 향상시키기 위해 차단된 블룸 필터를 적용했습니다.[#34377, #34922]
  • 메모리 사용량 개선:
    • 데이터노드 삽입 버퍼를 위한 사전 할당된 공간.(#34205)
    • Reduce 작업을 위한 FieldData 사전 할당.(#34254)
    • 메모리 누수를 방지하기 위해 삭제 코덱에서 레코드 해제.(#34506)
    • 파일 로드 중 디스크 파일 관리자의 동시성 수준 제어.(#35282)
    • 적시에 메모리를 해제할 수 있도록 Go 런타임 가비지 컬렉션 로직 최적화.(#34950)
    • 증가하는 세그먼트에 대한 새로운 봉인 정책을 구현했습니다.(#34779)
  • 데이터코드 개선:
    • CPU 사용량 감소.[#34231, #34309]
    • 더 빠른 가비지 컬렉션 종료 로직을 구현했습니다.(#35051)
    • 워커 노드 스케줄링 알고리즘 개선.(#34382)
    • 가져오기 작업을 위한 향상된 세그먼트 크기 제어 알고리즘.(#35149)
  • 로드 밸런싱 알고리즘 개선:
    • 위임자의 메모리 과부하 계수를 줄였습니다.(#35164)
    • 델리게이터에 고정 메모리 크기 할당.(#34600)
    • 새로운 쿼리 노드에 대한 세그먼트 및 채널의 과도한 할당을 방지했습니다.(#34245)
    • 쿼리 코디네이터의 스케줄링 주기당 작업 수를 줄이면서 스케줄링 빈도를 증가시켰습니다.(#34987)
    • 데이터 노드에서 채널 밸런싱 알고리즘 개선.(#35033)
  • 확장된 시스템 메트릭: 다음과 같은 특정 측면을 모니터링하기 위해 다양한 구성 요소에 걸쳐 새로운 메트릭을 추가했습니다:

변경 사항

  • 오픈 소스 사용자의 경우 이 버전에서는 FloatVectorBinaryVector 에 대한 자동 인덱스의 메트릭 유형이 각각 CosineHamming 로 변경됩니다.

  • 타사 종속성 버전 수정:

    • 이번 릴리스에서는 특정 타사 종속성 라이브러리에 대한 고정 버전이 도입되어 Milvus의 소프트웨어 공급망 관리가 크게 향상되었습니다.
    • 프로젝트를 업스트림 변경 사항으로부터 격리하여 잠재적인 중단으로부터 일일 빌드를 보호합니다.
    • 이 업데이트는 검증된 C++ 타사 패키지를 JFrog Cloud에서 독점적으로 호스팅하고 코난 레시피 리비전(RREV)을 활용함으로써 안정성을 보장합니다.
    • 이 접근 방식은 코난센터의 업데이트로 인한 변경 사항 중단의 위험을 완화합니다.
    • 우분투 22.04를 사용하는 개발자는 이러한 변경 사항의 혜택을 즉시 누릴 수 있습니다. 그러나 다른 운영 체제를 사용하는 개발자는 호환성 문제를 피하기 위해 glibc 버전을 업그레이드해야 할 수 있습니다.

중요한 버그 수정

  • L0 압축 중 세그먼트가 생략되어 삭제 데이터가 손실되던 문제를 수정했습니다.[#33980, #34363]
  • 잘못된 데이터 범위 처리로 인해 삭제 메시지가 전달되지 않던 문제를 수정했습니다.(#35313)
  • mmap 의 잘못된 사용으로 인해 발생하는 SIGBUS 예외를 해결했습니다.[#34455, #34530]
  • 잘못된 검색 표현식으로 인해 발생하는 충돌을 수정했습니다.(#35307)
  • 감시 컨텍스트에서 잘못된 시간 초과 설정으로 인해 데이터 노드 감시가 실패하는 문제를 수정했습니다.(#35017)

버그 수정

  • 특정 종속성을 업그레이드하여 보안 취약성을 해결했습니다.[#33927, #34693]
  • 지나치게 긴 표현식으로 인해 트리거되는 구문 분석 오류를 수정했습니다.(#34957)
  • 쿼리 계획 구문 분석 중에 발생하는 메모리 누수를 해결했습니다.(#34932)
  • 동적 로그 수준 수정이 적용되지 않던 문제를 수정했습니다.(#34777)
  • 초기화되지 않은 세그먼트 오프셋으로 인해 증가하는 데이터에 대한 쿼리 기준 그룹화가 실패하는 문제를 해결했습니다.(#34750)
  • Knowhere 반복기를 사용할 때 검색 매개변수 설정을 수정했습니다.(#34732)
  • 파티션 로드 상태를 확인하는 로직을 수정했습니다.(#34305)
  • 처리되지 않은 요청 오류로 인해 권한 캐시 업데이트가 실패하는 문제를 수정했습니다.(#34697)
  • 쿼리코드 재시작 후 로드된 컬렉션 복구에 실패하는 문제를 해결했습니다.(#35211)
  • 불필요한 인덱스 매개변수 유효성 검사를 제거하여 로드 무력화 문제를 수정했습니다.(#35179)
  • compressBinlog 이 실행되어 reloadFromKV 이 빈로그의 logID 을 제대로 채울 수 있도록 했습니다.(#34062)
  • DataCoord에서 가비지 수집 후 수집 메타데이터가 제거되지 않던 문제를 수정했습니다.(#34884)
  • 가져오기를 통해 생성된 플러시 세그먼트를 제거하여 DataCoord 내 SegmentManager의 메모리 누수를 해결했습니다.(#34651)
  • 압축이 비활성화되고 컬렉션이 삭제될 때 발생하는 패닉 문제를 수정했습니다.(#34206)
  • 메모리 사용량 추정 알고리즘을 개선하여 데이터 노드에서 메모리 부족 문제를 수정했습니다.(#34203)
  • 청크 캐시에 단일 비행을 구현하여 여러 벡터 검색 요청이 캐시 미스에 도달했을 때 버스트 메모리 사용을 방지했습니다.(#34283)
  • 구성에서 CAS(비교 및 스왑) 작업 중 ErrKeyNotFound 을 캡처했습니다.(#34489)
  • CAS 작업에서 포맷된 값을 실수로 사용하여 구성 업데이트가 실패하는 문제를 수정했습니다.(#34373)

기타

  • 통합 가시성 및 모니터링 기능을 향상시키는 OTLP HTTP 내보내기 지원이 추가되었습니다.[#35073, #35299]
  • 이제 동적으로 수정할 수 있는 '최대 컬렉션' 및 '디스크 할당량'과 같은 속성을 도입하여 데이터베이스 기능을 개선했습니다.[#34511, #34386]
  • 진단 및 모니터링을 개선하기 위해 DataNode 내에서 L0 압축 프로세스에 대한 추적 기능을 추가했습니다.(#33898)
  • 컬렉션당 L0 세그먼트 항목 수에 대한 할당량 구성을 도입하여, 역압력을 적용하여 삭제율을 더 잘 제어할 수 있게 되었습니다.(#34837)
  • 삽입 작업에 대한 속도 제한 메커니즘을 업서트 작업에도 적용하도록 확장하여 부하가 높을 때에도 일관된 성능을 보장합니다.(#34616)
  • 프록시 CGO 호출을 위한 동적 CGO 풀을 구현하여 리소스 사용량과 성능을 최적화했습니다.(#34842)
  • 우분투, 록키 및 아마존 운영 체제에서 DiskAnn 컴파일 옵션을 활성화하여 이러한 플랫폼에서의 호환성 및 성능을 개선했습니다.(#34244)
  • Conan을 1.64.1 버전으로 업그레이드하여 최신 기능 및 개선 사항과의 호환성을 보장합니다.(#35216)
  • Knowhere를 2.3.7 버전으로 업데이트하여 성능 향상과 새로운 기능을 추가했습니다.(#34709)
  • 일관된 빌드를 보장하고 예기치 않은 변경의 위험을 줄이기 위해 특정 타사 패키지의 리비전을 수정했습니다.(#35316)

v2.4.6

릴리스 날짜: 2024년 7월 16일

Milvus 버전Python SDK 버전Java SDK 버전Node.js SDK 버전
2.4.62.4.42.4.22.4.4

Milvus v2.4.6은 삭제 중 패닉, 메모리 누수, 데이터 손실과 같은 중요한 문제를 해결하는 버그 수정 릴리스입니다. 또한 모니터링 메트릭 개선, Go 버전 1.21 업그레이드, RESTful 카운트(*) 쿼리 사용자 환경 개선 등 여러 가지 최적화 기능도 도입되었습니다.

개선 사항

  • RESTful API 쿼리의 사용자 편의성이 향상되었습니다(#34444).
  • Go 버전이 1.20에서 1.21로 업그레이드되었습니다(#33940).
  • 히스토그램 메트릭 버킷을 최적화하여 버킷을 더 세분화했습니다(#34592).
  • Pulsar 종속성 버전을 2.8.2에서 2.9.5로 업그레이드했습니다. Milvus 2.4.6부터는 Pulsar를 2.9.5로 업그레이드하는 것이 좋습니다.

버그 수정

  • GetReplicas API가 nil 상태를 반환하는 문제를 수정했습니다(#34019).
  • 쿼리가 삭제된 레코드를 반환할 수 있는 문제를 수정했습니다(#34502).
  • 잘못된 수명 제어로 인해 인덱스노드가 중지되는 동안 멈추는 문제를 해결했습니다(#34559).
  • 워커가 오프라인 상태일 때 기본 키 오라클 객체의 메모리 누수를 수정했습니다(#34020).
  • 루프 종료 시 매개변수 캡처 문제를 해결하여 올바른 노드에 알릴 수 있도록 ChannelManagerImplV2를 수정했습니다(#34004).
  • 딥 카피(#34126)를 구현하여 ImportTask segmentsInfo의 읽기-쓰기 데이터 경합을 수정했습니다.
  • 롤링 업그레이드 중 오류를 방지하기 위해 "legacyVersionWithoutRPCWatch" 구성 옵션의 버전 정보를 수정했습니다(#34185).
  • 로드된 파티션 수에 대한 메트릭을 수정했습니다(#34195).
  • 세그코어 추적을 설정할 때 otlpSecure 구성을 전달했습니다(#34210).
  • DataCoord의 속성을 실수로 덮어쓰는 문제를 수정했습니다(#34240).
  • 새로 생성된 두 개의 메시지 스트림이 잘못 병합되어 발생하는 데이터 손실 문제를 해결했습니다(#34563).
  • 메시지 스트림이 잘못된 p채널을 사용하려고 때 발생하는 패닉 현상을 수정했습니다(#34230).
  • 가져오기가 고아 파일을 생성할 수 있는 문제를 해결했습니다(#34071).
  • 세그먼트의 기본 키가 중복되어 쿼리 결과가 불완전한 문제를 수정했습니다(#34302).
  • L0 압축에서 봉인된 세그먼트가 누락되는 문제를 해결했습니다(#34566).
  • 가비지 수집 후 생성된 채널-cp 메타에서 더티 데이터가 발생하는 문제를 수정했습니다(#34609).
  • 루트코드 재시작 후 database_num이 0인 메트릭을 수정했습니다(#34010).
  • 가져오기를 통해 생성된 플러시된 세그먼트를 제거하여 DataCoord의 SegmentManager에서 메모리 누수를 수정했습니다(#34652).
  • DataCoord가 재시작된 후 압축빈로그가 빈로그의 logID를 채우도록 하여 KV에서 제대로 다시 로드되도록 보장합니다(#34064).

v2.4.5

릴리스 날짜: 2024년 6월 18일

Milvus 버전Python SDK 버전Java SDK 버전Node.js SDK 버전
2.4.52.4.42.4.12.4.3

Milvus 2.4.5 릴리스에는 성능, 안정성 및 기능 향상을 위한 몇 가지 개선 사항과 버그 수정이 도입되었습니다. Milvus 2.4.5는 자동 인덱싱을 통해 스파스, float16, bfloat16 벡터 검색을 간소화하고, 블룸 필터 최적화를 통해 검색, 삭제, 압축 속도를 높이며, 로딩 시간 단축과 L0 세그먼트 가져오기 지원을 통해 데이터 관리 문제를 해결합니다. 또한 효율적인 고차원 스파스 데이터 검색을 위해 스파스 HNSW 인덱스를 도입하고, 스파스 플로트 벡터 지원으로 RESTful API를 개선하며, 안정성 향상을 위해 중요한 버그를 수정합니다.

새로운 기능

  • 데이터베이스 API 설명/변경에 rbac 지원 추가(#33804)
  • 스파스 벡터에 대한 HNSW 인덱스 구축 지원(#33653, #33662)
  • 바이너리 벡터에 대한 디스크 인덱스 구축 지원(#33575).
  • RESTful v2에서 지원되는 스파스 벡터 유형(#33555)
  • 구성 요소를 중지하기 위해 /management/stop RESTful API 추가(#33799).

개선 사항

  • maxPartitionNum 기본값을 1024로 설정(#33950).
  • 사용할 수 없는 오류 발생 시 연결 강제 재설정 활성화(#33910)
  • 수집 레벨의 플러시 속도 제한기 활성화(#33864)
  • 세그먼트 예측 속도를 높이기 위해 블룸 필터 적용을 병렬로 실행(#33793).
  • 삭제 로그 언마샬에 fastjson lib를 사용하여 json.Unmarshal(#33802) 속도 향상.
  • 블룸 필터 함수 호출 비용을 줄이기 위해 BatchPkExist를 사용(#33752).
  • 작은 컬렉션의 로딩 속도 향상(#33746)
  • L0 세그먼트로 데이터 삭제 가져오기 지원(#33712)
  • 동일한 작업을 반복해서 실행하는 aviod에 마크 압축 작업 건너뛰기 시간 초과(#33833)
  • 넘피 벌크 삽입에서 float16 및 bfloat16 벡터를 BinaryVector와 동일하게 처리 (#33788).
  • seek 메서드에 includeCurrentMsg 플래그를 추가했습니다(#33743).
  • mergeInterval, targetBufSize, msgdispatcher의 최대 허용 지연을 구성에 추가했습니다(#33680).
  • 스파스 벡터의 GetVectorByID 개선(#33652).
  • 불필요한 복사 및 함수 호출 비용을 줄이기 위해 StringPrimarykey를 제거했습니다 (#33649).
  • 바이너리/스파스 데이터 타입에 대한 자동 인덱스 매핑 추가(#33625).
  • 메모리 사용량을 줄이기 위해 일부 캐시 최적화(#33560)
  • 가져오기/사전 가져오기 작업을 위한 실행 인터페이스 추상화 (#33607).
  • 버퍼 삽입에서 맵 pk를 타임스탬프에 사용하여 bf 원인을 줄임(#33582).
  • 가져오기의 중복 메타 작업 방지(#33519)
  • 더 나은 디스크 할당량 정보 로깅, UseDefaultConsistency 플래그 추가, 불필요한 로그 제거를 통해 로그 개선(#33597, #33644, #33670).

버그 수정

  • 쿼리훅이 벡터 유형을 인식할 수 없는 버그 수정(#33911)
  • 캡처된 반복 변수 partitionID 사용 방지(#33970)
  • 밀버스가 바이너리 및 스파스 벡터에서 자동 인덱스를 생성할 수 없는 버그를 수정했습니다(#33867).
  • 모든 벡터의 잘못된 인덱스 파라미터에서 인덱스 노드가 인덱스 생성을 다시 시도할 수 있는 버그를 수정했습니다(#33878).
  • 로드와 릴리스가 동시에 발생하면 서버가 충돌할 수 있는 버그 수정(#33699).
  • 구성 값에 대한 캐시 일관성 개선(#33797)
  • 삭제 중 데이터 손실 가능성 방지(#33821)
  • 컬렉션 삭제 후 DroppedAt 필드(삭제 타임스탬프일 가능성이 있는)가 설정되도록 함(#33767).
  • Milvus가 바이너리 벡터 데이터 크기를 잘못 처리할 수 있는 문제를 수정했습니다(#33751).
  • 민감한 Kafka 자격 증명이 일반 텍스트로 로그인되는 것을 방지했습니다.(#33694, #33747).
  • Milvus에서 여러 벡터 필드가 있는 데이터를 올바르게 가져올 수 있도록 수정.(#33724)
  • 시작하기 전에 가져오기 작업이 존재하는지 확인하여 가져오기 안정성을 향상시켰습니다.(#33673)
  • 희소 HNSW 인덱스 처리 개선(내부 기능)(#33714)
  • 메모리 누수를 방지하기 위해 벡터 메모리 정리(#33708)
  • 상태 잠금 문제를 수정하여 비동기 워밍업이 더 원활해졌습니다.(#33687).
  • 쿼리 이터레이터에서 결과가 누락될 수 있는 버그를 해결했습니다.(#33506)
  • 가져오기 세그먼트 크기가 고르지 않을 수 있는 버그를 수정했습니다(#33634).
  • bf16, fp16 및 이진 벡터 유형에 대한 잘못된 데이터 크기 처리 수정(#33488)
  • L0 압축기의 잠재적 문제를 해결하여 안정성 개선(#33564)
  • 동적 구성 업데이트가 캐시에 올바르게 반영되도록 보장.(#33590)
  • RootCoordQuotaStates 메트릭의 정확성 개선(#33601)
  • 메트릭에서 로드된 엔티티의 수를 정확하게 보고하도록 보장(#33522).
  • 예외 로그에 보다 완전한 정보를 제공. (#33396)
  • 불필요한 그룹 검사기를 제거하여 쿼리 파이프라인 최적화(#33485)
  • 인덱스 노드에서 보다 정확한 디스크 용량 확인을 위해 로컬 스토리지 경로를 사용.(#33505)
  • 히트 횟수가 제한보다 클 때 hasMoreResult가 false를 반환할 수 있는 문제 수정(#33642)
  • 워커에 더 이상 메모리가 없을 때 bfs가 반복해서 로드되는 것을 방지하기 위해 위임자에서 bf 로드 지연(#33650)- 쿼리훅이 벡터 유형을 인식하지 못하는 버그 수정(#33911).
  • 캡처된 반복 변수 partitionID 사용 방지(#33970)
  • 밀버스가 바이너리 및 스파스 벡터에서 자동 인덱스를 생성할 수 없는 버그를 수정했습니다(#33867).
  • 모든 벡터의 잘못된 인덱스 파라미터에서 인덱스 노드가 인덱스 생성을 다시 시도할 수 있는 버그를 수정했습니다(#33878).
  • 로드와 릴리스가 동시에 발생하면 서버가 충돌할 수 있는 버그 수정(#33699).
  • 구성 값에 대한 캐시 일관성 개선(#33797)
  • 삭제 중 데이터 손실 가능성 방지(#33821)
  • 컬렉션 삭제 후 DroppedAt 필드(삭제 타임스탬프일 가능성이 있는)가 설정되도록 함(#33767).
  • Milvus가 바이너리 벡터 데이터 크기를 잘못 처리할 수 있는 문제를 수정했습니다(#33751).
  • 민감한 Kafka 자격 증명이 일반 텍스트로 로그인되는 것을 방지했습니다.(#33694, #33747).
  • Milvus에서 여러 벡터 필드가 있는 데이터를 올바르게 가져올 수 있도록 수정.(#33724)
  • 시작하기 전에 가져오기 작업이 존재하는지 확인하여 가져오기 안정성을 향상시켰습니다.(#33673)
  • 희소 HNSW 인덱스 처리 개선(내부 기능)(#33714)
  • 메모리 누수를 방지하기 위해 벡터 메모리 정리(#33708)
  • 상태 잠금 문제를 수정하여 비동기 워밍업이 더 원활해졌습니다.(#33687).
  • 쿼리 이터레이터에서 결과가 누락될 수 있는 버그를 해결했습니다.(#33506)
  • 가져오기 세그먼트 크기가 고르지 않을 수 있는 버그를 수정했습니다(#33634).
  • bf16, fp16 및 이진 벡터 유형에 대한 잘못된 데이터 크기 처리 수정(#33488)
  • L0 압축기의 잠재적 문제를 해결하여 안정성 개선(#33564)
  • 동적 구성 업데이트가 캐시에 올바르게 반영되도록 보장.(#33590)
  • RootCoordQuotaStates 메트릭의 정확성 개선(#33601)
  • 메트릭에서 로드된 엔티티의 수를 정확하게 보고하도록 보장(#33522).
  • 예외 로그에 보다 완전한 정보를 제공. (#33396)
  • 불필요한 그룹 검사기를 제거하여 쿼리 파이프라인 최적화(#33485)
  • 인덱스 노드에서 보다 정확한 디스크 용량 확인을 위해 로컬 스토리지 경로를 사용.(#33505)
  • 히트 횟수가 제한보다 클 때 hasMoreResult가 false를 반환할 수 있는 문제 수정(#33642)
  • 워커에 더 이상 메모리가 없을 때 bfs가 반복해서 로드되는 것을 방지하기 위해 위임자에서 bf 로드 지연(#33650)

v2.4.4

릴리스 날짜: 2024년 5월 31일

밀버스 버전Python SDK 버전Java SDK 버전Node.js SDK 버전
2.4.42.4.32.4.12.4.2

Milvus v2.4.4에는 성능과 안정성 향상을 위한 몇 가지 중요한 버그 수정 및 개선 사항이 포함되어 있습니다. 특히 대량 삽입 통계 로그가 잘못 가비지 수집되어 데이터 무결성에 영향을 미칠 수 있는 중대한 문제를 해결했습니다. 모든 v2.4 사용자는 이 수정 사항을 활용하기 위해 이 버전으로 업그레이드할 것을 강력히 권장합니다.

대량 삽입을 사용 중인 경우 데이터 무결성을 위해 가능한 한 빨리 v2.4.4로 업그레이드하세요.

중요한 버그 수정

  • 통계 로그 ID 채우기 및 정확성 검증(#33478)

개선 사항

  • ARM SVE용 비트셋 업그레이드(#33440)
  • GCC-13으로 Milvus 컴파일 활성화(#33441)

버그 수정

  • 모든 권한이 부여된 경우 빈 컬렉션 표시(#33454)
  • x86_64 뿐만 아니라 현재 플랫폼에 대한 CMake 다운로드 및 설치 보장(#33439)

v2.4.3

릴리스 날짜: 2024년 5월 29일

Milvus 버전Python SDK 버전Java SDK 버전Node.js SDK 버전
2.4.32.4.32.4.12.4.2

Milvus 버전 2.4.3에는 성능과 안정성을 높이기 위한 다양한 기능, 개선 사항 및 버그 수정이 도입되었습니다. 주목할 만한 개선 사항으로는 스파스 플로트 벡터 대량 삽입 지원과 최적화된 블룸 필터 가속화가 있습니다. 동적 구성 업데이트부터 메모리 사용량 최적화까지 다양한 영역에서 개선이 이루어졌습니다. 버그 수정을 통해 패닉 시나리오와 같은 중요한 문제를 해결하고 보다 원활한 시스템 운영을 보장했습니다. 이번 릴리스는 기능 향상, 성능 최적화, 강력한 사용자 경험 제공을 위한 Milvus의 지속적인 노력을 강조했습니다.

주요 기능

  • 빈로그/json/파켓에 대한 스파스 플로트 벡터 대량 삽입 지원(#32649)

개선 사항

  • RPC 기반 데이터코드/노드 감시 채널 구현(#32036)
  • 삭제 필터링을 가속화하기 위해 최적화된 블룸 필터(#32642, #33329, #33284)
  • 스칼라 인덱스에 원시 데이터가 없는 경우 mmap을 통해 원시 데이터 로드(#33317).
  • 밀버스 구성을 milvus.yaml에 동기화(#33322, #32920, #32857, #32946).
  • knowhere 버전 업데이트(#33310, #32931, #33043)
  • 쿼리코드에서 밸런서 정책의 동적 업데이트 활성화(#33272)
  • 쓰기 버퍼에 미리 빌드된 로거를 사용하여 로거 할당 최소화(#33304).
  • 매개변수 검사 개선(#32777, #33271, #33218)
  • 체크포인트에서 잘못된 메시지 ID를 무시하는 매개변수 추가(#33249).
  • 플러그인에 대한 초기화 실패 처리를 제어하는 구성 추가(#32680)
  • knowhere에 대한 점수 계산 일관성 설정 추가(#32997).
  • 공개 역할 권한의 초기화를 제어하는 구성 옵션 도입(#33174).
  • 필드 읽기 시 메모리 사용량 최적화(#33196)
  • 채널 매니저 v2의 구현 개선(#33172, #33121, #33014)
  • 빈로그의 메모리 데이터 크기를 추적하는 기능 추가(#33025).
  • 세그먼트 인덱스 파일 크기에 대한 메트릭 추가(#32979, #33305).
  • 메트릭을 제거하기 위해 Delete를 DeletePartialMatch로 대체(#33029).
  • 세그먼트 유형에 따른 관련 데이터 크기 확보(#33017)
  • 메타 스토어에서 채널 노드 정보 정리(#32988)
  • 데이터노드 브로커에서 루트코드 제거(#32818)
  • 일괄 업로드 활성화(#32788)
  • 파티션 키 사용 시 기본 파티션 번호를 16으로 변경(#32950).
  • 매우 큰 상위 k 쿼리에서 성능 저하 개선(#32871)
  • 쓰기 및 압축을 가속화하기 위해 TestLocations 기능 활용(#32948)
  • 불필요한 재활용을 피하기 위해 최적화된 계획 파서 풀(#32869)
  • 로드 속도 개선(#32898)
  • restv2에 대해 수집 기본 일관성 수준 사용(#32956)
  • rest API에 대한 비용 응답 추가(#32620)
  • 채널 전용 잔액 정책 활성화(#32911)
  • 프록시에 설명된 데이터베이스 API 노출(#32732)
  • 컬렉션별로 RG를 가져올 때 coll2replica 매핑 활용(#32892)
  • 검색 및 쿼리에 대한 추적 기능 추가(#32734)
  • 오픈 텔레메트리 추적을 위한 동적 구성 지원(#32169)
  • 리더뷰 업데이트 시 채널 결과에 대한 반복 방지(#32887)
  • 쪽모이 세공에 대한 벡터 오프셋 처리 최적화(#32822)
  • 수집 시 데이터코드 세그먼트 필터링 개선(#32831)
  • 로그 수준 및 빈도 조정(#33042, #32838, #33337)
  • 잔액 정지 후 잔액 중지 활성화(#32812)
  • 리더 위치 변경 시 샤드 리더 캐시 업데이트(#32470)
  • 더 이상 사용되지 않는 API 및 필드 제거(#32808, #32704).
  • 문자열 비교를 int로 변환하는 metautil.channel 추가(#32749).
  • 쿼리노드가 새 컬렉션을 발견했을 때 페이로드 작성기 오류 메시지 및 로그에 대한 유형 정보 추가(#32522).
  • 파티션 키로 컬렉션 생성 시 파티션 번호 확인(#32670).
  • 감시 실패 시 레거시 l0 세그먼트 제거(#32725)
  • 요청 인쇄 유형 개선(#33319)
  • 유형을 가져오기 전에 배열 필드 데이터가 nil인지 확인(#33311).
  • 스타트업 삭제/추가 노드 작업 실패 시 오류 반환(#33258)
  • 데이터 노드의 서버 ID 업데이트 허용(#31597)
  • 컬렉션 릴리즈에서 통합 쿼리 노드 메트릭 정리(#32805)
  • 스칼라 자동 인덱스 구성의 잘못된 버전 수정(#32795)
  • 인덱스 생성/변경 시 인덱스 매개변수 검사 개선(#32712)
  • 중복 복제본 복구 제거(#32985)
  • 채널 메타 테이블에서 200만 개 이상의 세그먼트 쓰기 활성화(#33300)

버그 수정

  • 속도 제한 인터셉터에 데이터베이스가 존재하지 않을 때 발생하는 패닉 수정(#33308)
  • 잘못된 매개변수로 인한 쿼터 센터 메트릭 수집 실패 수정(#33399)
  • 프로세스 활성화 대기 중 오류가 반환되면 패닉이 발생하는 문제 수정(#33372)
  • nq > 1일 때 restful v2에서 검색 결과 잘림 현상 수정(#33363).
  • restful v2에서 역할 작업에 대한 데이터베이스 이름 필드 추가(#33291)
  • 글로벌 속도 제한이 작동하지 않는 문제 수정(#33336)
  • 인덱스 구축 실패로 인한 패닉 수정(#33314)
  • 합법성을 보장하기 위해 세그코어의 스파스 벡터에 대한 유효성 검사 추가(#33312).
  • 작업 완료 후 syncmgr에서 작업 제거(#33303)
  • 데이터 가져오기 중 파티션 키 필터링 실패 수정(#33277)
  • noop 내보내기 사용 시 traceID를 생성할 수 없는 문제 수정(#33208)
  • 쿼리 결과 검색 개선(#33179)
  • 체크포인트 지연 메트릭 누출을 방지하기 위해 채널 체크포인트 삭제 표시(#33201)
  • 진행 중지 중 쿼리 노드가 멈추는 문제 수정(#33154)
  • 플러시 응답에서 누락된 세그먼트 수정(#33061)
  • 제출 작업이 무력화되도록 수정(#33053)
  • 스트리밍 리더에서 각 배치에 새 슬라이스 할당(#33360)
  • 쿼리코드 재시작 후 리소스 그룹에서 오프라인 노드 정리(#33233).
  • 완료된 컴팩터에서 l0 컴팩터 제거(#33216).
  • 리미터 초기화 시 쿼터 값 재설정(#33152)
  • etcd 한도가 초과되는 문제 수정(#33041)
  • 너무 많은 필드로 인한 etcd 트랜잭션 한도 초과 문제 해결(#33040)
  • GetNumRowsOfPartition에서 RLock 재진입 제거(#33045).
  • 리더 캐시 옵저버를 SyncAll보다 먼저 시작(#33035).
  • 해제된 대기 채널의 밸런싱 활성화(#32986)
  • 서버 초기화 전에 액세스 로거 초기화(#32976)
  • 빈 세그먼트를 지울 수 있는 컴팩터를 만들었습니다(#32821).
  • l0 압축에서 채워진 델타로그 항목 번호 및 시간 범위(#33004)
  • 샤드 리더 캐시 데이터 경쟁으로 인한 프록시 크래시 수정(#32971).
  • 로드 인덱스 메트릭의 시간 단위 수정(#32935)
  • 쿼리 노드 중지 시 세그먼트를 성공적으로 해제할 수 없는 문제 수정(#32929).
  • 인덱스 리소스 추정 수정(#32842)
  • 채널 체크포인트를 델타 위치로 설정(#32878)
  • 미래를 반환하기 전에 syncmgr 잠금 키를 만들었습니다(#32865).
  • 반전된 인덱스에 세그먼트가 하나만 있는지 확인(#32858)
  • 압축 트리거가 두 개의 동일한 세그먼트를 선택하는 문제 수정(#32800)
  • 빈로그 가져오기에서 파티션 이름을 지정할 수 없는 문제 수정(#32730, #33027).
  • 쪽모이 세공 가져오기에서 동적 열을 옵션으로 설정(#32738).
  • 데이터 삽입 시 자동 ID 확인 생략(#32775)
  • 스키마가 있는 필드 데이터 삽입 시 행 수 검증(#32770)
  • CTraceContext ID에 대한 래퍼 및 킵얼라이브 추가(#32746)
  • 데이터코드 메타 객체에서 데이터베이스 이름을 찾을 수 없는 문제 수정(#33412)
  • 삭제된 파티션에 대해 동기화된 삭제된 세그먼트(#33332)
  • 잘못된 매개 변수로 인한 쿼타 센터 메트릭 수집 실패 수정(#33399)

v2.4.1

릴리스 날짜: 2024년 5월 6일

Milvus 버전Python SDK 버전Java SDK 버전Node.js SDK 버전
2.4.12.4.12.4.02.4.2

Milvus 버전 2.4.1은 소프트웨어의 성능, 통합 가시성 및 안정성을 향상시키기 위한 다양한 개선 사항과 버그 수정을 제공합니다. 이러한 개선 사항에는 선언적 리소스 그룹 API, Float16/BFloat16 벡터 데이터 유형을 지원하는 향상된 대량 삽입 기능, 객체 스토리지의 목록 작업을 줄여주는 개선된 가비지 컬렉션(GC) 메커니즘, 성능 최적화와 관련된 기타 변경 사항 등이 포함됩니다. 또한 컴파일 오류, 줄 바꿈 문자에 대한 퍼지 일치 실패, RESTful 인터페이스의 잘못된 매개변수 데이터 유형, 동적 필드가 활성화된 경우 numpy 파일에서 오류가 발생하는 BulkInsert 등의 문제를 해결하는 버그 수정이 이루어졌습니다.

중단 변경 사항

  • 빈 필터 표현식을 사용한 삭제에 대한 지원이 중단되었습니다.(#32472)

기능

  • 대량 삽입에서 Float16/BFloat16 벡터 데이터 유형에 대한 지원 추가(#32157)
  • 무차별 반복자 검색 및 범위 검색을 지원하도록 스파스 플로트 벡터가 개선되었습니다(#32635).

개선 사항

  • 선언적 리소스 그룹 API 추가(#31930, #32297, #32536, #32666).
  • 쿼리코드에서 컬렉션 옵저버를 작업 중심으로 재작성(#32441).
  • 메모리 사용량을 줄이고 오류를 방지하기 위해 DataNode의 SyncManager에서 사용되는 데이터 구조를 리팩터링(#32673).
  • 가비지 컬렉션 구현을 수정하여 오브젝트 스토리지와 관련된 목록 연산을 최소화(#31740).
  • 수집 수가 많을 때 CPU 사용량 감소(#32245)
  • 코드를 통해 milvus.yaml 파일에 관련 구성 항목을 자동으로 생성하여 milvus.yaml 관리 개선(#31832, #32357).
  • 로컬 축소를 수행한 후 데이터를 검색하여 쿼리 성능을 향상시켰습니다(#32346).
  • etcd 클라이언트 생성에 WithBlock 옵션 추가(#32641)
  • 클라이언트가 제공한 경우 클라이언트가 지정한 client_request_id를 TraceID로 사용(#32264).
  • 삭제 및 대량 삽입 작업의 메트릭에 db 레이블 추가(#32611).
  • AutoID 및 PartitionKey 열에 대한 구성을 통해 확인을 건너뛰는 로직 추가(#32592).
  • 인증 관련 오류 개선(#32253)
  • DataCoord의 AllocSegmentID에 대한 오류 로그 개선(#32351, #32335)
  • 중복 메트릭 제거(#32380, #32308) 및 사용되지 않는 메트릭 정리(#32404, #32515).
  • partitionKey 기능의 활성화 여부를 제어하는 구성 옵션 추가(#32433).
  • 단일 요청에 삽입할 수 있는 최대 데이터 양을 제어하는 구성 옵션 추가(#32433).
  • 세그먼트 수준에서 적용/삭제 작업을 병렬화하여 위임자에 의한 삭제 메시지 처리 가속화(#32291).
  • 인덱스(#32232, #32505, #32533, #32595)를 사용하고 캐시(#32580)를 추가하여 QueryCoord에서 빈번한 필터링 작업을 가속화합니다.
  • 데이터 구조를 재작성(#32273)하고 코드를 리팩터링(#32389)하여 DataCoord에서 일반적인 작업을 가속화했습니다.
  • 코난에서 오픈블라스를 제거했습니다(#32002).

버그 수정

  • rockylinux8에서 빌드 밀버스 수정(#32619)
  • ARM에서 SVE의 컴파일 오류 수정(#32463, #32270)
  • ARM 기반 GPU 이미지에서 충돌 문제 수정(#31980).
  • 정규식 쿼리가 개행이 있는 텍스트를 처리할 수 없는 문제 수정(#32569)
  • GetShardLeaders가 빈 노드 목록을 반환하여 검색 결과가 비어 있는 문제를 수정했습니다(#32685).
  • numpy 파일에서 동적 필드를 만나면 BulkInsert가 오류를 발생시키는 문제를 수정했습니다(#32596).
  • 요청의 숫자 매개변수가 문자열 유형 대신 숫자 입력을 허용하도록 하는 중요한 수정(#32485, #32355)을 포함하여 RESTFulV2 인터페이스와 관련된 버그가 수정되었습니다.
  • 전송률 제한기에서 구성 이벤트 감시를 제거하여 프록시에서 메모리 누수를 수정했습니다(#32313).
  • 파티션 이름이 지정되지 않은 경우 속도 제한기가 파티션을 찾을 수 없다고 잘못 보고하는 문제 수정(#32647)
  • 오류 유형에 컬렉션이 복구 상태인 경우와 로드되지 않은 경우 사이에 감지 기능을 추가했습니다.(#32447)
  • 음수 쿼리 가능 엔티티 수 메트릭 수정(#32361)

v2.4.0

릴리스 날짜: 2024년 4월 17일

Milvus 버전Python SDK 버전Node.js SDK 버전
2.4.02.4.02.4.0

2.4.0-rc.1 릴리스의 견고한 기반을 바탕으로 기존 기능을 유지하면서 사용자가 보고한 중요한 버그를 해결하는 데 중점을 두어 Milvus 2.4.를 공식 출시하게 되어 기쁘게 생각합니다. 또한 Milvus 2.4.0은 시스템 성능 향상, 다양한 메트릭 통합을 통한 관찰 가능성 개선, 코드베이스 간소화를 위한 다양한 최적화를 도입하여 단순성을 높였습니다.

개선 사항

  • MinIO TLS 연결 지원(#31396, #31618)
  • 스칼라 필드에 대한 자동 색인 지원(#31593)
  • 일반 검색과 일관된 실행 경로를 위한 하이브리드 검색 리팩터링(#31742, #32178)
  • bitset 및 bitset_view 리팩터링을 통한 필터링 가속화(#31592, #31754, #32139).
  • 가져오기 작업에서 이제 데이터 인덱스 완료 대기 지원(#31733)
  • 가져오기 호환성(#32121), 작업 예약(#31475), 가져오기 파일 크기 및 수 제한(#31542)이 향상되었습니다.
  • 유형 검사를 위한 인터페이스 표준화(#31945, #31857), 더 이상 사용되지 않는 코드 및 메트릭 제거(#32079, #32134, #31535, #32211, #31935), 상수 이름 정규화(#31515) 등 코드 간소화 노력
  • 쿼리코드 현재 목표 채널 체크포인트 지연 대기 시간에 대한 새로운 메트릭(#31420)
  • 공통 메트릭에 대한 새로운 DB 레이블(#32024)
  • 삭제, 색인 및 로드된 엔티티의 수에 관한 새로운 메트릭, 컬렉션 이름 및 dbName과 같은 레이블 포함(#31861).
  • 일치하지 않는 벡터 유형에 대한 오류 처리 개선(#31766)
  • 인덱스를 빌드할 수 없을 때 크래시 대신 오류 발생 지원(#31845)
  • 데이터베이스를 삭제할 때 데이터베이스 메타 캐시 무효화 지원(#32092)
  • 채널 배포(#31814) 및 리더 뷰 관리(#32127)를 위한 인터페이스 리팩토링(#31814)
  • 채널 배포 관리자 인터페이스 리팩터링(#31814) 및 리더 뷰 관리자 인터페이스 리팩터링(#32127)
  • 일괄 처리(#31632), 매핑 정보 추가(#32234, #32249), 자주 호출되는 작업 가속화를 위한 잠금 사용 방지(#31787)

중단 변경 사항

  • 이진 벡터에서 그룹화 검색 중단(#31735)
  • 하이브리드 검색을 사용한 그룹화 검색 중단(#31812)
  • 바이너리 벡터에서 HNSW 인덱스 사용 중단(#31883)

버그 수정

  • 충돌을 방지하기 위해 쿼리 및 삽입에 대한 데이터 유형 및 값 검사 강화(#31478, #31653, #31698, #31842, #32042, #32251, #32204)
  • RESTful API 버그 수정(#32160)
  • 역 인덱스 리소스 사용량 예측 개선(#31641)
  • 권한 부여가 활성화된 경우 etcd와의 연결 문제 해결(#31668)
  • nats 서버에 대한 보안 업데이트(#32023)
  • 반전된 인덱스 파일을 /tmp가 아닌 QueryNode의 로컬 저장 경로에 저장(#32210)
  • collectionInfo의 데이터코드 메모리 누수 문제 해결(#32243)
  • 시스템 패닉을 일으킬 수 있는 fp16/bf16 관련 버그 수정(#31677, #31841, #32196).
  • 그룹 검색이 불충분한 결과를 반환하는 문제 해결(#32151)
  • Reduce 단계에서 오프셋을 보다 효과적으로 처리하고 'reduceStopForBest'가 활성화된 상태에서 적절한 결과를 보장하기 위해 반복기를 사용한 검색 조정(#32088).

v2.4.0-rc.1

릴리스 날짜: 2024년 3월 20일

Milvus 버전Python SDK 버전
2.4.0-rc.12.4.0

이번 릴리스에는 몇 가지 시나리오 기반 기능이 도입되었습니다:

  • 새로운 GPU 인덱스 - CAGRA: NVIDIA의 기여 덕분에 이 새로운 GPU 인덱스는 특히 일괄 검색에서 10배의 성능 향상을 제공합니다. 자세한 내용은 GPU 인덱스를 참조하세요.

  • 멀티 벡터하이브리드 검색: 이 기능을 사용하면 여러 모델의 벡터 임베딩을 저장하고 하이브리드 검색을 수행할 수 있습니다. 자세한 내용은 하이브리드 검색을 참조하세요.

  • 스파스 벡터: 키워드 해석 및 분석에 이상적인 스파스 벡터는 이제 컬렉션에서 처리할 수 있도록 지원됩니다. 자세한 내용은 스파스 벡터를 참조하세요.

  • 검색 그룹화: 범주형 집계는 검색 증강 생성(RAG) 애플리케이션의 문서 수준 검색을 향상시킵니다. 자세한 내용은 그룹화 검색을 참조하세요.

  • 반전 인덱스퍼지 매칭: 이 기능은 스칼라 필드에 대한 키워드 검색을 개선합니다. 자세한 내용은 스칼라 필드 색인필터링된 검색을 참조하세요.

새로운 기능

GPU 색인 - CAGRA

온라인에서 사용할 수 있는 최신(SoTA) GPU 기반 그래프 인덱스인 CAGRA에 귀중한 기여를 해주신 NVIDIA 팀에 진심으로 감사드립니다.

이전 GPU 인덱스와 달리 CAGRA는 전통적으로 CPU 인덱스가 뛰어난 영역인 소규모 배치 쿼리에서도 압도적인 우월성을 보여줍니다. 또한, GPU 인덱스가 이미 강세를 보이고 있는 영역인 대규모 배치 쿼리 및 인덱스 구축 속도에서 CAGRA의 성능은 정말 타의 추종을 불허합니다.

예제 코드는 example_gpu_cagra.py에서 확인할 수 있습니다.

스파스 벡터(베타)

이번 릴리스에서는 스파스 벡터라는 새로운 유형의 벡터 필드를 도입합니다. 스파스 벡터는 밀도가 높은 벡터와 달리 차원 수가 몇 배 더 많으며 소수만이 0이 아닌 경향이 있습니다. 이 기능은 용어 기반의 특성으로 인해 더 나은 해석 가능성을 제공하며 특정 도메인에서 더 효과적일 수 있습니다. SPLADEv2/BGE-M3와 같은 학습된 희소 모델은 일반적인 1단계 랭킹 작업에 매우 유용하다는 것이 입증되었습니다. Milvus의 이 새로운 기능의 주요 사용 사례는 SPLADEv2/BGE-M3와 같은 신경 모델과 BM25 알고리즘과 같은 통계 모델에 의해 생성된 희소 벡터에 대해 효율적인 근사 의미론적 최인접 이웃 검색을 가능하게 하는 것입니다. 밀버스는 이제 희소 벡터의 효과적인 고성능 저장, 인덱싱, 검색(MIPS, 최대 내부 제품 검색)을 지원합니다.

예제 코드는 hello_sparse.py에서 확인할 수 있습니다.

다중 벡터 지원은 다중 모델 데이터 처리 또는 고밀도 벡터와 희소 벡터의 혼합이 필요한 애플리케이션을 위한 초석입니다. 이제 멀티 벡터 지원으로 가능합니다:

  • 여러 모델에서 비정형 텍스트, 이미지 또는 오디오 샘플을 위해 생성된 벡터 임베딩을 저장할 수 있습니다.
  • 각 엔티티의 여러 벡터를 포함하는 ANN 검색을 수행합니다.
  • 다양한 임베딩 모델에 가중치를 할당하여 검색 전략을 사용자 정의합니다.
  • 다양한 임베딩 모델을 실험하여 최적의 모델 조합을 찾을 수 있습니다.

다중 벡터를 지원하므로 컬렉션에 FLOAT_VECTOR, SPARSE_FLOAT_VECTOR와 같은 다양한 유형의 여러 벡터 필드를 저장, 인덱싱하고 재랭크 전략을 적용할 수 있습니다. 현재 두 가지 재랭크 전략을 사용할 수 있습니다: 상호 순위 융합(RRF)평균 가중치 점수입니다. 두 전략 모두 서로 다른 벡터 필드의 검색 결과를 통합된 결과 집합으로 결합합니다. 첫 번째 전략은 서로 다른 벡터 필드의 검색 결과에 일관되게 나타나는 엔티티에 우선순위를 부여하고, 다른 전략은 각 벡터 필드의 검색 결과에 가중치를 할당하여 최종 결과 집합에서 그 중요도를 결정합니다.

예제 코드는 hybrid_search.py에서 찾을 수 있습니다.

반전 인덱스 및 퍼지 일치

이전 Milvus 릴리즈에서는 메모리 기반 이진 검색 인덱스와 마리사 트리 인덱스가 스칼라 필드 인덱싱에 사용되었습니다. 그러나 이러한 방법은 메모리 집약적이었습니다. 최신 Milvus 릴리즈는 이제 모든 숫자 및 문자열 데이터 유형에 적용할 수 있는 Tantivy 기반 반전 인덱스를 사용합니다. 이 새로운 인덱스는 스칼라 쿼리 성능을 획기적으로 개선하여 문자열 키워드 쿼리를 10배까지 줄여줍니다. 또한, 반전 인덱스는 데이터 압축과 내부 인덱싱 구조의 메모리 맵 저장(MMap) 메커니즘의 추가 최적화를 통해 메모리를 덜 소비합니다.

이번 릴리즈에서는 접두사, 접두사, 접미사를 사용한 스칼라 필터링에서 퍼지 매칭도 지원합니다.

예제 코드는 inverted_index_example.py와 fuzzy_match.py에서 찾을 수 있습니다.

이제 특정 스칼라 필드의 값을 기준으로 검색 결과를 집계할 수 있습니다. 이는 RAG 애플리케이션이 문서 수준 리콜을 구현하는 데 도움이 됩니다. 각 문서가 여러 구절로 나뉘어져 있는 문서 모음을 생각해 봅시다. 각 구절은 하나의 벡터 임베딩으로 표현되며 하나의 문서에 속합니다. 구절이 흩어지는 대신 가장 관련성이 높은 문서를 찾으려면 search() 작업에 group_by_field 인수를 포함시켜 문서 ID를 기준으로 결과를 그룹화할 수 있습니다.

예제 코드는 example_group_by.py에서 찾을 수 있습니다.

Float16 및 BFloat- 벡터 데이터 유형

머신 러닝과 신경망은 종종 Float16 및 BFloat와 같은 반정밀도 데이터 유형을 사용합니다. 이러한 데이터 유형은 쿼리 효율성을 개선하고 메모리 사용량을 줄일 수 있지만 정확도가 떨어진다는 단점이 있습니다. 이번 릴리스에서 Milvus는 이제 벡터 필드에 대해 이러한 데이터 유형을 지원합니다.

예제 코드는 float16_example.pybfloat16_example.py에서 확인할 수 있습니다.

업그레이드된 아키텍처

L0 세그먼트

이번 릴리스에는 삭제된 데이터를 기록하도록 설계된 L0 세그먼트라는 새로운 세그먼트가 포함되어 있습니다. 이 세그먼트는 저장된 삭제된 레코드를 주기적으로 압축하고 밀봉된 세그먼트로 분할하여 소규모 삭제에 필요한 데이터 플러시 횟수를 줄이고 저장 공간을 적게 차지합니다. 이 메커니즘을 통해 Milvus는 데이터 압축과 데이터 플러시를 완전히 분리하여 삭제 및 업서트 작업의 성능을 향상시킵니다.

리팩터링된 대량 삽입

이번 릴리스에는 향상된 대량 삽입 로직도 도입되었습니다. 이를 통해 한 번의 대량 삽입 요청으로 여러 파일을 가져올 수 있습니다. 리팩터링된 버전에서는 대량 삽입의 성능과 안정성이 모두 크게 개선되었습니다. 미세 조정된 속도 제한과 더욱 사용자 친화적인 오류 메시지 등 사용자 경험도 개선되었습니다. 또한 Milvus의 RESTful API를 통해 대량 삽입 엔드포인트에 쉽게 액세스할 수 있습니다.

메모리 매핑 스토리지

Milvus는 메모리 매핑 스토리지(MMap)를 사용하여 메모리 사용량을 최적화합니다. 이 메커니즘은 파일 콘텐츠를 메모리에 직접 로드하는 대신 파일 콘텐츠를 메모리에 매핑합니다. 이 접근 방식에는 성능 저하라는 트레이드오프가 있습니다. CPU 2개와 8GB RAM이 있는 호스트에서 HNSW 색인 컬렉션에 MMap을 사용하도록 설정하면 10% 미만의 성능 저하로 4배 더 많은 데이터를 로드할 수 있습니다.

또한, 이번 릴리스에서는 Milvus를 다시 시작할 필요 없이 MMap을 동적이고 세밀하게 제어할 수 있습니다.

자세한 내용은 MMap 스토리지를 참조하세요.

기타

Milvus-CDC

Milvus-CDC는 Milvus 인스턴스 간에 증분 데이터를 캡처하고 동기화하여 손쉽게 증분 백업 및 재해 복구를 수행할 수 있는 사용하기 쉬운 동반 도구입니다. 이번 릴리스에서 Milvus-CDC는 안정성이 개선되었으며, 이제 변경 데이터 캡처(CDC) 기능을 일반적으로 사용할 수 있습니다.

Milvus-CDC에 대해 자세히 알아보려면 GitHub 리포지토리Milvus-CDC 개요를 참조하세요.

개선된 MilvusClient 인터페이스

MilvusClient는 ORM 모듈을 대체할 수 있는 사용하기 쉬운 인터페이스입니다. 서버와의 상호 작용을 단순화하기 위해 순전히 기능적인 접근 방식을 채택합니다. 연결 풀을 유지하는 대신 각 MilvusClient는 서버에 대한 gRPC 연결을 설정합니다. MilvusClient 모듈은 ORM 모듈의 대부분의 기능을 구현했습니다. MilvusClient 모듈에 대해 자세히 알아보려면 pymilvus참조 문서를 방문하세요.

번역DeepLogo

피드백

이 페이지가 도움이 되었나요?