ベクターライブラリ vs ベクターデータベース:どちらが適しているか?
この2つの技術の違い、長所、そして実用的なアプリケーションを紹介し、開発者がAIプロジェクトに適したツールを選択するための包括的なガイドを提供します。
シリーズ全体を読む
- 非構造化データ入門
- ベクトルデータベースとは?その仕組みとは?
- ベクトルデータベースについて: ベクトルデータベース、ベクトル検索ライブラリ、とベクトル検索プラグインの比較
- Milvusベクトルデータベース入門
- Milvus Quickstart:五分間だけでMilvus ベクトルデータベースをインストール
- ベクトル類似検索入門
- ベクター・インデックスの基本について知っておくべきすべてのこと
- スカラー量子化と積量子化
- 階層的航行可能小世界(HNSW)
- おおよその最近接者 ああ(迷惑)
- プロジェクトに適したベクトルインデックスの選択
- DiskANNとヴァマナアルゴリズム
- データの完全性を守る:ベクターデータベースにおけるバックアップとリカバリ
- AIにおける高密度ベクトル:機械学習におけるデータの可能性の最大化
- ベクターデータベースとクラウドコンピューティングの統合:現代のデータ課題に対する戦略的ソリューション
- 初心者のためのベクターデータベース導入ガイド
- ベクトル・データベースにおけるデータの完全性の維持
- 行と列からベクトルへ:データベース技術の進化の旅
- ソフトマックス活性化関数の解読
- ベクトル・データベースにおけるメモリ効率のための積量子化の利用
- ベクターデータベースにおける検索性能のボトルネックを発見する方法
- ベクターデータベースの高可用性の確保
- Locality Sensitive Hashingのマスター:包括的なチュートリアルと使用例
- ベクターライブラリ vs ベクターデータベース:どちらが適しているか?
- 微調整テクニックでGPT 4.xのポテンシャルを最大限に引き出す
- マルチクラウド環境におけるベクターデータベースの展開
- ベクトル埋め込み入門:ベクトル埋め込みとは何か?
ベクター・ライブラリとベクター・データベースについて迷っていませんか?この記事では、機械学習モデルによって生成されるベクトル埋め込みにおける、これら2つの技術の違い、長所、そして実用的なアプリケーションについて掘り下げ、開発者がAIプロジェクトに適したツールを選択するのに十分な情報を提供します。
人工知能(AI)や機械学習(ML)において、ベクトル埋め込みを効率的に管理することは、堅牢でスケーラブルなソリューションを構築する上で極めて重要である。このニーズに対応するために登場した2つの重要なツールが、ベクトル・ライブラリとベクトル・データベースだ。どちらも高次元のベクトル埋め込みを扱うが、その目的は異なり、独自の利点がある。この投稿では、この2つの技術の違い、長所、実用的なアプリケーションについて調べ、開発者がAIプロジェクトに適したツールを選択するためのガイドを提供します。
ベクターライブラリとベクターデータベースの主な違い
専用に構築されたベクターデータベースはセマンティック検索に優れているが、他の選択肢もある。ベクトルデータベース(ベクトルストアと呼ばれることもある)が登場する前は、開発者はベクトル検索タスクのためにFAISS、ScaNN、HNSWのようなベクトル検索ライブラリに頼っていた。
ベクトル検索ライブラリは、高性能なベクトル検索のプロトタイプを素早く構築するのに役立つ。例えば、Meta社が開発したオープンソースライブラリであるFAISSは、効率的なセマンティック検索と密なベクトルクラスタリングのために設計されている。FAISSはあらゆるサイズのベクトルコレクションを扱うことができ、メモリに完全にロードできないようなものでも扱うことができる。また、評価やパラメータチューニングのためのツールも提供されている。C++で書かれているにもかかわらず、FAISSはPython/NumPyインターフェースを提供しており、多くの開発者がアクセスできるようになっている。
しかし、ベクトル探索ライブラリは、限られた機能を持つ管理されたソリューションではなく、軽量の近似最近傍(ANN)ライブラリである。小規模またはプロトタイプのシステムにおける非構造化データ処理には十分ですが、ベクトル検索用にこれらのライブラリを拡張することはますます難しくなっています。さらに、これらのライブラリでは、インデックス・データに格納されたベクトルを変更したり、データのインポート中にクエリを実行したりすることができません。
一方、ベクトルデータベースは、大規模な非構造化データの保存と検索に最適化されている。ベクターデータベースは、高次元のベクターの保存と移動、数百万から数十億のベクターへの問い合わせが可能で、しかもリアルタイムで応答します。このスケーラビリティは、増大するビジネス・ニーズに対応する能力の証であり、開発者に安心感を与える。
Milvus](https://milvus.io/)のようなベクターデータベースは、ハイブリッド検索(メタデータフィルタリングによる密なベクター検索と疎なベクター検索)、クラウドネイティブなアーキテクチャ、多数のテナント(数百万)、高可用性、スケーラビリティをサポートするなど、ユーザーフレンドリーで構造化データ、半構造化データ、非構造化データの機能を提供する。これらの機能は、データセットや顧客基盤が拡大するにつれて、ますます重要になる。
さらに、ベクトル・データベースはベクトル検索ライブラリとは異なる抽象化レイヤーで動作する。ベクトル・データベースが本格的なサービスであるのに対し、ANNライブラリは開発中のアプリケーションに統合するためのコンポーネントである。この意味で、ANNライブラリは、Apache Luceneの上にElasticsearchが構築されているのと同様に、ベクターデータベースがその上に構築されている多くのコンポーネントの一つである。
ベクターライブラリ:効率的なセマンティック検索に最適化
ベクトル検索アルゴリズムは、ベクトル埋め込みに対する効率的な類似検索を可能にする上で重要な役割を果たします。いくつかのタイプのアルゴリズムがあり、それぞれが長所とトレードオフを持ち、許容可能なレベルの精度と想起を維持しながらベクトル検索プロセスを高速化するように設計されています。ここでは、4つの異なるタイプのベクトル検索アルゴリズムを紹介します:
ハッシュベースのインデックス(例えば、locity-sensitive hashing)、
ツリーベースのインデックス(例:ANNOY)、
クラスタベースまたはクラスタインデックス(例えば、積の量子化)、および
グラフベースの索引付け(HNSW、CAGRAなど)
ベクトルライブラリは、Faiss、HNSW、ScANNなどの軽量な近似最近傍(ANN)ライブラリです。これらは密なベクトルの効率的な類似検索とクラスタリングを最適化するように設計されています。
ベクトル検索ライブラリとアルゴリズムのトップ**。
Faiss (Facebook AI 類似性検索) ライブラリ **Faiss (Facebook AI 類似性検索) ライブラリ
FaissはMetaのチームによって開発されたベクトル検索ライブラリです。フラットインデックス、セルプローブ法(IndexIVFインデックス)、IndexHNSWの亜種、Locality Sensitive Hashing法、積量子化コードに基づくインデックスなど、複数のインデックスが実装されている。
FAISS](https://zilliz.com/learn/faiss)|Github|ドキュメントについてさらに詳しく。
HNSW (グラフベース) (グラフベース)
HNSW (Hierarchical Navigable Small World) アルゴリズムは、近似最近傍探索のための完全なグラフベースのアプローチであり、指数関数的に減衰する確率分布を用いて要素をランダムに最大層に割り当てながら、階層的な近接グラフの多層構造をインクリメンタルに構築する。この設計は、上位層からの検索開始、リンクのスケール分離、および近接グラフ近傍を選択するためのヒューリスティックと組み合わされることにより、HNSWは対数的な複雑さのスケーリングを達成し、特に高い想起レベルや高度にクラスタ化されたデータにおいて、以前のオープンソースのベクトルだけのアプローチを性能の点で上回ることができる。
HNSW](https://zilliz.com/learn/hierarchical-navigable-small-worlds-HNSW)の詳細はこちら|Github|論文
**DiskANN (ディスクベース)
DiskANN は、補助的な SSD ストレージを活用することで、高精度と低 DRAM フットプリントのバランスを取った ANNS アルゴリズムである。このアプローチにより、DiskANN は最新の DRAM ベースのソリューションよりも大きなベクトルデータセットをマシンごとにインデックス化することができ、費用対効果が高くスケーラブルなオプションとなっている。SSD ストレージを使用することで、DiskANN は最大 10 億ベクトルまでインデックスを作成することができ、5ms の低レイテンシで 95% の検索精度を維持することができます。これとは対照的に、既存の DRAM ベースのアルゴリズムは通常、同様のレイテンシと精度レベルで 1 億から 2 億のベクトルをインデックス化するのがピークです。DiskANN は、1 台のマシンで DRAM ベースのソリューションの 5~10 倍のデータセットにインデックスを付けることができるため、高価な DRAM リソースを使用せずに、さまざまなドメインでスケーラブルかつ正確なベクトル検索を実現できる可能性が広がります。
DiskANN](https://zilliz.com/learn/DiskANN-and-the-Vamana-Algorithm)についての詳細| Github
ANNOY (ツリーベース)
Annoy (Approximate Nearest Neighbors Oh Yeah)は、近似最近傍探索にツリーベースのアプローチを取り、バイナリツリーの森をコアデータ構造として利用します。機械学習におけるランダムフォレストや勾配ブースト決定木に慣れ親しんでいる人にとっては、Annoyはこれらのアルゴリズムの自然な拡張として見ることができるが、予測タスクの代わりに近似最近傍探索に適用される。
HNSWが連結グラフ上にセマンティック検索を構築し、複数のノードをスキップリスト化するのに対し、Annoyの重要なアイデアは、ベクトル空間を繰り返し分割し、これらの分割のサブセットのみを最近傍検索することである。このツリーベースの索引付けアプローチは、検索速度と精度の間のユニークなトレードオフを提供し、Annoyをこれら2つの要素のバランスを必要とするアプリケーションにとって魅力的な選択肢にしている。
ANNOY](https://zilliz.com/learn/approximate-nearest-neighbor-oh-yeah-ANNOY)についてもっと知る|Github|ドキュメント
NVIDIA CAGRA (グラフベース)
CAGRAは、近似最近傍探索にGPU並列性を使用するグラフ構築アプローチです。HNSWで使用されているCPUベースの反復的な方法とは異なり、CAGRAは、ノードが多数の近傍を持つIVFPQまたはNN-DESCENTを使用して、最初の密なグラフを作成することから始めます。その後、重要度の低いエッジをソートして削除し、GPUで効率的にトラバースできるようにグラフ構造を最適化します。GPUに適した構築プロセスを採用することで、CAGRAは最新のGPUの並列処理能力をフルに活用し、より高速な高次元近傍探索を行うことを目指している。
CAGRA](https://zilliz.com/blog/Milvus-introduces-GPU-index-CAGRA)についてさらに詳しく| ドキュメント| 論文
ベクターデータベース:プロダクションユース向けに最適化
ベクトルデータベースは、ベクトル埋め込みデータを効率的に保存、索引付け、照会するために設計されたソリューションです。大規模なプロダクションアプリケーションに特に有効です。
ベクターデータベースの主な利点:
スケーラビリティとチューナビリティ:ベクターデータベースは大量の高次元データを処理するために構築されており、データの増加に応じて複数のマシンにまたがる水平スケーリングが可能です。生産ワークロード:ベクターデータベースは、upsertsやdeletesなどによるベクターデータベースのワークやエンベッディングの絶え間ない変更に対応し、自動的にインデックスを更新してパフォーマンスの高いクエリーを実現します。統合されたデータ管理:ベクターデータベースは、データ管理、クエリ、結果検索のためのツールを内蔵しており、統合を簡素化し、開発時間を短縮します。
マルチテナンシーとデータ分離:マルチユーザーサポートはベクターデータベースの標準機能ですが、各ユーザーに別々のベクターデータベースを作成することは現実的ではありません。リソースを大量に消費し、システム全体が遅くなります。その代わり、共有インフラ内でのデータ分離に重点を置きましょう。
データの分離とは、1つのコレクション内での操作(ベクターの追加、削除、クエリ)がシステムの他の部分からは見えないことを意味します。コレクションの所有者がデータの共有を選択しない限り、です。
このようにして、リソースの利用とデータのプライバシーのバランスをとっている。複数のユーザが同じベクトルデータベースシステムに存在することができ、そのデータは分離され、安全です。そしてシステムは、分離やパフォーマンスで妥協することなく、コレクションレベルでアクセス制御と共有許可を管理することができます。
柔軟性:ベクターデータベースには多くの利点がありますが、柔軟性が最も優れています。これらのシステムは様々なタイプのベクトルデータ、疎から密まで、そして数値、テキスト文字列、バイナリコンテンツなどの異なるデータ形式を扱うことができる。これは、セマンティッククエリや機械学習タスクに超有用である。高次元のベクトルデータをベクトル空間で扱うことで、ベクトルデータベースは高速で正確な検索と取得が可能になる。これは、推薦システムから自然言語処理まで、複雑なデータポイントを高速かつ正確に検索・比較する必要がある多くの最新アプリケーションにとって重要です。
ベクターデータベースは、データの挿入やクエリの速度の違い、ハードウェア構成の違いなど、多様な運用上の要求に適応しなければなりません。これらの要因は、アプリケーションによって大きく変化します。そのため、最も堅牢なベクトルデータベースシステムは、広範な設定オプションを提供し、ユーザーが特定の要件や制約に合わせてシステムの動作を最適化できるようにしています。
ベクターライブラリとベクターデータベースの違いを抽象化して説明するために、新しい非構造化データ要素をベクターデータベースに挿入することを考えてみましょう。Milvusでは、このプロセスは簡単です:
from pymilvus import コレクション
collection = Collection('book')
mr = collection.insert(データ)
たった3行のコードで高次元ベクトルをMilvusベクトルデータベースに挿入することができます。対照的に、FAISSやScaNNのようなベクトル検索ライブラリにはこのようなシンプルさがなく、新しいデータに対応するために、あるチェックポイントでインデックス全体を手作業で再作成しなければならないことがよくあります。仮にこれが可能だとしても、ほとんどのベクトル・インデックスや検索ライブラリは、大規模なアプリケーションにとって完全なベクトル・インデックスやデータベースを貴重なものにするスケーラビリティやマルチテナンシー機能をまだ欠いている。
ベクター検索ライブラリーはプロトタイピングや小規模なアプリケーションには有用ですが、ベクターデータベースはデータセットやユーザーベースが増大する本番環境に適しています。
両方のアプローチの長所と短所を理解することで、開発者は十分な情報を得た上で決断を下し、オープンソースのベクターデータベース検索や非構造化データ管理のニーズに対して、ベクターデータベースのような最も適切なツールを活用することができます。
正しいツールの選択パフォーマンスとスケーラビリティ
ベクターライブラリとベクターデータベースのどちらを選ぶかということになると、多くの場合、パフォーマンスとスケーラビリティのトレードオフに帰着します。主な違いを表にまとめてみました。
| ベクター・ライブラリ|ベクター・データベース|ベクター・ライブラリ |---------------|-------------|-------------|
| マルチプリケーション | rbac | ✔ | ✘|ハイブリッド検索 | ハイブリッド・サーチ | ベクトルデータのストリームとバッチの両方をサポート。 | バックアップ
*ベクターライブラリープロトタイピングやあまり変化のないデータセットに最適。
ベクターデータベース:大規模で高次元のデータを効率的に保存、検索、管理するために最適化されているため、大規模なAIの開発と展開に適しています。
結論
AIと機械学習がイノベーションの限界を押し広げ続ける中、高次元のベクトル埋め込みデータを効率的に管理することは、データサイエンティストにとって依然として重要な課題である。ベクター・ライブラリーとベクター・データベースはこの領域で重要な役割を果たすが、適切なツールを活用するためには、それらの長所と限界を理解することが極めて重要である。
FAISS、Annoy、HNSWなどのベクトルライブラリは、高性能な類似検索とベクトルクラスタリング機能を提供することに優れています。これらの軽量ライブラリは、プロトタイピング、小規模アプリケーション、データセットが比較的静的で頻繁な更新を必要としないシナリオに適しています。
一方、Milvusのようなベクターデータベースは、大規模で増え続けるデータセットとユーザーベースを持つ実稼働環境において成功するように設計されている。そのスケーラビリティ、統合されたデータ管理機能、頻繁な更新をシームレスに処理する能力により、ベクターデータベースは、組織が難なく拡張できるAIソリューションを開発・展開することを可能にします。
最終的に、ベクターライブラリとベクターデータベースのどちらを選択するかは、プロジェクト固有の要件、データセットのサイズと動的性質、パフォーマンスとスケーラビリティのバランスによって決まります。
FAQ
ベクターストアは何のためにあるのですか?
ベクトルストアはベクトルを管理・保存し、高次元のベクトルデータを検索したり、ベクトル検索や類似性を検索したりするためのものです。これは機械学習やデータサイエンスの鍵となります。
ベクターデータベースはリアルタイム分析にどのように役立ちますか?
ベクトル・データベースは、高速な類似性検索と、動的環境やAIに不可欠な生データへの即時アクセスを可能にすることで、リアルタイム分析に役立ちます。これにより、データ主導の意思決定がより迅速になります。
ベクターデータベースの使用例にはどのようなものがありますか?
ベクトル・データベースは、eコマースにおける商品レコメンデーション、Spotifyにおける音楽ディスカバリー、銀行における不正検知などに使用されている。これらの伝統的なデータベースは複雑な高次元データの例である。
ベクターストアとベクターデータベースのどちらを選ぶべきか?
ベクターストアとベクターデータベースのどちらかを選択する際には、データの複雑さとサイズ、既存のインフラとの統合、コスト、パフォーマンス要件を考慮してください。これにより、適切なものを選択することができます。
読み続けて

非構造化データ入門
ベクトルデータベース101シリーズの最初のチュートリアルを始めましょう。毎週の学習につれて、複雑なMilvusも明白になっていきます。

データの完全性を守る:ベクターデータベースにおけるバックアップとリカバリ
このブログでは、vectorDBにおけるデータのバックアップとリカバリ、その課題、様々な方法、そしてデータ資産のセキュリティを強化するための専用ツールについて説明します。

マルチクラウド環境におけるベクターデータベースの展開
マルチクラウドの導入は、可能な限りのアップタイムを求めるサービスにとってますます一般的になってきており、企業はパフォーマンス、信頼性、コスト効率を最適化するために複数のクラウドプロバイダーを活用している。