Vespa vs Aerospike AIアプリに適したベクターデータベースの選択
ベクターデータベースとは?
VespaとAerospikeを比較する前に、まずベクターデータベースの概念について調べてみましょう;
ベクトルデータベース](https://zilliz.com/learn/what-is-vector-database)は、高次元のベクトルを格納し、照会するために特別に設計されたもので、非構造化データの数値表現です。これらのベクトルは、テキストの意味、画像の視覚的特徴、または製品の属性などの複雑な情報をエンコードします。効率的な類似検索を可能にすることで、ベクトルデータベースはAIアプリケーションにおいて極めて重要な役割を果たし、より高度なデータ分析と検索を可能にしている。
ベクトルデータベースの一般的なユースケースには、電子商取引の商品推奨、コンテンツ発見プラットフォーム、サイバーセキュリティにおける異常検知、医療画像分析、自然言語処理(NLP)タスクなどがある。また、AI幻覚のような問題を軽減するために、外部知識を提供することによって大規模言語モデル(LLM)の性能を向上させる技術であるRAG(Retrieval Augmented Generation) において重要な役割を果たす。
市場には、以下のような多くの種類のベクトル・データベースがある:
- Milvus](https://zilliz.com/what-is-milvus)、Zilliz Cloud(フルマネージドMilvus)など。
- Faiss](https://zilliz.com/learn/faiss)やAnnoyのようなベクトル検索ライブラリ。
- Chroma](https://zilliz.com/blog/milvus-vs-chroma)やMilvus Liteのような軽量ベクトルデータベース。
- 小規模なベクトル検索が可能なベクトル検索アドオンを備えた従来のデータベース**。
Vespaは専用のベクターデータベースです。Aerospikeは分散型でスケーラブルなNoSQLデータベースで、アドオンとしてベクトル検索機能を備えている。この記事では、両者のベクトル検索機能を比較する。
Vespa概要とコアテクノロジー
Vespaは強力な検索エンジンとベクトルデータベースで、複数の種類の検索を一度に扱うことができます。ベクター検索、テキスト検索、構造化データによる検索に優れています。つまり、類似したアイテム(画像や商品など)を検索したり、テキスト内の特定の単語を検索したり、日付や数字に基づいて検索結果をフィルタリングしたりすることができます。Vespaは柔軟性があり、単純な数値から複雑な構造まで、さまざまな種類のデータを扱うことができます。
Vespaの際立った特徴のひとつは、ベクトル検索ができることです。ドキュメントにいくつでもベクトルフィールドを追加することができ、Vespaはそれらを素早く検索します。Vespaはテンソルと呼ばれる特殊なベクトルも扱うことができ、マルチパートのドキュメント埋め込みなどを表現するのに便利です。Vespaはこれらのベクトルをどのように保存し検索するかについてスマートなので、速度を落とすことなく本当に大量のデータを扱うことができます。
Vespaは超高速かつ効率的に構築されています。メモリを管理し、検索を行うためにC++で書かれた独自の特別なエンジンを使用しているため、複雑なクエリや大量のデータを扱ってもうまく動作します。新しいデータを追加したり、たくさんの検索を同時に処理したりしても、スムーズに動作し続けるように設計されています。そのため、多くのトラフィックやデータを処理する必要がある、大規模で現実的なアプリケーションに最適です。
Vespaのもう一つの優れた点は、より多くのデータやトラフィックを処理するために自動的にスケールアップできることです。Vespaのセットアップにコンピュータを追加すれば、自動的にそのコンピュータに作業を分散させることができる。これは、複雑なセットアップをすることなく、ニーズの成長に合わせて検索システムを成長させることができることを意味します。Vespaは、データ量やトラフィックの変化に対応するために自動的に調整することもでき、コスト削減に役立ちます。そのため、時間とともに成長する検索システムを必要とするビジネスには最適です。
Aerospike概要とコアテクノロジー
Aerospikeは、高性能なリアルタイムアプリケーション向けのNoSQLデータベースである。ベクトルデータベースのユースケースに適しているように、ベクトルインデックスと検索のサポートが追加された。ベクトル機能はAerospike Vector Search (AVS)と呼ばれ、現在プレビュー中です。Aerospikeから早期アクセスをリクエストできます。
AVSは、ベクター検索用にHNSW(Hierarchical Navigable Small World)インデックスのみをサポートしています。AVSで更新や挿入が行われると、ベクトルを含むレコードデータがAerospikeデータベース(ASDB)に書き込まれ、すぐに表示されます。インデックスを作成するためには、各レコードは、インデックスの指定されたベクトルフィールドに少なくとも1つのベクトルを持つ必要があります。1つのレコードに対して複数のベクトルとインデックスを持つことができるので、同じデータをさまざまな方法で検索することができます。Aerospike では、アップサートされたレコードを特定のセットに割り当てて、監視および操作できるようにすることを推奨しています。
AVSにはインデックスを構築する独自の方法があり、それはすべてのAVSノードで同時並行的に行われます。ベクトルレコードの更新はASDBに直接書き込まれますが、インデックスレコードはインデックスキューから非同期に処理されます。これはバッチで行われ、すべてのAVSノードに分散されるため、AVSクラスタのすべてのCPUコアを使用し、スケーラブルです。Ingestionのパフォーマンスはホストのメモリとストレージレイヤーの構成に大きく依存します。
インデキシングキュー内の各アイテムについて、AVSはインデキシング用のベクトルを処理し、各ベクトルのクラスタを構築し、それらをASDBにコミットします。インデックスレコードには、ベクター自体のコピーと、HNSWグラフの指定されたレイヤーにおけるそのベクターのクラスタが含まれます。インデックス作成には、単一命令、複数データ並列処理のためのベクトル拡張(AVX)を使用する。
クラスタ内のレコードは相互に接続されているため、AVSはインジェスト時にクエリーを行い、インデックスキャッシュに「事前水分補給」を行う。これらのクエリーはクエリーリクエストとしてカウントされず、ストレージレイヤーに対するリードとして表示される。こうすることで、キャッシュに関連データが蓄積され、クエリ性能を向上させることができる。これはAVSがどのようにベクトルデータを扱い、類似検索のためのインデックスを構築し、高次元のベクトル検索に対応できるかを示している。
主な相違点
検索手法
VespaとAerospikeではベクトル検索に対するアプローチが異なり、実行するクエリの種類によってパフォーマンスや効率に影響を与えます。
Vespa:Vespaは1つのエンジンで複数の検索タイプ、ベクトル検索、テキスト検索、構造化データフィルタリングをサポートします。ベクトル検索はリアルタイムかつ大規模な検索に最適化されています。Vespaは様々なタイプのベクトル(テンソルベースのベクトルを含む)をインデックス化し、類似したアイテムを素早く検索することができます。高度なアルゴリズムを使用してベクトルを検索し、高次元データの複雑なクエリをサポートします。
Aerospike:Aerospikeのベクトル検索は、HNSW(Hierarchical Navigable Small World)インデックスに基づいている。これは高次元データ、特に最近傍探索に最適化されたグラフベースの探索アルゴリズムである。Aerospikeのベクトル検索はプレビュー中で、リアルタイムアプリケーション用に構築されているため、ベクトルの更新はすぐに検索に反映される。しかし、HNSWしかサポートしていないため、Vespaのような特定のユースケースに特化した検索アルゴリズムのバリエーションはないかもしれない。
データ型
異なるデータ型に関しては、どちらも柔軟性があるが、構造化データ、半構造化データ、非構造化データの扱い方に大きな違いがある。
**ベスパVespaは構造化データ、半構造化データ、非構造化データを柔軟に扱うことができる。1つのドキュメントで複数のデータタイプを扱うことができるので、テキスト、数値、ベクトルデータを一緒にブレンドすることができます。例えば、ベクトル検索と構造化フィルタリング(価格帯や出版日など)を混在させることができます。
Aerospike:NoSQLデータベースであるAerospikeは、構造化・半構造化データのリアルタイム保存に最適化されている。現在はベクトル検索をサポートしているが、構造化データの高速な書き込みと検索に主眼を置いている。Aerospikeのデータモデルはシンプルですが、高スループットのアプリケーションに効果的です。ベクトル検索では、ベクトルデータをレコードの一部として管理する必要があるが、1つのクエリで異なるデータ型を扱うVespaの機能はない。
スケーラビリティとパフォーマンス
VespaとAerospikeはどちらもスケーラビリティのために構築されていますが、その方法は異なります。
Vespa:Vespaは、大規模で高トラフィックのアプリケーション向けに設計されています。複数のノードにデータと処理を自動的に分散し、リソースの割り当てを動的に調整することができます。この自己スケーリング機能により、Vespaは高成長やトラフィック負荷の変動が予想されるビジネスに適した選択肢となります。
Aerospike:Aerospikeは、特にリアルタイムのワークロードに対するスケーラビリティで知られている。データがノード間でパーティショニングされ、読み取りと書き込みの両方が低レイテンシーアクセスのために最適化された分散アーキテクチャを採用している。しかし、ベクトル検索の性能はメモリとストレージレイヤーの構成に大きく依存するため、最大スループットを得るには慎重な設定が必要だ。
柔軟性とカスタマイズ
複雑な検索ソリューションを構築する場合、カスタマイズが鍵となる。
Vespa:Vespaは非常に柔軟です。様々なベクタータイプを含むカスタムフィールドで複雑なスキーマを定義できます。また、カスタムランキング、フィルタリング、複数の検索タイプ(テキスト、ベクトル、数値など)の組み合わせを含む強力なクエリを定義できます。このため、Vespaは複雑なデータモデリングや高度な検索カスタマイズを必要とするアプリケーションに適しています。
Aerospike:Aerospikeの柔軟性はデータモデルに集中しています。レコード内のベクトルフィールドを定義し、インデックスやクエリの方法をカスタマイズすることができます。しかし、Vespaと比較すると、検索ロジックやランキングのカスタマイズオプションは限られている。高度にカスタマイズ可能な検索クエリよりも、シンプルなリアルタイムアプリケーションに最適化されている。
統合とエコシステム
他のツールやエコシステムとの統合は、この2つのどちらかを選択する際の大きな要因となる。
Vespa:Vespaは、一般的な機械学習ライブラリや検索エンジンを含む様々なツールやフレームワークと統合できる。複雑なデータパイプラインをサポートしているので、レコメンデーションエンジンや画像検索、大規模なコンテンツ検索などのユースケースに適している。また、RESTful APIを備えているため、外部システムとの統合も比較的簡単だ。
Aerospike:Aerospikeはリアルタイムのデータ保存と検索に重点を置いているため、大規模なデータセットへの低遅延アクセスを必要とするアプリケーションとの統合に適している。Python、Java、Goを含む一般的なエコシステム用のコネクタがある。しかしVespaと比較すると、機械学習フレームワークや他の複雑なデータシステムと統合するために、よりカスタム開発が必要になるかもしれない。
使いやすさ
開発者にとって、学習曲線、セットアップの複雑さ、継続的なメンテナンスは重要である。
Vespa:Vespaは、特に分散システムや高度な検索エンジンに慣れていない人にとっては、セットアップや設定が難しいかもしれません。しかし、包括的なドキュメントがあり、セットアップやトラブルシューティングを助けてくれる活発なコミュニティがある。一度セットアップすれば、Vespaの柔軟なクエリシステムとセルフスケーリングにより、メンテナンスがより管理しやすくなります。
Aerospike:Aerospikeは一般的にセットアップとメンテナンスが簡単で、特にNoSQLデータベースに慣れている開発者向けだ。リアルタイムのパフォーマンスに重点を置いているため、検索ロジックをあまり複雑にせずにスピードを求めるプロジェクトに適している。ベクター検索機能は便利だが、Vespaのフル機能のベクター機能に比べると設定に手間がかかるかもしれない。
コスト
この2つのどちらかを選択する場合、特に高速なスケールを計画している場合は、コストが大きな要因となります。
Vespa:Vespaはパフォーマンスもスケールも良いが、コスト構造は特に水平にスケールする場合、使用するリソースによって異なる可能性がある。オープンソースなのでライセンス料はかからないが、運用コスト(ハードウェア、クラウドインスタンスなど)とメンテナンスはかさむ。また、Vespaにはマネージド・サービスもあり、追加コストが発生することもある。
Aerospike:Aerospikeは、オープンソース版とエンタープライズ版のオプションがあり、より分かりやすい価格モデルとなっている。エンタープライズ版には高度な機能とサポートがあり、ミッションクリティカルなアプリケーションには重要だ。Vespaと同様、特にベクトル検索を高スループット環境に統合する場合、スケーリングが運用コストにつながる可能性がある。
セキュリティ機能
機密データを扱う場合、特にこれらのデータベースを実運用で使用する場合、セキュリティは常に懸念事項である。
Vespa:Vespaには認証やアクセス制御を含むさまざまなセキュリティ機能がありますが、転送時や静止時のデータを保護するために追加で設定する必要があります。オープンソースのセキュリティ機能が利用できるため、要件に応じてカスタマイズする必要があります。
Aerospike:Aerospikeは、認証、静止時の暗号化、TLSによるセキュアな通信など、堅牢なセキュリティ機能を備えています。エンタープライズ版には、GDPRのような標準に準拠するための追加セキュリティ機能もあるので、セキュリティの高いアプリケーションに適しています。
それぞれを選択する場合
Vespa:Vespaは、ベクトル検索、全文検索、構造化データフィルタリングを1つのクエリで行うマルチモーダル検索を必要とするアプリケーション向けです。リアルタイム検索、スケーラビリティ、動的なクエリのカスタマイズを必要とする大規模な分散データシステムにVespaを使用する。例えば、レコメンデーション・エンジン、セマンティック・コンテンツ検索、複数のデータタイプや複雑なランキング・モデルが関与する高度なeコマース検索などが挙げられます。
Aerospike:Aerospikeは、高いスループットとシンプルな検索ロジックを必要とする、リアルタイムで低レイテンシーのアプリケーション向けです。金融取引システムや広告プラットフォームなど、高速なデータ取り込みと検索が重要なシナリオ向けです。Aerospikeのベクトル検索(まだプレビュー中だが)は、構造化データまたは半構造化データで効率的な最近傍検索を必要とするユースケース向けで、カスタマイズよりもスピードが重視される場合に適している。
まとめ
VespaとAerospikeは異なる。Vespaは柔軟性が高く、マルチモーダルかつスケーラブルで、データ量の多いアプリケーション向けであり、Aerospikeはリアルタイムかつシンプルで高速なワークロード向けである。どちらを選択するかは、ユースケース、データタイプ、検索の複雑さとパフォーマンスのバランスによって決まります。よく考えてみてください。
これを読めばVespaとAerospikeの概要がわかりますが、これらを評価するにはユースケースに基づいて評価する必要があります。それに役立つツールのひとつが、ベクターデータベースの比較のためのオープンソースのベンチマークツールであるVectorDBBenchだ。最終的には、独自のデータセットとクエリパターンで徹底的なベンチマークを行うことが、分散データベースシステムにおけるベクトル検索に対する、強力だが異なるこの2つのアプローチのどちらを選択するかの鍵となるだろう。
オープンソースのVectorDBBenchを使ってベクトルデータベースを評価・比較する
VectorDBBenchは、高性能なデータ保存・検索システム、特にベクトルデータベースを必要とするユーザーのためのオープンソースのベンチマークツールです。このツールにより、ユーザはMilvusやZilliz Cloud(マネージドMilvus)のような異なるベクトルデータベースシステムを独自のデータセットを使ってテストし比較し、自分のユースケースに合うものを見つけることができます。VectorDBBenchを使えば、ユーザーはマーケティング上の主張や伝聞ではなく、実際のベクターデータベースのパフォーマンスに基づいて決定を下すことができます。
VectorDBBenchはPythonで書かれており、MITオープンソースライセンスの下でライセンスされています。VectorDBBenchは、その機能と性能の改善に取り組む開発者のコミュニティによって活発にメンテナンスされています。
VectorDBBenchをGitHubリポジトリ**からダウンロードして、我々のベンチマーク結果を再現したり、あなた自身のデータセットでパフォーマンス結果を得てください。
VectorDBBench Leaderboard](https://zilliz.com/vector-database-benchmark-tool?database=ZillizCloud%2CMilvus%2CElasticCloud%2CPgVector%2CPinecone%2CQdrantCloud%2CWeaviateCloud&dataset=medium&filter=none%2Clow%2Chigh&tab=1)で、主流のベクトルデータベースのパフォーマンスを簡単に見てみましょう。
ベクターデータベースの評価については、以下のブログをお読みください。
- ベンチマーク・ベクター・データベースのパフォーマンス:テクニックと洞察](https://zilliz.com/learn/benchmark-vector-database-performance-techniques-and-insights)
- VectorDBBench: Open-Source Vector Database Benchmark Tool](https://zilliz.com/learn/open-source-vector-database-benchmarking-your-way)
- ベクターデータベースを他のデータベースと比較する](https://zilliz.com/comparison)
VectorDB、GenAI、MLに関するその他のリソース
- ジェネレーティブAIリソースハブ|Zilliz](https://zilliz.com/learn/generative-ai)
- あなたのGenAIアプリのためのトップパフォーマンスAIモデル|Zilliz](https://zilliz.com/ai-models)
- RAGとは](https://zilliz.com/learn/Retrieval-Augmented-Generation)
- 大規模言語モデル(LLM)を学ぶ](https://zilliz.com/learn/ChatGPT-Vector-Database-Prompt-as-code)
- ベクトルデータベース101](https://zilliz.com/learn/what-is-vector-database)
- 自然言語処理(NLP)](https://zilliz.com/learn/introduction-to-natural-language-processing-tokens-ngrams-bag-of-words-models)
読み続けて

Introducing Functions and Model Inference on Zilliz Cloud: Automatic Embedding and Reranking with Hosted Models
Zilliz Cloud Functions auto-generate embeddings via OpenAI, Voyage AI, Cohere, or Zilliz Hosted Models. Built-in reranking — just insert text and search.

Legal Document Analysis: Harnessing Zilliz Cloud's Semantic Search and RAG for Legal Insights
Enhance legal document analysis with Zilliz Cloud’s Semantic Search and RAG. Improve accuracy, efficiency, and scalability for contracts, case law, and compliance.

Multimodal Pipelines for AI Applications
Learn how to build scalable multimodal AI pipelines using DataVolo and Milvus. Discover best practices for handling unstructured data and implementing RAG systems.
The Definitive Guide to Choosing a Vector Database
Overwhelmed by all the options? Learn key features to look for & how to evaluate with your own data. Choose with confidence.