SingleStore vs Vald AIアプリケーションに適したベクターデータベースの選択
ベクターデータベースとは?
SingleStoreとValdを比較する前に、まずベクターデータベースの概念について説明します;
ベクトルデータベース](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のような軽量ベクトルデータベース。
- 小規模なベクトル検索が可能なベクトル検索アドオンを備えた従来のデータベース**。
SingleStoreは分散リレーショナルSQLデータベース管理システムであり、ベクトル検索をアドオンとして備えている。この記事では、両者のベクトル検索機能を比較する。
SingleStore:概要とコアテクノロジー
SingleStoreは、データベース自体にベクター検索機能を搭載することで、ベクター検索を可能にしました。ベクターは通常のデータベーステーブルに格納され、標準的なSQLクエリで検索することができます。例えば、価格帯でフィルタリングしながら類似の商品画像を検索したり、特定の部門に結果を限定しながらドキュメントの埋め込みを検索したりすることができます。システムは、ベクトルインデックスにFLAT、IVF_FLAT、IVF_PQ、IVF_PQFS、HNSW_FLAT、HNSW_PQを、類似性マッチングにドット積とユークリッド距離を使用したセマンティック検索の両方をサポートしている。これは、推薦システム、画像認識、AIチャットボットなど、類似性マッチングが高速なアプリケーションに超便利である。
SingleStoreの中核は、パフォーマンスとスケールのために構築されている。データベースは複数のノードにデータを分散させるので、大規模なベクトルデータ操作に対応できます。データが大きくなっても、ノードを追加すれば問題ありません。クエリプロセッサーはベクトル検索とSQLオペレーションを組み合わせることができるので、複数のクエリを別々に実行する必要がありません。ベクターのみのデータベースとは異なり、SingleStoreはこれらの機能を完全なデータベースの一部として提供するため、複数のシステムを管理したり、複雑なデータ転送に対応したりすることなく、AI機能を構築することができます。
SingleStoreのベクトルインデックスには2つのオプションがあります。1つ目は厳密なk-最近傍(kNN)検索で、クエリベクトルに最も近いk個の近傍集合を正確に見つけます。しかし、非常に大きなデータセットや高い同時実行性の場合、SingleStoreはベクトルインデックスを使用した近似最近傍(ANN)検索もサポートします。ANN検索は、厳密なkNN検索よりもはるかに高速にk近傍を見つけることができます。速度と精度はトレードオフの関係にあり、ANNは高速ですが、正確なk個の最近傍セットを返すとは限りません。インタラクティブな応答時間が必要で、絶対的な精度を必要としない数十億のベクトルを扱うアプリケーションには、ANN検索が適しています。
SingleStoreにおけるベクトルインデックスの技術的実装には特別な要件があります。これらのインデックスはカラムストアテーブルにのみ作成可能で、ベクトルデータを格納する単一のカラムに作成する必要があります。システムは現在Vector Type(dimensions[, F32])フォーマットをサポートしており、F32は唯一サポートされている要素タイプです。この構造化されたアプローチにより、SingleStoreは大規模な言語モデルからのベクトルを使用した意味検索、焦点を絞ったテキスト生成のためのRAG(retrieval-augmented generation)、ベクトル埋め込みに基づく画像マッチングなどのアプリケーションに最適です。これらを従来のデータベース機能と組み合わせることで、SingleStoreは開発者がパフォーマンスとスケールを維持しながら、SQL構文を使用して複雑なAIアプリケーションを構築することを可能にします。
Vald:概要とコアテクノロジー
Vald は膨大なベクトルデータを高速に検索するための強力なツールです。何十億ものベクトルを扱えるように構築されており、ニーズが大きくなるにつれて簡単に拡張することができます。Vald の素晴らしいところは、NGT と呼ばれる超高速アルゴリズムを使って類似ベクトルを見つけることです。
Valdの最も優れた特徴の一つは、インデックスの処理方法です。通常、インデックスを作成する場合、すべてを停止しなければならない。しかし、Valdは賢い。インデックスを異なるマシンに分散させるので、インデックスが更新されている間も検索を続けることができる。さらに、Valdはインデックス・データを自動的にバックアップするので、何か問題が発生してもすべてを失う心配はない。
Valdは様々なセットアップにフィットするのが素晴らしい。データの出入りをカスタマイズできるので、gRPCとの相性も良い。また、クラウド上でスムーズに動作するように構築されているため、必要なときにコンピューティングパワーやメモリを簡単に追加することができる。Valdはデータを複数のマシンに分散させるので、膨大な量の情報を処理するのに役立つ。
Valdが持つもうひとつの巧妙なトリックは、インデックスの複製だ。各インデックスのコピーを異なるマシンに保存する。つまり、1台のマシンに問題が発生しても、検索は問題なく行えるということだ。Valdは自動的にこれらのコピーのバランスをとるので、心配する必要はない。これらのことから、Valdは大量のベクターデータを迅速かつ確実に検索する必要がある開発者にとって、確かな選択肢となる。
主な相違点
検索方法
SingleStoreは、厳密なk-最近傍(kNN)検索と近似最近傍(ANN)検索という複数の検索アプローチを提供します。システムは複数のベクトル・インデックス・タイプをサポートしています:flat, ivf_flat, ivf_pq, ivf_pqfs, hnsw_flat, hnsw_pq.類似性のマッチングには、ドット積とユークリッド距離を選択できる。Valdは、NGT(Neighborhood Graph and Tree)アルゴリズムをコア検索メカニズムとして使用し、集中的なアプローチをとる。このアルゴリズムは、大規模なベクトルデータセットにおける高速な類似性検索のために設計されており、純粋なベクトル検索において特に効率的である。
データ処理と統合
SingleStoreのユニークな点は、SQLデータベース内にベクトル検索を組み込んでいる点です。つまり、ベクター検索をSQLクエリーと組み合わせ、通常のデータベーステーブルにベクターを保存し、ベクター検索結果にSQLフィルターを適用することができます。この統一されたアプローチにより、ベクターデータベースを別に用意する必要がなくなり、技術スタックが削減される。Valdはデータの扱いが異なり、ベクトル操作のみに焦点を当てています。カスタムデータ入出力ハンドラとgRPC統合サポートを提供するので、主にベクトルデータを扱い、特殊なベクトル検索機能を必要とするアプリケーションに適しています。
スケーラビリティとパフォーマンス
どちらのシステムもスケーラビリティ機能を備えているが、そのアプローチは異なる。SingleStoreは複数のノードにデータを分散し、ノードを追加して容量を拡張することができます。このシステムは分散クエリでベクトル操作とSQL操作を組み合わせますが、特定のカラムストアテーブル構成が必要です。Valdのスケーラビリティ・アーキテクチャには、マシン間での分散インデックス構築、インデックスデータの自動バックアップ、インデックス・レプリケーションが含まれる。インデックス更新中も検索処理を継続でき、自動ロードバランシング機能により、規模が拡大してもパフォーマンスを維持できる。クラウド対応の設計により、必要に応じてコンピュートとメモリを簡単に拡張することができます。
実用的なアプリケーション
SingleStoreは、従来のデータベース操作とベクトル検索の両方を必要とするアプリケーションに適している。ベクトル操作とともに構造化データを必要とする推薦システム、画像認識、AIチャットボットに最適です。一般的なユースケースは、大規模な言語モデルからのベクトルを使用したセマンティック検索や、テキスト生成に特化した検索拡張生成である。Valdは大規模な純粋ベクトル検索に適している。そのアーキテクチャは、ダウンタイムのない継続的なインデックス作成と、インデックスの複製による組み込みのフェイルオーバーを必要とするアプリケーションに特に適している。
実装に関する考察
SingleStoreとValdのどちらを選択するかは、多くの場合、プロジェクトの要件によって決まります。SQLに既に慣れていて、従来のデータベース操作とベクトル検索を組み合わせる必要がある場合は、SingleStoreの方が良いかもしれません。SQLベースのアプローチは学習曲線を減らし、全体的なアーキテクチャを単純化します。Valdは、ベクトル検索のみに焦点を当てたプロジェクト、特に高可用性と自動フェイルオーバーを必要とするプロジェクトに適しているかもしれません。ベクトル操作に特化しているため、純粋なベクトル検索ユースケースでより優れたパフォーマンスを発揮する。
SingleStore を選ぶべき時
従来のデータベース操作とベクトル検索を組み合わせる必要がある場合、SQL構文が必要な場合、1つのシステムで構造化データとベクトル操作の両方を扱うアプリケーションが必要な場合にSingleStoreを選択します。
Valdを選ぶべき時
純粋なベクトル検索操作に主眼を置く場合、ダウンタイムのない継続的なインデックス作成が必要な場合、インデックスレプリケーションによるビルトインフェイルオーバーが必要な場合、またはベクトル操作に特化したツールが必要な場合は、Vald を選択してください。
結論
SingleStoreは、SQLと、ベクトルと従来のデータベースを組み合わせた操作の両方を必要とする複雑なアプリケーションに最適です。Valdは、純粋なベクトル検索シナリオに特化し、高可用性に優れています。ベクター機能を持つ統合データベース(SingleStore)とベクター検索専用システム(Vald)のどちらが必要か、そしてチームの専門知識と既存の技術スタックに基づいて選択する必要があります。
SingleStoreとValdの概要についてはこちらをお読みいただきたいが、これらを評価するには、ユースケースに基づいて評価する必要がある。それに役立つツールの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)
読み続けて

Turbopuffer vs. Zilliz Cloud: A Compliance and Enterprise Readiness Evaluation for Multi-Tenant Vector Search
Turbopuffer vs. Zilliz Cloud: Compliance and Enterprise Readiness Evaluation

Zilliz Cloud Update: Tiered Storage, Business Critical Plan, Cross-Region Backup, and Pricing Changes
This release offers a rebuilt tiered storage with lower costs, a new Business Critical plan for enhanced security, and pricing updates, among other features.

Milvus WebUI: A Visual Management Tool for Your Vector Database
Milvus WebUI is a built-in GUI introduced in Milvus v2.5 for system observability. WebUI comes pre-installed with your Milvus instance and offers immediate access to critical system metrics and management features.
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.