Vespa vs Neo4j AIアプリに適したベクターデータベースを選ぶ
ベクターデータベースとは?
VespaとNeo4jを比較する前に、まずベクターデータベースの概念を探ってみましょう;
ベクトルデータベース](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のような軽量ベクトルデータベース。
- 小規模なベクトル検索が可能なベクトル検索アドオンを備えた従来のデータベース**。
Vespaは、専用のベクトルデータベースである。Neo4jは、アドオンとしてベクトル検索機能を持つグラフ・データベースである。この投稿では、両者のベクトル検索機能を比較する。
Vespa:概要とコアテクノロジー
Vespaは強力な検索エンジンとベクトルデータベースで、複数の種類の検索を一度に扱うことができます。ベクター検索、テキスト検索、構造化データによる検索に優れています。つまり、類似したアイテム(画像や商品など)を検索したり、テキスト内の特定の単語を検索したり、日付や数字に基づいて検索結果をフィルタリングしたりすることができます。Vespaは柔軟性があり、単純な数値から複雑な構造まで、さまざまな種類のデータを扱うことができます。
Vespaの際立った特徴のひとつは、ベクトル検索ができることです。ドキュメントにいくつでもベクトルフィールドを追加することができ、Vespaはそれらを素早く検索します。Vespaはテンソルと呼ばれる特殊なベクトルも扱うことができ、マルチパートのドキュメント埋め込みなどを表現するのに便利です。Vespaはこれらのベクトルをどのように保存し検索するかについてスマートなので、速度を落とすことなく本当に大量のデータを扱うことができます。
Vespaは超高速かつ効率的に構築されています。メモリを管理し、検索を行うためにC++で書かれた独自の特別なエンジンを使用しているため、複雑なクエリや大量のデータを扱ってもうまく動作します。新しいデータを追加したり、たくさんの検索を同時に処理したりしても、スムーズに動作し続けるように設計されています。そのため、多くのトラフィックやデータを処理する必要がある、大規模で現実的なアプリケーションに最適です。
Vespaのもう一つの優れた点は、より多くのデータやトラフィックを処理するために自動的にスケールアップできることです。Vespaのセットアップにコンピュータを追加すれば、自動的にそのコンピュータに作業を分散させることができる。これは、複雑なセットアップをすることなく、ニーズの成長に合わせて検索システムを成長させることができることを意味します。Vespaは、データ量やトラフィックの変化に対応するために自動的に調整することもでき、コスト削減に役立ちます。そのため、時間とともに成長する検索システムを必要とするビジネスには最適です。
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を活用したアプリケーションを構築することができる。グラフクエリとベクトル類似性検索を組み合わせることで、アプリケーションは完全一致ではなく、意味的な意味に基づいて関連データを見つけることができる。例えば、映画の推薦システムは、グラフ構造を使用して、推薦がユーザーの好みと同じジャンルまたは時代から来ることを保証しながら、類似した映画を見つけるためにプロット埋め込みベクトルを使用することができます。
主な違い
VespaやNeo4jのようなベクトル検索ツールを選ぶとき、それぞれがあなたのユースケースにどのようにフィットするかを考慮する必要があります。これは、あなたが決めるのを助けるために、様々な次元にわたってそれらの間の主な違いをカバーします。
検索方法
Vespa:Vespaは、ベクトル検索、全文検索、構造化データのフィルタリングなど、複数の検索方法をサポートしています。テンソルベースの検索を扱うことができ、マルチモーダルなユースケースに最適です。Vespaは多くの検索シナリオのために設計されており、速度を犠牲にすることなく複雑なクエリを実行できます。
Neo4j:Neo4jのベクトル検索は、近似k-最近傍(k-NN)検索のために階層的ナビゲーシブルスモールワールド(HNSW)グラフを使用する。これはグラフデータ用に設計されており、グラフの関係を統合した類似性検索が可能です。ベクトル検索をグラフ・トラバーサルと組み合わせる必要がある場合に最適です。
データ
Vespa:Vespaは構造化されたデータ(テーブルなど)から非構造化データ(テキストや埋め込みデータなど)まで、多くのデータタイプを扱うことができます。推薦システムやマルチモーダル検索のようなユースケースのための高度な設定のために、テンソルやドキュメント内の複数のベクトルフィールドを扱うことができます。
Neo4j:Neo4jは、関係性がノードそのものと同じくらい重要なグラフ・データのために設計されている。そのベクトル・インデックスは、埋め込みを含むノードや関係のプロパティを検索するために使用される。これは、意味的なつながりが重要なナレッジグラフのようなユースケースに最適である。
スケーラビリティとパフォーマンス
Vespa:大規模なリアルタイムアプリケーション向けに構築されたVespaは、ワークロードを複数のノードに分散することで水平方向に拡張します。インメモリ処理と C++ ベースのエンジンは、ビッグデータの複雑なクエリでも低レイテンシーを実現します。
Neo4j:Neo4jはグラフデータのスケーラビリティを提供する。HNSWインデクシングはスピードとメモリ効率のために最適化されているが、パフォーマンスは主にグラフ中心のワークロードに適している。大規模な処理を行うには、チューニングと熟考されたアーキテクチャが必要となる。
柔軟性とカスタマイズ
Vespa:Vespaはデータモデリングとクエリデザインにおいて多くのカスタマイズが可能です。スキーマを定義し、複数のベクトルフィールドを統合し、検索動作をカスタマイズすることができます。そのため、ベクトル検索やグラフ検索だけでなく、多くのユースケースに適している。
Neo4j:Neo4jのカスタマイズはグラフのユースケースにフォーカスしている。ベクトル・インデックスのパラメータ(最大接続数やef_constructionなど)を微調整して、精度やパフォーマンスを向上させることができる。しかし、グラフベースのアプリケーション以外のユースケースにはあまり適応できない。
統合とエコシステム
Vespa:Vespaは比較的エコシステムにとらわれず、カスタムアプリケーション、機械学習パイプライン、その他のデータソース用のAPIを持っている。多くのワークフローにフィットするツールだ。
Neo4j:Neo4jは、グラフ分析と可視化ツールに関する強力なエコシステムを持っている。その統合はグラフベースのAIアプリケーションには最適だが、ユースケースがグラフデータに大きく依存していない場合は、制限を感じるかもしれない。
ユーザビリティ
**ベスパ柔軟性には、より厳しい学習曲線が伴う。スキーマの設定や高度なテンソル操作には専門知識が必要だが、ドキュメントやコミュニティのリソースは充実している。
Neo4j:Neo4jはシンプルなクエリ言語(Cypher)と簡単なセットアップが利点で、特にグラフに慣れている開発者向け。ベクトル・インデックスの作成とクエリは比較的簡単なので、初心者にも利用しやすい。
コスト
Vespa:リソース効率が高く、オンザフライでワークロードを最適化できるため、大規模なデプロイにはコスト効率がよい。しかし、コストはインフラに依存する。
Neo4j:ベクター検索のようなエンタープライズ機能のためのNeo4jの価格設定は、一部のユーザーにとって問題になる可能性がある。マネージド・サービスとライセンスはコストに上乗せされるが、その最適化によってグラフを多用するアプリケーションのリソース消費を抑えることができる。
セキュリティ
Vespa:認証、ロールベースのアクセス制御、暗号化オプションなどの基本的なセキュリティ機能を備えている。強力なデータ保護を必要とする環境に適しています。
Neo4j:強力なセキュリティ機能を持ち、特にグラフ中心のデプロイメントに適している。ノードとリレーションシップに対するきめ細かいアクセス・コントロールにより、機密データは十分に保護される。
Vespa を使用する場合
Vespaは高度なベクトル検索でビッグデータや分散データを扱うのに最適です。ベクトル検索を全文検索や構造化データ検索と統合することができる。電子商取引のレコメンデーション、マルチモーダル検索エンジン、リアルタイム分析プラットフォームに適しています。水平方向のスケーラビリティと高いパフォーマンスにより、大規模なデータセットや複雑なクエリでもパフォーマンスに影響を与えることなく処理できます。高成長や高トラフィックが見込まれるビジネスに適しています。
Neo4jを使うとき
Neo4jは、データポイント間の関係がデータそのものと同じくらい重要な、グラフ中心のユースケースに最適です。ナレッジグラフ、ソーシャルネットワーク分析ツール、セマンティックなつながりが検索結果を向上させるAI駆動型アプリケーションの構築に適している。グラフ・トラバーサルと組み合わせたベクトル検索機能は、従来のグラフ・クエリにセマンティックな類似性マッチングを追加したい開発者にとって最適な選択肢となる。Neo4jのクエリ言語とグラフネイティブなデザインは、グラフプロジェクトに取り組むチームを容易にする。
要約
VespaとNeo4jは異なるドメインに適しており、それぞれに強みがあります。Vespaはマルチモーダル検索と大きなアプリケーションに適しており、Neo4jは関係性とセマンティック検索が最も重要なグラフ駆動のユースケースに適している。ユースケースの要件、データ、アプリケーションのパフォーマンス要件に基づいて、どちらかを選択する。これらの要素を考慮して決定することで、Neo4jを最大限に活用することができる。
VespaとNeo4jの概要についてはこちらをお読みください。それに役立つツールの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)
読み続けて

Announcing VDBBench 1.0: Open-Source VectorDB Benchmarking with Your Real-World Production Workloads
Discover VDBBench 1.0, an open-source tool for benchmarking vector databases with real-world production data, streaming ingestion, and concurrent workloads.

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.

How AI and Vector Databases Are Transforming the Consumer and Retail Sector
AI and vector databases are transforming retail, enhancing personalization, search, customer service, and operations. Discover how Zilliz Cloud helps drive growth and innovation.
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.


