ノウウェア2.0の驚異を探る

プレスリリースから間もなく、Milvus 2.3が多くのゲームチェンジャー的アップデートを携えて到着しました。その最たるものがKnowhere 2.0であり、Milvusを新たな高みへと昇華させることを約束する革新的なアップグレードである。
このブログでは、Knowhere 2.0を深く掘り下げ、その画期的な機能、パフォーマンスの最適化、そしてベクトル・データベースで傑出した力を発揮する設計原則についてご紹介します。
Knowhere とは?
KnowhereはMilvusのコアとなるベクトル検索エンジンです。ベクターデータベースを広大なマーベルユニバースと想像してください。Knowhereの主な使命は、低レイテンシでインデックスを構築して近似最近傍検索(ANNS)を実行することです。
Knowhere 2.0とその新機能
私たちは 2022 年 7 月以来、Knowhere の再構築とアップグレードに取り組んできました。絶え間ない議論、設計、開発、テストを経て、Knowhere 2.0 は 2023 年 8 月下旬に Milvus 2.3 と共にデビューしました。この新バージョンでは、GPUインデックス、コサイン類似度、ScaNNインデックス、Armアーキテクチャのサポートなど、多くの機能強化が行われました。アップグレードされたKnowhereは、ユーザーと開発者に恩恵をもたらし、Milvusにおける強力な存在となっている。次に、Knowhere の主な機能について説明します。
GPUインデックスのサポート
Nvidia社は、同社のベクトル検索ライブラリRAFTのGPU_FLATおよびGPU_IVFPQインデックスをKnowhere 2.0に提供しました。この追加によりインデックス検索が大幅に高速化され、Milvus は Nvidia A100 で SIFT1M の約 70 倍という目覚ましいスループットの向上を達成しました。
Milvus QPS GPU vs. CPU](https://assets.zilliz.com/milvus_qps_gpu_vs_cpu_8bf3dd2d3d.png)
GPUインデックスの詳細については、Milvusドキュメントをご参照ください。
コサイン類似度のサポート
以前のバージョンの Knowhere では、コサイン類似度を使用するには、ベクトル挿入の前に内積を利用し、 ベクトルを正規化する必要がありました。このプロセスは非常にコストがかかり、アクセスが困難で、ユーザにはより高度な理論的知識が必要でした。
Knowhere 2.0 では、コサイン距離がネイティブでサポートされ、ライブラリ内で入力ベクトルが自動的に正規化され、対応するインデックス・タイプと一致するため、ユーザー・エクスペリエンスが大幅に向上します。
ScaNN インデックスのサポート
ScaNN(FastScan)は、FAISS によって実装されたオープンソースの approximate nearest neighbor (ANN) インデックスです。より小さなPQエンコーディングと、CPUレジスタにアクセスするための対応する命令セットを使用し、優れたインデックス作成性能を実現しています。
Knowhere 2.0 は ScaNN インデックスをネイティブサポートしています。Knowhere2.0により、Milvus2.3はIVF_FLATの7倍、HNSWの1.2倍のQPSを達成し、Cohereデータセットで約95%の再現率を実現した。
ARMアーキテクチャのサポート
ARM アーキテクチャは、x86 アーキテクチャと比較して費用対効果が高いことで知られている。性能は劣るが、ARMはよりわかりやすい設計と命令セットを持っているため、ますます人気が高まっている。例えば、同じCPUスペック(例えば、1 vCPUと16GBのRAM)のARMインスタンスは、AWSプラットフォーム上で、x86インスタンスより約15%安い。
Knowhere 2.0でARMアーキテクチャがサポートされたことで、ユーザーはこのアーキテクチャ上で上位レイヤのサービスを実行および構築できるようになりました。
範囲検索のサポート
近傍探索には 2 つの方法があります:KNN (K Nearest Neighbor) と範囲検索です。KNNは、ベクトル "X "の集合の中で、クエリベクトル "q "に最も近い "k "個のベクトルを見つけます。一方、範囲検索は "k "を指定しません。その代わりに、ベクトルコレクション "X "内のクエリベクトル "q "から一定の距離(半径)内にあるすべてのベクトルを返します。
Knowhere 2.0 は、HNSW、DiskANN、IVF インデックスなど、ライブラリ内の複数のインデックスで範囲検索をサポートしています。この機能により、ユーザはクエリ中に入力ベクトルとMilvusに格納されているベクトル間の距離を指定することができます。
最適化されたフィルタークエリ
スカラーとベクトルが混在するクエリでは、一部のベクトルをフィルタリングすることがあります。Knowhere 2.0 では、HNSW 用のフィルタ・ベクタ・クエリが大幅に改善され、以前のバージョンと比較して最大 6 ~ 80 倍のパフォーマンス向上が実現しました。
コード構造とコンパイルの強化
Knowhere 2.0 では、C++ クラスの継承が簡素化され、新しいインデックスの統合にプロキシ パターンが使用され、Config モジュールがリファクタリングされました。これらの改善により、Milvusをより簡単に使用できるようになりました。
MMap のサポート
以前は、データセットが大きいためにメモリ領域の制約に直面し、格納できるインデックスに影響を与えるユーザがいました。しかし、Knowhere 2.0 の導入により、Milvus はメモリマッピング (MMap) をサポートし、大容量ファイルのメモリへの自動マッピングが可能になりました。この新機能により、メモリ不足にもかかわらず、大規模なインデックスデータにアクセスできるようになりました。
オリジナル・ベクトルの検索をサポート
検索を終了した後、さらにカスタマイズされた計算やフィルタリングを行うために、返された ID に基づいて元のベクトルにアクセスする必要がある場合があります。Knowhere 2.0 では、インデックスから元のベクトルを直接取得できるため、S3 などのリモート・ストレージから取得するよりも待ち時間が短縮されます。
Knowhere 2.0 の機能と拡張機能の詳細については、Knowhere 2.0 リリースノート を参照してください。
Knowhere への貢献を歓迎します!
Knowhere は継続的に進化しており、あなたのフィードバックが重要です。貴重な提案やアイデアがあれば、遠慮なく Knowhere リポジトリに貢献してください。
読み続けて

8 Latest RAG Advancements Every Developer Should Know
Explore eight advanced RAG variants that can solve real problems you might be facing: slow retrieval, poor context understanding, multimodal data handling, and resource optimization.

Vector Databases vs. Document Databases
Use a vector database for similarity search and AI-powered applications; use a document database for flexible schema and JSON-like data storage.

Vector Databases vs. Hierarchical Databases
Use a vector database for AI-powered similarity search; use a hierarchical database for organizing data in parent-child relationships with efficient top-down access patterns.
