ホームへ戻る

向量資料庫與檢索

Milvus 3.0.1、ネイティブスナップショットAPIを追加し、Storage V3のデータ損失と未認証gRPCアクセスを修正

Milvus 3.0.1では、コレクションのスナップショットと非同期リストアをREST v2経由で管理できるようになり、weighted RRF、L1 reranking、TEXTフィールドの処理もサーバー側へ移された。さらに重要なのは、ストリーミング削除、WAL移行、コンパクション、認可経路における整合性とセキュリティの問題が集中的に修正されたことだ。

Tim Sträter · CC BY 2.0 · Image source
zh-Hant

Milvus 3.0.1はパッチバージョンとしてリリースされたものの、変更範囲は本番環境の安定化を目的としたリリースに近い。新たなREST v2 APIでは、collection-scopedのネイティブスナップショットを作成し、非同期リストアを開始できるため、バックアップ処理で基盤となるStorage V3 manifestを直接操作する必要がなくなった。検索面ではL1 rerankingに加え、ANNの各サブクエリに異なる重みを設定できるweighted reciprocal-rank fusionが導入された。Go SDKとREST APIもTEXTフィールドへの対応を開始している。ハイブリッド検索システムでは、候補の統合や一部のデータ管理処理をデータベース内部で完結できるため、アプリケーション層でランキング結果を独自に結合する負担が軽減される。

今回のアップグレードで特に注目すべきなのは、正確性に関する修正だ。リリースノートによると、mix compactionで保持対象のレコードを再構築できない場合に、データが通知なく失われる可能性があった。また、ストリーミング削除でロード直後のsealed segmentが対象から漏れる問題や、WALバックエンドの移行中に行われた並行書き込みが消失する問題もあった。さらに、一部の範囲条件、JSON/ARRAYの比較、タイムゾーンを含むクエリ、Storage V3のデフォルト値が誤った結果を返す可能性も修正された。従来のスナップショットには未コミットのsegmentが含まれる場合もあり、リストア処理が表面上は成功しても、実際にはデータをロードできないことがあった。これらの問題は、書き込み、コンパクション、クエリ、ディザスタリカバリにまたがっているため、単一のrecallテストだけでは検証できない。

セキュリティ面では、外部proxy port上のstreaming gRPC呼び出しへ未認証でアクセスできる問題が3.0.1で修正された。また、認証情報、API key、RBACパスワードハッシュ、外部コレクションのソースがログやエラーメッセージに出力されないようになった。bcrypt costは4から10へ引き上げられたが、既存のハッシュにより強い設定を適用するにはパスワードのローテーションが必要であり、アップグレードだけでは自動的に再計算されない。

デプロイ担当者は、まずスナップショットの復旧演習、並行書き込み、削除後のクエリを受け入れテストに組み込み、そのうえでStorage V2/V3の混在、CDCインポート、旧HYBRIDインデックスを確認すべきだ。公式には、メモリ、mmap、外部コレクションのインデックス構築、IOPS制御についても複数の改善が加えられている。ただし、異なるハードウェアを横断した公開エンドツーエンドベンチマークはほとんどないため、性能向上の効果は実際のデータ分布と同時実行負荷のもとで測定する必要がある。

出典

  1. Release milvus-3.0.1 · milvus-io/milvus
  2. milvus-io/milvus v3.0.1 release notes