Elasticsearch vs Vald GenAIアプリケーションに適したデータベースの選択

AI主導のアプリケーションが進化する中、これらの進化をサポートするベクトル検索機能の重要性はいくら強調してもし過ぎることはない。このブログ記事では、ベクトル検索機能を持つ2つの著名なデータベースについて説明する:Elasticsearch と Vald です。ElasticsearchとVald**である。それぞれ、推薦エンジン、画像検索、セマンティック検索などのアプリケーションに不可欠なベクトル検索を扱うための堅牢な機能を提供している。私たちのゴールは、開発者やエンジニアに明確な比較を提供し、どのデータベースが彼らの特定の要件に最も合致するかを決定する手助けをすることです。
ベクターデータベースとは?
Elasticsearch と Vald を比較する前に、まずベクターデータベースの概念について説明します;
ベクトルデータベース](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のような軽量ベクトルデータベース。
- 小規模なベクトル検索が可能なベクトル検索アドオンを備えた従来のデータベース**。
Elasticsearch は Apache Lucene ベースの検索エンジンで、アドオンとしてベクトル検索がある。Valdは専用のベクターデータベースである。この投稿では、それらのベクトル検索機能を比較する。 ;
Elasticsearch:概要とコアテクノロジー
Elasticsearch は Apache Lucene ライブラリ上に構築されたオープンソースの検索エンジンです。リアルタイムのインデックス作成と全文検索で知られているため、重いアプリケーションやログ分析に最適な検索エンジンです。Elasticsearchを使えば、大量のデータを高速かつ効率的に検索・分析することができます。
Elasticsearchは検索と分析のために構築され、ファジー検索、フレーズマッチ、関連性ランキングなどの機能を備えています。複雑な検索クエリやリアルタイムのデータ検索が必要なシナリオに最適です。AIアプリケーションの台頭により、Elasticsearchはベクトル検索機能を追加し、画像認識、文書検索、Generative AIなどのAIユースケースに必要な類似検索や意味検索ができるようになりました。
ベクター検索
ベクター検索は Apache Lucene を通して Elasticsearch に統合されている。Lucene は定期的にマージされる不変のセグメントにデータを整理し、ベクターは他のデータ構造と同じようにセグメントに追加されます。このプロセスでは、インデックスを作成する際にベクタをメモリ上にバッファリングし、 必要なときにバッファをセグメントの一部としてシリアライズします。セグメントを定期的にマージして最適化を行い、すべてのセグメントでヒットしたベクターを検索します。
Elasticsearch はベクトルのインデックス作成に HNSW (Hierarchical Navigable Small World) アルゴリズムを使用しており、類似したベクトル同士が接続されたグラフを作成します。HNSWはシンプルで、強力なベンチマーク性能を持ち、インデックスの完全な再学習を必要とせずにインクリメンタルな更新に対応できることから選ばれました。このシステムは、通常数十ミリ秒から数百ミリ秒でベクトル検索を実行し、総当たりアプローチよりもはるかに高速である。
Elasticsearch の技術的なアーキテクチャは最大の強みの一つである。このシステムは同時インデックス作成中であってもロックフリー検索をサポートし、ドキュメントの更新時には異なるフィールド間で厳格な一貫性を維持する。そのため、ベクトルフィールドとキーワードフィールドの両方を更新した場合、検索はすべての古い値かすべての新しい値のどちらかを見ることになり、データの一貫性が保証される。システムは利用可能なRAMを超えて拡張することができますが、ベクターデータがメモリに収まる場合にパフォーマンスが最適化されます。
コアとなるベクトル検索機能だけでなく、Elasticsearchは実用的な統合機能を提供しており、その価値は非常に高い。ベクトル検索は従来のElasticsearchのフィルタと組み合わせることができるので、ベクトルの類似性と全文検索結果をミックスしたハイブリッド検索を行うことができます。ベクトル検索は Elasticsearch のセキュリティ機能、アグリゲーション、インデックスソートと完全に互換性があるため、最新の検索ユースケースに対応する完全なソリューションです。
Vald概要とコアテクノロジー
Vald は膨大なベクトルデータを高速に検索するための強力なツールです。何十億ものベクトルを扱えるように構築されており、ニーズが大きくなるにつれて簡単に拡張することができます。Vald の素晴らしいところは、NGT と呼ばれる超高速アルゴリズムを使って類似ベクトルを見つけることです。
Valdの最も優れた特徴の一つは、インデックスの処理方法です。通常、インデックスを作成する場合、すべてを停止しなければならない。しかし、Valdは賢い。インデックスを異なるマシンに分散させるので、インデックスが更新されている間も検索を続けることができる。さらに、Valdはインデックス・データを自動的にバックアップするので、何か問題が発生してもすべてを失う心配はない。
Valdは様々なセットアップにフィットするのが素晴らしい。データの出入りをカスタマイズできるので、gRPCとの相性も良い。また、クラウド上でスムーズに動作するように構築されているため、必要なときにコンピューティングパワーやメモリを簡単に追加することができる。Valdはデータを複数のマシンに分散させるので、膨大な量の情報を処理するのに役立つ。
Valdが持つもうひとつの巧妙なトリックは、インデックスの複製だ。各インデックスのコピーを異なるマシンに保存する。つまり、1台のマシンに問題が発生しても、検索は問題なく行えるということだ。Valdは自動的にこれらのコピーのバランスをとるので、心配する必要はない。これらのことから、Valdは大量のベクターデータを迅速かつ確実に検索する必要がある開発者にとって、確かな選択肢となる。
主な違い
ベクトル検索に Elasticsearch と Vald のどちらを選択するかは、ユースケースによって異なります。エンジニアリングチームにとって最も重要な部分について比較してみましょう。
コア検索テクノロジー
Elasticsearch はベクトル検索に HNSW (Hierarchical Navigable Small World) アルゴリズムを採用しています。HNSWは類似したベクトルをつなぐグラフを作成し、検索をより高速で効率的にします。検索はミリ秒単位で、フィールドの更新に強い一貫性があります。
Valdは異なるアプローチをとり、ベクトル類似性検索にNGTアルゴリズムを使用している。数十億のベクトル用に設計されており、アーキテクチャはベクトル演算に集中している。
データ管理とインデックス作成
Elasticsearch はデータを扱うのが得意です。全文検索とベクトル機能を兼ね備えているので、ベクトルの類似検索とキーワードフィルタを混在させることができる。システムはデータ整理のために不変セグメントを使用し、最適化のために定期的にマージします。
Valdは分散インデックス作成に重点を置いている。その主な特徴は、検索を停止することなく、複数のマシンでインデックスを更新できることである。これはデータを更新しながら検索できることを意味し、常時稼働が必要なアプリケーションには非常に便利である。
統合と使用例
Elasticsearch は従来の検索とベクトル検索の両方が必要な場合に適しています。そのベクトル検索はセキュリティ、アグリゲーション、インデックスソートのような既存のElasticsearchの機能とうまく統合されています。もし既に Elasticsearch を使っていたり、完全な検索ソリューションが必要であれば、Elasticsearch は良い選択です。
ValdはgRPCによるベクトル検索統合のためのものだ。クラウド用に構築されており、ベクトル操作に特化している。純粋なベクトル検索を大規模に行いたいのであれば、Vald の方が適しているかもしれない。
スケーリングと信頼性
Elasticsearch はベクターデータがメモリに収まる場合に最適ですが、RAM を超えてスケールすることも可能です。更新時に一貫性があり、ロックのない同時処理をサポートします。
Vald は信頼性のためにマシン間でインデックスレプリケーションを使用します。データの分散とバランシングを自動的に管理するので、マシンの障害に強い。このアーキテクチャは大規模なベクトル操作に適している。
Elasticsearch と Vald を比較する場合
Elasticsearch:複合検索のニーズ
Elasticsearch は従来の検索とベクトル検索の両方を扱う完全な検索ソリューションが必要な場合に最適です。テキスト検索、構造化データクエリ、ベクトル類似検索の全てを必要とするアプリケーションには最適です。このプラットフォームは、すでにELK Stackをロギングや検索に使用している企業や、強力なデータの一貫性が必要な企業、あるいはベクトル検索とテキストフィルタリングを組み合わせたい企業に適している。例えば、テキスト・フィルタと画像の類似性を利用したeコマース・プラットフォーム、セマンティック検索とキーワード検索をミックスしたコンテンツ推薦システム、ベクトル埋め込みと全文検索の両方を必要とする文書検索システムなどが挙げられる。
Vald:規模に応じた純粋なベクトル検索
Valdは、大量のベクトルデータを効率的に扱う必要がある場合に最適な選択です。純粋なベクトル類似検索を大規模に必要とするアプリケーション、特に継続的なインデックス作成が重要な場合に適しています。Valdは、何十億ものベクトルがあり、ダウンタイムなしにインデックスを更新する必要がある場合や、分散処理やフェイルオーバーを自動的に処理するシステムが必要な場合に適しています。これは、大規模な画像類似検索、リアルタイム・レコメンデーション・エンジン、またはベクトル操作が主な要件であるあらゆるアプリケーションに適しています。
結論
Elasticsearch と Vald のどちらを選ぶかはあなた次第です。Elasticsearch は伝統的な検索とベクトル機能を組み合わせた完全なプラットフォームなので、両方を必要とするアプリケーションに適している。Valdは純粋なベクトル検索に特化したソリューションであり、強力な分散機能を持つ。ベクター機能を持つ検索プラットフォーム(Elasticsearch)が必要か、ベクター検索ソリューション(Vald)が必要かで選択すべきです。既存のインフラ、必要なベクトル操作の規模、ベクトルの類似性以外の検索機能が必要かどうかを考慮してください。
Elasticsearch と Vald の概要についてはこちらをお読みいただきたいが、これらを評価するには、ユースケースに基づいて評価する必要がある。その手助けをしてくれるツールの一つが、オープンソースのベクトルデータベース比較ベンチマークツールである 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)
読み続けて

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

Leveraging Milvus and Friendli Serverless Endpoints for Advanced RAG and Multi-Modal Queries
This tutorial has demonstrated how to leverage Milvus and Friendli Serverless Endpoints to implement advanced RAG and multi-modal queries.

Designing Multi-Tenancy RAG with Milvus: Best Practices for Scalable Enterprise Knowledge Bases
We’ve explored how multi-tenancy frameworks play a critical role in the scalability, security, and performance of RAG-powered knowledge bases.
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.