MongoDBとClickHouseの比較:GenAIアプリケーションに適したデータベースの選択
AI主導のアプリケーションが進化する中、これらの進化をサポートするベクトル検索機能の重要性はいくら強調してもしすぎることはない。このブログ記事では、ベクトル検索機能を持つ2つの著名なデータベースについて説明する:MongoDBとClickHouseである。MongoDBとClickHouse**である。それぞれ、推薦エンジン、画像検索、セマンティック検索などのアプリケーションに不可欠なベクトル検索を扱うための堅牢な機能を提供している。私たちのゴールは、開発者やエンジニアに明確な比較を提供し、どのデータベースが彼らの特定の要件に最も合致しているかを判断する手助けをすることです。
ベクターデータベースとは?
MongoDBとClickHosueを比較する前に、まずベクターデータベースの概念について説明します;
ベクトルデータベース](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データベースであり、ClickHouseはオープンソースの列指向データベースである。どちらもアドオンとしてベクトル検索機能を持っている。この記事では、両者のベクトル検索機能を比較する。
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のスケーラビリティと豊富な機能をベクター検索と共に利用することができます。
クリックハウス基本
ClickHouseはオープンソースのリアルタイム分析用OLAPデータベースで、SQLをフルサポートしており、高速なクエリ処理が可能です。完全に並列化されたクエリパイプラインと高速なベクトル検索が可能なため、分析クエリに最適です。高い圧縮率(コーデックによってカスタマイズ可能)を持つため、大きなデータセットを保存してクエリすることができる。主な利点のひとつは、メモリに縛られることなく複数TBのデータセットを扱えることで、大規模なベクトルデータを扱うユーザーには最適なツールだ。また、メタデータのフィルタリングと集約をサポートしているので、ベクターとそのメタデータを照会することができます。
ClickHouseはSQLによるベクトル検索機能を備えており、ベクトル距離演算は他のSQL関数と同様です。そのため、従来のフィルタリングや集約と組み合わせることができます。メタデータやその他の情報とともにベクトルデータを照会する必要がある場合に最適です。また、実験的な近似最近傍(ANN)インデックスにより、より高速な(しかし近似的な)マッチングが可能です。また、並列処理による行のリニアスキャンによる厳密なマッチングにより、スピードと効率を向上させます。
ClickHouseは、ベクトルマッチングとメタデータのフィルタリングや集約を組み合わせる必要がある場合のベクトル検索に最適です。特に、複数のCPUコアで並列処理する必要がある非常に大きなベクトルデータセットに最適です。ClickHouseは、SQLサポートが必要で、ベクターデータセットが大きすぎてメモリのみのインデックスに収まらない場合にも適しています。また、既にClickHouseに関連データがある場合や、何百万ものベクトルを管理するために別のツールを習得したくない場合にも、ClickHouseは時間とリソースを節約することができます。ClickHouseが得意とするのは、並列化された高速な完全マッチングと大きなデータセットの処理なので、検索上級者向けです。
ClickHouseはベクトル検索の汎用プラットフォームで、特に並列処理が必要な大規模データセットや、ベクトル検索とSQLベースのフィルタリングや集計を組み合わせる場合に適しています。小規模なメモリバウンドデータセットや高QPSシナリオでは、特化したベクトルデータベースには劣るが、メタデータを含む複雑なクエリを扱えるので、SQLを知っていて高速なベクトル検索を必要とする開発者には最適だ。
主な違い
MongoDB Atlas Vector SearchとClickHouseはベクトル検索に対するアプローチが異なり、それぞれに強みがあります。どちらが自分に合っているかを判断するために比較してみましょう。
検索方法
MongoDB Atlas Vector Search は、HNSW (Hierarchical Navigable Small World) アルゴリズムを使ってベクトルデータのインデックス化と検索を行います。近似最近傍(ANN)検索のためにベクトル空間の多階層グラフを作成します。大規模なベクトル検索において、速度と精度のバランスを保ちます。Atlas Vector Search は、10,000 ドキュメントまでのクエリに対して、精度よりも性能を重視した Exact Nearest Neighbors (ENN) 検索もサポートしています。
一方、ClickHouseは主にSQLベースのベクトル距離演算を使用します。並列処理による行のリニアスキャンによる正確なマッチングをサポートしている。ClickHouseは、より高速なANN検索のための実験的なベクトルインデックスも提供している。
データ処理
MongoDBは柔軟なドキュメントベースのデータを扱うのに最適です。ベクトル埋め込みデータを他のドキュメントデータと一緒に保存できるので、より文脈に沿った正確な検索ができます。この柔軟性により、ベクトルの類似検索とドキュメントフィルタリングを組み合わせることができます。
ClickHouseは、構造化データの分析クエリ用に設計されています。SQLによるベクトル検索をサポートしており、ベクトル距離演算は他のSQL関数と同様に扱われます。そのため、ベクトル検索とフィルタリングや集計を簡単に組み合わせることができます。
スケーラビリティとパフォーマンス
MongoDBアトラスにはサーチノードがあり、アトラスサーチとベクターサーチのワークロード専用のインフラを提供します。これにより、最適化されたコンピュートリソースと、検索ニーズの独立したスケーリングが可能になり、スケール時に優れたパフォーマンスを得ることができます。
ClickHouseは、メモリに縛られることなく複数TBのデータセットを処理するのに適しています。完全に並列化されたクエリーパイプラインを備えているため、複数のCPUコアにまたがって処理する必要がある大規模なベクトルデータセットにも効率的です。
柔軟性とカスタマイズ
MongoDBの柔軟なドキュメントモデルにより、最大4096次元までのベクトル埋め込みを含む、さまざまなタイプのデータを保存してクエリできます。ベクトルの類似検索を他のドキュメントフィルターと簡単に組み合わせることができます。
ClickHouseのSQLインターフェースは柔軟性に富んでおり、ベクトル操作と標準SQLクエリを組み合わせることができます。また、コーデックによるカスタマイズ可能な圧縮オプションがあるので、大きなデータセットも効率的に保存できます。
統合とエコシステム
MongoDB Atlas Vector Searchは、一般的なAIサービスやツールと統合できます。OpenAIやVoyageAIのモデルの埋め込みをサポートし、大規模言語モデル(LLM)を使ったアプリケーションを構築するためのLangChainやLlamaIndexのようなオープンソースのフレームワークと連携します。
ClickHouseは汎用の分析データベースであるため、特定のAIツールとの統合作業が必要になるかもしれない。しかし、そのSQLインターフェースは、多くの開発者やデータアナリストにとって馴染み深いものだ。
使いやすさ
MongoDB Atlasはマネージドサービスなので、セットアップやメンテナンスが簡単です。幅広いMongoDBエコシステムと統合されているため、MongoDBにすでに慣れ親しんでいるチームでも簡単に利用できます。
ClickHouseは、OLAPデータベースやSQLに慣れていない人にとっては、学習曲線が急だ。しかし、SQLに精通した開発者にとっては、使い慣れたクエリ構文でベクトル検索にアクセスできる。
コストの考慮
MongoDB Atlasはフルマネージドサービスなので、運用コストは高くなりますが、メンテナンスのオーバーヘッドは低くなります。
ClickHouseはオープンソースであるため、初期コストは低いが、デプロイと管理には社内の専門知識が必要になる可能性がある。
セキュリティ機能
MongoDB AtlasとClickHouseはどちらも強固なセキュリティ機能を持っています。MongoDB Atlasにはエンドツーエンドの暗号化、ロールベースのアクセス制御、ネットワーク分離があります。ClickHouseには、データの暗号化、アクセス制御、認証メカニズムがあります。
それぞれを選択する場合
MongoDB Atlas Vector Searchは、柔軟なドキュメントベースのデータ構造を扱い、ベクトル検索と従来のドキュメントクエリを組み合わせる必要がある場合に適しています。特に、レコメンデーションシステム、セマンティック検索エンジン、AIを活用したコンテンツ分析など、AIサービスやツールとのシームレスな統合を必要とするアプリケーションに適している。すでにMongoDBを使用している場合、または通常のデータベース操作とベクトル検索のニーズの両方を処理できるマネージドサービスが必要な場合、MongoDBアトラスベクトルサーチは、技術スタックを簡素化し、運用のオーバーヘッドを削減できる単一のソリューションです。
ClickHouseは、ベクトル検索とSQLのフィルタリングや集計を組み合わせた複雑なクエリを必要とする巨大なデータセットを持っている場合に最適です。特に、高速で並列化された完全一致が必要な場合、メモリのみのインデックスでは大きすぎる複数TBのベクトルデータセットがあるシナリオに最適です。ClickHouseは、データ分析における高度な検索ユースケースで、メタデータやその他の構造化情報とともにベクトルデータを照会する必要がある場合に最適です。あなたのチームがSQLに精通していて、ベクトル検索と従来のOLAPワークロードの両方を処理できる強力なオープンソース・ソリューションを探しているなら、ClickHouseがその答えです。
要約
MongoDB Atlas Vector Searchは、MongoDBエコシステム内での柔軟性、AI統合、使いやすさの点で最適であり、ドキュメントデータベースとベクトル検索を組み合わせたマネージドサービスである。ClickHouseは、巨大なデータセット、強力なSQLベースのベクトル操作、高性能な分析クエリを扱うのに最適です。これらのどちらを選ぶかは、ユースケース、データタイプ、パフォーマンス要件によって決定する必要がある。マネージドサービスを備えた柔軟なAI対応ソリューションが必要な場合はMongoDB Atlasを、ベクトル検索とSQLを組み合わせた複雑なクエリを必要とする非常に大規模なデータセットがある場合はClickHouseを選択する。最終的には、テクノロジーの強みをプロジェクトのニーズやチームの専門性に合わせることです。
MongoDBとClickHouseの概要についてはこちらをお読みいただきたいが、これらを評価するには、ユースケースに基づいて評価する必要がある。それに役立つツールのひとつが、ベクターデータベースを比較するためのオープンソースのベンチマークツールである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 Build RAG with Milvus, QwQ-32B and Ollama
Hands-on tutorial on how to create a streamlined, powerful RAG pipeline that balances efficiency, accuracy, and scalability using the QwQ-32B and Milvus.

Similarity Metrics for Vector Search
Exploring five similarity metrics for vector search: L2 or Euclidean distance, cosine distance, inner product, and hamming distance.

Vector Databases vs. Spatial Databases
Use a vector database for AI-powered similarity search; use a spatial database for geographic and geometric data analysis and querying.
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.


