MongoDB vs Neo4j:GenAIアプリケーションに適したデータベースの選択
AI主導のアプリケーションが進化する中、これらの進化をサポートするベクトル検索機能の重要性はいくら強調してもしすぎることはない。このブログ記事では、ベクトル検索機能を持つ2つの著名なデータベースについて説明する:MongoDBとNeo4jである。それぞれ、推薦エンジン、画像検索、セマンティック検索などのアプリケーションに必須の機能であるベクトル検索を扱うための堅牢な機能を提供している。私たちのゴールは、開発者やエンジニアに明確な比較を提供し、どのデータベースが彼らの特定の要件に最も合致するかを決定する手助けをすることです。
ベクターデータベースとは?
MongoDBとNeo4jを比較する前に、まずベクターデータベースの概念を探ってみましょう;
ベクトルデータベース](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はNoSQLデータベースであり、Neo4jはグラフデータベースである。どちらもベクトル検索をアドオンとして持っている。この投稿では、両者のベクトル検索機能を比較する。 ;
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のスケーラビリティと豊富な機能をベクター検索と共に利用することができます。
Neo4J: 基礎編
Neo4jのベクトル検索により、開発者はグラフ全体の類似データを検索するためのベクトルインデックスを作成できる。これらのインデックスは、ベクトル埋め込み(テキスト、画像、音声のようなデータの意味をとらえた数値表現)を含むノード・プロパティで動作します。システムは4096次元までのベクトルと、コサインおよびユークリッド類似性関数をサポートしている。
この実装では、HNSW(Hierarchical Navigable Small World)グラフを使用して、高速な近似k-最近傍検索を行う。ベクトル・インデックスに問い合わせを行う際、検索したい近傍ノードの数を指定すると、システムは類似度スコア順にマッチするノードを返す。これらのスコアは0~1で、高いほど類似度が高い。HNSWアプローチは、類似ベクトル間のつながりを保持し、システムがベクトル空間の異なる部分に素早くジャンプできるようにすることでうまく機能します。
ベクトル・インデックスの作成と使用は、クエリ言語を通して行います。CREATE VECTOR INDEX コマンドでインデックスを作成し、ベクトルの次元や類似関数などのパラメータを指定することができます。システムは設定された次元のベクトルだけがインデックスされることを確認します。これらのインデックスのクエリはdb.index.vector.queryNodesプロシージャで行われ、インデックス名、結果数、クエリベクトルを入力として受け取ります。
Neo4jのベクトルインデックスには、ベクトル表現を圧縮することでメモリ使用量を削減する量子化のようなパフォーマンス最適化があります。ノードあたりの最大接続数(M)や、挿入時に追跡される最近傍の数(ef_construction)などのパラメータで、インデックスの動作を調整できます。これらのパラメータによって精度と性能のバランスをとることができるが、ほとんどのユースケースではデフォルトのままで十分である。また、システムはバージョン5.18から関係ベクトルインデックスをサポートしているので、関係プロパティで類似データを検索することができる。
これにより、開発者はAIを活用したアプリケーションを構築することができる。グラフクエリとベクトル類似性検索を組み合わせることで、アプリケーションは完全一致ではなく、意味的な意味に基づいて関連データを見つけることができる。例えば、映画の推薦システムは、グラフ構造を使用して、推薦がユーザーの好みと同じジャンルまたは時代から来ることを保証しながら、類似した映画を見つけるためにプロット埋め込みベクトルを使用することができます。
主な違い
アーキテクチャと検索アプローチ
MongoDB Atlas Vector Searchは、ドキュメントベースのアーキテクチャにベクトル検索を組み込んでいるため、他のドキュメントデータと一緒にベクトルを保存することができます。Neo4jはグラフ構造にベクトル検索を組み込んでいるので、ノードやリレーションシップのプロパティからベクトルを検索できる。どちらも近似最近傍検索にHNSWアルゴリズムを使用し、最大4096次元をサポートする。
データモデルとクエリの柔軟性
MongoDBのアプローチは、ベクトル検索とドキュメントベースのフィルタリングを組み合わせる必要がある場合に最適です。例えば、価格帯や在庫でフィルタリングしながら、似たような商品を検索することができます。Neo4jの強みは、関係をトラバースする能力にある。関連するコンテンツを見つけるためにベクトルの類似性を使いながら、検索にコンテキストと制約を追加するためにグラフの関係を使うことができる。どちらもコサインとユークリッドの類似性関数をサポートしています。
統合とエコシステム
MongoDB Atlas Vector Searchは、OpenAIやVoyageAIのような一般的なAIサービスや、LangChainやLlamaIndexのようなフレームワークとの統合が組み込まれています。また、ベクトル検索と全文検索を組み合わせたハイブリッド検索もサポートしている。Neo4jはグラフに特化した統合に重点を置いており、好きな埋め込みモデルを使うことができる。
スケーラビリティとパフォーマンス
MongoDB Atlasには、ベクトル検索ワークロード専用の検索ノードがあり、検索を独立して拡張できます。Neo4jには、ベクトル量子化やチューニング可能なパラメータなど、精度と速度のバランスをとるためのパフォーマンス最適化がある。どちらも大規模なベクトル演算を扱えるが、純粋な検索ワークロードではMongoDBの専用インフラが有利かもしれない。
MongoDBアトラスベクター検索を使うとき
MongoDB アトラスベクターサーチは、大量のドキュメントベースのデータをベクター検索で扱う必要があるときに使います。従来のドキュメントクエリとセマンティック検索を組み合わせる必要があるときに最適です。例えば、eコマースプラットフォームで商品の類似検索とカテゴリや価格、在庫状況によるフィルタリングが必要なときなどです。OpenAI、VoyageAI、LangChain、LlamaIndexとの接続が組み込まれているため、AIサービスやLLMの統合が必要な場合に特に適している。Search Nodesインフラは、検索ワークロードを独立してスケールする必要があるアプリケーションに適している。
Neo4jベクトル検索を使うとき
Neo4jのベクトル検索は、データポイント間の関係を理解する必要がある場合に最適です。コンテンツの類似性と、アイテム、ユーザー、カテゴリー間の複雑な関係の両方を考慮する必要があるレコメンデーションエンジンに最適です。ベクトル検索はノードと関係の両方に適用できるので、ナレッジグラフ、不正検出システム、ソーシャルネットワークのように、エンティティ間のつながりがエンティティそのものと同じくらい重要なアプリケーションに適している。Neo4jのアプローチは、グラフアルゴリズムとベクトル類似性検索を組み合わせる必要がある場合に特に優れている。
結論
ベクトル検索にMongoDB AtlasとNeo4jのどちらを選ぶかは、データモデルとアプリケーションの要件による。MongoDB Atlasは、強力なドキュメントベースのフィルタリングとAIサービス接続を内蔵した、より統合されたソリューションなので、セマンティック検索で柔軟なドキュメントストレージを必要とするアプリケーションに最適です。Neo4jはリレーションシップベースのベクトル検索とグラフ分析に独自の強みを持つため、データのリレーションシップがアプリケーションの機能の鍵となる場合には、より良い選択となる。どちらも堅牢なベクトル検索を備えていますが、得意とする分野が異なるため、データ構造、スケーリング、統合に関する具体的なニーズを考慮して決定してください。
これを読めばMongoDBとNeo4Jの概要がわかるが、これらを評価するにはユースケースに基づいて評価する必要がある。それに役立つツールのひとつが、ベクターデータベースを比較するためのオープンソースのベンチマークツール、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: オープンソースベクターデータベースベンチマークツール](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)
読み続けて

Why Teams Are Migrating from Weaviate to Zilliz Cloud — and How to Do It Seamlessly
Explore how Milvus scales for large datasets and complex queries with advanced features, and discover how to migrate from Weaviate to Zilliz Cloud.

Announcing the General Availability of Zilliz Cloud BYOC on Google Cloud Platform
Zilliz Cloud BYOC on GCP offers enterprise vector search with full data sovereignty and seamless integration.

DeepSeek vs. OpenAI: A Battle of Innovation in Modern AI
Compare OpenAI's o1 and o3-mini with DeepSeek R1's open-source alternative. Discover which AI model offers the best balance of reasoning capabilities and cost efficiency.
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.