MongoDBとDeep Lake:GenAIアプリケーションに適したデータベースの選択
AI主導のアプリケーションが進化する中、これらの進化をサポートするベクトル検索機能の重要性はいくら強調してもしすぎることはない。このブログ記事では、ベクトル検索機能を持つ2つの著名なデータベースについて説明する:MongoDBとDeep Lakeである。それぞれ、推薦エンジン、画像検索、セマンティック検索などのアプリケーションに必須の機能であるベクトル検索を扱うための堅牢な機能を提供しています。私たちのゴールは、開発者やエンジニアに明確な比較を提供し、どのデータベースが彼らの特定の要件に最も合致しているかを判断する手助けをすることです。
ベクターデータベースとは?
MongoDBとDeep Lakeを比較する前に、まずベクターデータベースの概念について説明します;
ベクトルデータベース](https://zilliz.com/learn/what-is-vector-database)は、特に高次元のベクトルを格納し、クエリするように設計されています。ベクトルは非構造化データの数値表現です。これらのベクトルは、テキストの意味、画像の視覚的特徴、または製品の属性などの複雑な情報をエンコードします。効率的な類似検索を可能にすることで、ベクトルデータベースはAIアプリケーションにおいて極めて重要な役割を果たし、より高度なデータ分析と検索を可能にしている。
ベクトルデータベースの一般的なユースケースには、電子商取引の商品推奨、コンテンツ発見プラットフォーム、サイバーセキュリティにおける異常検知、医療画像分析、自然言語処理(NLP)タスクなどがある。また、AI幻覚のような問題を軽減するために、外部知識を提供することによって大規模言語モデル(LLMs)の性能を強化する技術である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データベースであり、Deep Lakeはベクトル埋め込みに最適化されたデータレイクである。この記事では、両者のベクトル検索機能を比較する。
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のスケーラビリティと豊富な機能をベクター検索と共に利用することができます。
ディープレイクとは?概要
ディープレイク](https://github.com/activeloopai/deeplake)は、AIや機械学習で広く使用される画像、音声、動画、その他の非構造化データなど、ベクターデータやマルチメディアデータを扱うために構築された特殊なデータベースである。データレイクとしてもベクターストアとしても機能する:
- データレイクとして**:Deep Lakeは、非構造化データ(画像、音声、動画、テキスト、医療画像用のNIfTIのようなフォーマット)をバージョン管理された形式で保存・整理することをサポートします。このセットアップにより、深層学習タスクのパフォーマンスが向上する。データセットの高速なクエリーと可視化が可能になり、AIモデル用の高品質なトレーニングセットの作成が容易になる。
- ベクターストアとして**:Deep Lakeは、vector embeddingsと関連するメタデータ(テキスト、JSON、画像など)の保存と検索のために設計されています。データはローカル、クラウド環境、または Deep Lake のマネージドストレージに保存できます。LangChainやLlamaIndexのようなツールとシームレスに統合され、RAG(Retrieval Augmented Generation)アプリケーションの開発を簡素化します。
Deep Lakeは、Hnswlibパッケージをベースに最適化を加えたHNSW(Hierarchical Navigable Small World)インデックスを、近似最近傍(ANN)検索に使用しています。これにより、3,500万以上の埋め込みデータを1秒未満で検索することができます。独自の機能として、より高速にインデックスを作成するためのマルチスレッディングや、RAM使用量を削減するためのメモリ効率的な管理があります。
デフォルトでは、Deep Lakeは10万行までのデータセットに対して線形埋め込み検索を使用します。それ以上のデータセットでは、精度とパフォーマンスのバランスを取るためにANNに切り替わる。APIにより、ユーザーは必要に応じてこの閾値を調整できる。
Deep Lakeのインデックスは、属性検索とベクトル検索を組み合わせた検索(現在は線形検索に依存している)には使用されないが、今後のアップデートでこの制限に対処し、機能をさらに向上させる予定だ。
ベクターストアとしての Deep Lake: Deep Lake は、vector embeddings と、テキスト、JSON、画像、音声、動画ファイルなどの関連メタデータを保存・検索するための堅牢なソリューションを提供します。ローカル、お好みのクラウド環境、またはDeep Lakeのマネージドストレージにデータを保存できます。また、Deep LakeはLangChainやLlamaIndexのようなツールとのシームレスな統合も提供しており、開発者は検索拡張世代(RAG)アプリケーションを簡単に構築することができます。
主な違い
ベクトル検索ツールとしてMongoDBとDeep Lakeのどちらかを選択する場合、違いを理解する必要がある。ベクターデータベースの世界では、どちらも異なるユースケースに対応するユニークな機能を持っています。いくつかの重要な項目で比較してみましょう。
検索方法
MongoDB Atlas Vector Search は、HNSW (Hierarchical Navigable Small World) アルゴリズムを使ってベクトルデータのインデックス化と検索を行います。近似最近傍 (ANN) 検索と厳密最近傍 (ENN) 検索の両方をサポートしています。スピードと精度のバランスがとれています。
Deep LakeはANN検索にHNSWを使用しており、マルチスレッドとメモリの最適化が施されている。小さいデータセット(10万行まで)には線形埋め込み検索を使用し、大きいデータセットにはANNに切り替えます。
データ
MongoDBは、構造化データや半構造化データ、ベクトル埋め込みデータを扱うことができます。その柔軟なドキュメントモデルにより、異なるタイプのデータを一緒に保存することができ、より文脈に沿った正確な検索が可能になります。
Deep Lakeは、画像、音声、動画などの非構造化データとベクトル埋め込み用に設計されている。データレイクとベクターストアが1つになったもので、マルチメディアを多用するAIや機械学習のワークロードに最適です。
スケーラビリティとパフォーマンス
MongoDB Atlasには、最適化された計算リソースと検索ワークロードの独立したスケーリングのための専用の検索ノードがあります。これは、スケールに応じたパフォーマンスを意味します。
Deep Lakeは、3,500万以上のエンベッディングを1秒未満でクエリできると主張している。しかし、属性検索とベクトル検索を組み合わせた線形検索を使用しているため、すべてのユースケースに適しているとは限らない。
柔軟性とカスタマイズ
MongoDBでは、ベクトル類似度検索を文書フィルタリングや全文検索と組み合わせることができる。
Deep Lakeはデータセットのバージョン管理が可能で、検索しきい値をカスタマイズできる。しかし、MongoDBほど属性検索とベクトル検索を組み合わせることはできないかもしれない。
統合とエコシステム
どちらのシステムも一般的なAIサービスやツールと統合できる。MongoDBはOpenAIやVoyageAIの埋め込みモデルと連携し、LangChainやLlamaIndexをサポートしています。
使いやすさ
MongoDBには確立されたエコシステムがあり、多くのドキュメントがあり、開発者はMongoDBに精通している。MongoDBをすでに使っているなら、ベクトル検索を追加するのは当然のことかもしれない。
Deep Lakeの使いやすさは、特にAIアプリケーションでマルチメディアデータを扱う場合、ユースケースに依存する。
コスト
MongoDB Atlasはマネージドサービスであり、使用量と機能に応じて異なる価格帯が設定されている。規模が大きくなるほどコストは上がりますが、フルマネージドソリューションを利用できます。
Deep Lakeにはローカルストレージ、クラウドストレージ、マネージドサービスのオプションがある。コストの比較は、使用量とストレージのニーズによって異なります。
セキュリティ機能
MongoDB Atlasには、成熟したデータベースセキュリティモデルの上に構築された、暗号化、認証、アクセス制御を含む堅牢なセキュリティ機能があります。
それぞれを使う場合
MongoDB Atlas ベクトル検索は、構造化データや半構造化データでベクトル検索機能が必要な場合に適しています。高度な商品レコメンデーションやコンテンツディスカバリプラットフォームのように、従来のドキュメントフィルタリングとベクトル類似検索を組み合わせる必要があるプロジェクトに最適です。MongoDBは、すでに主要なデータストレージにMongoDBを使っていて、新しいシステムを導入せずにベクトル検索を追加したい場合に最適だ。ベクトル検索と全文検索を組み合わせたハイブリッド検索ができるため、ニュアンスや文脈を意識した検索結果を必要とするアプリケーションに非常に便利だ。
ディープレイクは、特にAIや機械学習のシナリオにおいて、画像、音声、動画などの非構造化マルチメディアデータを多く含むプロジェクトに適している。コンピュータービジョンのタスクや音声処理、あるいはベクトル検索機能とともに大規模データセットのバージョン管理が必要なアプリケーションに最適だ。ディープレイクは、データレイクとベクターストアの両方になることができるため、大量のマルチメディアデータを効率的に管理しクエリする必要がある研究チームや複雑なAIモデルを構築する企業に最適です。
結論
MongoDB Atlas Vector Searchは、既存のMongoDBインフラにベクトル検索を追加するための堅実な選択であり、スケーラビリティ、柔軟なクエリ、構造化データとのシームレスな統合を提供する。Deep Lakeは非構造化マルチメディアデータに最適で、AIや機械学習ワークフローに特化した機能を持っている。これらのどちらを選択するかは、データの種類、既存のインフラ、必要な検索の種類によって決める必要がある。従来の検索とベクトル検索を組み合わせた汎用的なソリューションが必要な場合、特にすでにMongoDBのエコシステムを利用している場合は、MongoDBを選択する。AI中心のアプリケーションで大量のマルチメディアデータを管理・検索する場合は、Deep Lakeを選択する。最終的には、テクノロジーの強みをプロジェクト固有のニーズやパフォーマンス要件に合わせることが重要です。
MongoDBとDeep Lakeの概要についてはこちらをお読みいただきたいが、これらを評価するには、ユースケースに基づいて評価する必要がある。それに役立つツールの一つが、ベクターデータベースを比較するためのオープンソースのベンチマークツールである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)
読み続けて

From Vector Database to Vector Lakebase
Zilliz offers a fully managed Vector Lakebase powered by Milvus, unifying real-time vector search, lake-scale discovery, and Al data operations.

Data Deduplication at Trillion Scale: How to Solve the Biggest Bottleneck of LLM Training
Explore how MinHash LSH and Milvus handle data deduplication at the trillion-scale level, solving key bottlenecks in LLM training for improved AI model performance.

What Exactly Are AI Agents? Why OpenAI and LangChain Are Fighting Over Their Definition?
AI agents are software programs powered by AI that can perceive their environment, make decisions, and take actions to achieve a goal—often autonomously.
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.


