MongoDBとAerospikeの比較:GenAIアプリケーションに適したデータベースの選択
AI主導のアプリケーションが進化する中、これらの進化をサポートするベクトル検索機能の重要性はいくら強調してもし過ぎることはない。このブログ記事では、ベクトル検索機能を持つ2つの著名なデータベースについて説明する:MongoDBとAerospikeである。MongoDBとAerospike**である。それぞれ、推薦エンジン、画像検索、セマンティック検索などのアプリケーションに必須の機能であるベクトル検索を扱うための堅牢な機能を提供している。私たちのゴールは、開発者やエンジニアに明確な比較を提供し、どのデータベースが彼らの特定の要件に最も合致しているかを判断する手助けをすることです。
ベクターデータベースとは?
MongoDBと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のような軽量ベクトルデータベース。
- 小規模なベクトル検索が可能なベクトル検索アドオンを備えた従来のデータベース**。
MongoDBはJSONライクなドキュメントでデータを格納するNoSQLデータベースで、***Aerospikeは分散型のスケーラブルなNoSQLデータベースである。どちらもアドオンとしてベクトル検索機能を持っている。この記事では、両者のベクトル検索機能を比較する。
MongoDB: 基礎編
MongoDB Atlasのベクトル検索は、MongoDB Atlasに保存されたデータに対してベクトルの類似性検索を行う機能です。ドキュメントデータと一緒に高次元のベクトル埋め込みデータをインデックス化してクエリし、データベース内でAIや機械学習を行うことができます。
Atlas Vector Searchの中核は、HNSW(Hierarchical Navigable Small World)アルゴリズムを使ったベクトルデータのインデックス化と検索です。これによりベクトル空間の多階層グラフが作成され、近似最近傍(ANN)検索が可能になる。これは大規模なベクトル検索におけるスピードと精度のバランスです。Atlas Vector Search は、10,000 ドキュメントまでのクエリに対して、パフォーマンスよりも精度を優先する Exact Nearest Neighbors (ENN) 検索もサポートしています。
Atlas Vector Searchの大きな利点の一つは、MongoDBの柔軟なドキュメントモデルとの統合です。ベクトル埋め込みを他のドキュメントデータと一緒に保存できるので、より文脈に沿った正確な検索ができます。最大4096次元まで埋め込むことができ、どのようなデータでもクエリできます。アトラスベクター検索では、ベクトルの類似検索と従来の文書フィルタリングを組み合わせることができます。例えば、商品のセマンティック検索は、カテゴリー、価格帯、在庫状況でフィルタリングすることができます。
また、Atlas Vector Searchはハイブリッド検索にも対応しており、ベクトル検索とフルテキスト検索を組み合わせることで、より詳細な検索結果を得ることができます。これは、キーワードベースの検索に特化したAtlas Searchとは異なる。このプラットフォームは一般的なAIサービスやツールと統合されているため、OpenAIやVoyageAI、その他Hugging Faceに掲載されている多くのプロバイダーのモデルを埋め込んで使用することができる。また、大規模言語モデル(LLM)を使用するアプリケーションを構築するためのLangChainやLlamaIndexのようなオープンソースのフレームワークもサポートしています。
スケーラビリティとパフォーマンスを保証するために、MongoDBアトラスは、アトラスサーチとベクターサーチのワークロード専用のインフラを提供するサーチノードを提供しています。これにより、最適化されたコンピュートリソースと、検索ニーズの独立したスケーリングが可能になり、スケール時のパフォーマンスが向上します。
これらの機能をMongoDBエコシステム内に持つことで、Atlas Vector SearchはAIを活用したアプリケーション、レコメンデーションシステム、高度な検索機能を構築する開発者にとって完全なソリューションとなります。ベクターデータベースを別途用意する必要がなく、MongoDBのスケーラビリティと豊富な機能をベクター検索と共に利用することができます。
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がどのようにベクトルデータを扱い、類似検索のためのインデックスを構築し、高次元のベクトル検索に対応できるかを示している。
主な相違点
ベクトル検索に関しては、MongoDBにもAerospikeにも優れたオプションがあります。アプリケーションにベクトル検索を追加しようとしている開発者は、両者の違いを理解することが決断の助けになるでしょう。ここでは、MongoDBアトラスベクター検索とAerospikeベクター検索(AVS)をいくつかのポイントについて比較してみましょう。
検索方法
MongoDB Atlas Vector Search と Aerospike Vector Search はどちらも、ベクトルデータのインデックス化と検索に HNSW (Hierarchical Navigable Small World) アルゴリズムを採用しています。このアルゴリズムはベクトル空間の多階層グラフを作成するので、近似最近傍 (ANN) 検索ができます。MongoDB Atlas は、10,000 ドキュメントまでのクエリに対して Exact Nearest Neighbors (ENN) 検索もサポートしています。これによって MongoDB ユーザーは、ユースケースに応じてスピードと精度のバランスを柔軟に調整できるようになります。
データ
MongoDB の柔軟なドキュメントモデルでは、ベクトル埋め込みを他のドキュメントデータと一緒に保存できます。これにより、ベクターの類似検索を従来のドキュメントフィルタリングと組み合わせることができ、より文脈に沿った正確な検索が可能になります。例えば、商品のセマンティック検索を行い、カテゴリ、価格帯、在庫状況などで結果をフィルタリングすることができます。
Aerospikeは主にキーバリューストアであり、ベクトルインデックスと検索機能が追加されている。1つのレコードに対して複数のベクトルやインデックスを使用できるため、データの検索方法に柔軟性があります。しかし、そのデータモデルは、半構造化データや非構造化データを扱うMongoDBのドキュメントベースのアプローチほど柔軟ではないかもしれない。
スケーラビリティとパフォーマンス
MongoDB Atlasにはサーチノードがあり、アトラスサーチとベクターサーチのワークロード専用のインフラを提供します。これにより、最適化されたコンピュートリソースと、検索ニーズの独立したスケーリングが可能になり、スケール時に優れたパフォーマンスを得ることができます。
Aerospikeのインデックス構築のアプローチは異なる。Aerospikeは、インデックス作成キューからのインデックスレコードを、すべてのAVSノードで非同期に処理します。これはAVSクラスタのすべてのCPUコアを使用するため、インデックス構築のスケーラビリティが向上します。Aerospikeはまた、インジェスト時に「プリハイドレーション」技術を使用し、インデックスキャッシュに関連データを投入することで、クエリ性能を向上させることができる。
柔軟性とカスタマイズ
MongoDBアトラスベクター検索は、類似度計算のための複数の距離メトリックをサポートし、最大4096次元までのあらゆるプロバイダーの埋め込みを扱うことができます。また、ベクトル検索と全文検索を組み合わせたハイブリッド検索もサポートしており、より正確な検索結果を得ることができます。
Aerospike Vector Searchは、現在のプレビューに限定されますが、レコードごとに複数のベクトルとインデックスを使用できます。これは、同じデータを異なる方法で検索する場合に便利です。
統合とエコシステム
MongoDB Atlasは一般的なAIサービスやツールと統合しており、OpenAIやVoyageAI、その他Hugging Faceに掲載されている多くのモデルの埋め込みに対応しています。また、AIを搭載したアプリケーションを構築するためのLangChainやLlamaIndexとの統合もサポートしています。
Aerospikeは、LangChainのような一般的なフレームワークとも統合できます。
使いやすさ
MongoDBは開発者に優しいことで知られており、多くのドキュメントと大きなコミュニティがあります。マネージドサービスとしてのAtlasは、セットアップとメンテナンスを簡素化できます。
Aerospikeは、そのアーキテクチャに慣れていない場合、学習曲線が急である。Aerospikeのベクトル検索はプレビュー版であるため、より確立されたオプションと比較すると、ドキュメントやコミュニティのサポートが少ないかもしれない。
コスト
MongoDB Atlasには段階的な価格モデルがあり、利用状況や機能によってコストが異なります。ベクター検索が予算に合うかどうかを確認する必要があります。
Aerospikeの価格設定は公開されていないため、詳細についてはAerospikeに問い合わせる必要がある。Aerospikeを実行するためのソフトウェアコストとインフラコストの両方を考慮してください。
それぞれの使用時期
MongoDB Atlas Vector Search は、柔軟なデータモデルを必要とし、ベクトル検索と通常のドキュメントクエリを統合する必要があるアプリケーションに最適です。複雑な半構造化データを扱うプロジェクトで、ベクトル検索と全文検索を組み合わせたハイブリッド検索が必要な場合に最適です。MongoDBは、コンテンツ推薦システム、セマンティック検索エンジン、大規模な言語モデルを使用するAIベースの分析プラットフォームなど、ベクトル埋め込みと一緒にさまざまなデータタイプを保存してクエリする必要がある場合に最適です。また、構造化データと非構造化データの両方で動作し、一般的なAIサービスやツールと統合する必要があるAIアプリケーションを構築する開発者にも最適です。
Aerospike Vector Searchは、ほとんどがキーバリューだがベクトル検索が必要な、ハイパフォーマンスでリアルタイムのアプリケーションに最適です。リアルタイム入札システム、不正検知エンジン、パーソナライズされたコンテンツ配信ネットワークなど、極めて低いレイテンシーと高いスループットを必要とするユースケースに最適です。Aerospikeのインデックス構築とキャッシュプリハイドレーションのアプローチは、データ取り込み速度とクエリ速度が重要なシナリオにおいて、パフォーマンスに大きなメリットをもたらす。AerospikeのデータモデルはMongoDBほど柔軟ではないかもしれませんが、複雑なデータモデリング要件よりも生のパフォーマンスとスケールを優先するアプリケーションにはAerospikeが適しています。
まとめ
MongoDB Atlas Vector Searchは、ドキュメントデータベースの柔軟性とベクトル検索機能を組み合わせた完全なソリューションで、多様なデータを扱う必要がある複雑なAI駆動型アプリケーションに最適だ。通常のクエリ、ハイブリッド検索、豊富なAIツールエコシステムとのベクトル検索の統合が強みです。Aerospike Vector Searchはより専門的で、低レイテンシーと高スループットが鍵となる、高性能でリアルタイムなシナリオに優れている。インデックス作成アプローチとパフォーマンス重視のため、スピードとスケールを必要とする特定のユースケースに適している。最終的に、ベクトル検索にMongoDBとAerospikeのどちらを使うかは、アプリケーションの要件、データの複雑さ、パフォーマンスの必要性、スケーラビリティの要求によって決定されるべきです。既存のインフラ、データの性質、クエリーパターン、AIツールやサービスとの統合レベルなどを考慮して決定してください。
MongoDBとAerospikeの概要についてはこちらをお読みいただきたいが、これらを評価するには、ユースケースに基づいて評価する必要がある。それに役立つツールの1つが、ベクターデータベースを比較するためのオープンソースのベンチマークツールである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)
読み続けて

How to Use Anthropic MCP Server with Milvus
MCP + Milvus: Streamline AI agent development with standardized data access, eliminating integration hassles while enhancing context and flexibility.

Selecting the Right ETL Tools for Unstructured Data to Prepare for AI
Learn the right ETL tools for unstructured data to power AI. Explore key challenges, tool comparisons, and integrations with Milvus for vector search.

Proactive Monitoring for Vector Database: Zilliz Cloud Integrates with Datadog
we're excited to announce Zilliz Cloud's integration with Datadog, enabling comprehensive monitoring and observability for your vectorDB deployments.
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.


