SingleStoreとVespa AIアプリに適したベクターデータベースの選択
ベクターデータベースとは?
SingleStoreとVespaを比較する前に、まずベクターデータベースの概念を探ってみましょう;
ベクトルデータベース](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のような軽量ベクトルデータベース。
- 小規模なベクトル検索が可能なベクトル検索アドオンを備えた従来のデータベース**。
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アプリケーションを構築することを可能にします。
Vespa概要とコアテクノロジー
Vespaは強力な検索エンジンとベクトルデータベースで、複数の種類の検索を一度に扱うことができます。ベクター検索、テキスト検索、構造化データによる検索に優れています。つまり、類似したアイテム(画像や商品など)を検索したり、テキスト内の特定の単語を検索したり、日付や数字に基づいて検索結果をフィルタリングしたりすることができます。Vespaは柔軟性があり、単純な数値から複雑な構造まで、さまざまな種類のデータを扱うことができます。
Vespaの際立った特徴のひとつは、ベクトル検索ができることです。ドキュメントにいくつでもベクトルフィールドを追加することができ、Vespaはそれらを素早く検索します。Vespaはテンソルと呼ばれる特殊なベクトルも扱うことができ、マルチパートのドキュメント埋め込みなどを表現するのに便利です。Vespaはこれらのベクトルをどのように保存し検索するかについてスマートなので、速度を落とすことなく本当に大量のデータを扱うことができます。
Vespaは超高速かつ効率的に構築されています。メモリを管理し、検索を行うためにC++で書かれた独自の特別なエンジンを使用しているため、複雑なクエリや大量のデータを扱ってもうまく動作します。新しいデータを追加したり、たくさんの検索を同時に処理したりしても、スムーズに動作し続けるように設計されています。そのため、多くのトラフィックやデータを処理する必要がある、大規模で現実的なアプリケーションに最適です。
Vespaのもう一つの優れた点は、より多くのデータやトラフィックを処理するために自動的にスケールアップできることです。Vespaのセットアップにコンピュータを追加すれば、自動的にそのコンピュータに作業を分散させることができる。これは、複雑なセットアップをすることなく、ニーズの成長に合わせて検索システムを成長させることができることを意味します。Vespaは、データ量やトラフィックの変化に対応するために自動的に調整することもでき、コスト削減に役立ちます。そのため、時間とともに成長する検索システムを必要とするビジネスには最適です。
##主な違い
検索方法と機能
SingleStoreはデータベースエンジン内で直接ベクトル検索を行い、厳密なk-最近傍(kNN)検索と近似最近傍(ANN)検索の両方を提供します。複数のインデックスタイプをサポートしている:FLAT、IVF_FLAT、IVF_PQ、IVF_PQFS、HNSW_FLAT、HNSW_PQ、類似性マッチングのためのドット積とユークリッド距離。
Vespaは、ベクトル検索+テキスト検索+構造化データ・クエリを1つのエンジンで行う。この統合検索により、開発者は複数のタイプの検索を一度に行うことができ、複雑なアプリケーションに非常に便利です。
データハンドリングとストレージ
SingleStoreは完全なデータベースシステムであり、ベクトルは通常のデータベーステーブルに格納される。現在、Vector Type(dimensions[,F32])形式をサポートしており、F32は唯一サポートされている要素型である。ベクトルは、ベクトル・データを含む単一列にインデックスを作成して、カラムストア・テーブルに格納する必要があります。
Vespaはデータ表現においてより柔軟性があり、ドキュメントごとにいくつでもベクトルフィールドを持つことができます。テンソルを扱うことができるので、マルチパートのドキュメント埋め込みなどの複雑なデータ構造に適しています。この柔軟性はベクトル以外のデータ型も扱うことができます。
スケーラビリティとパフォーマンス
どちらのシステムもスケーラビリティは異なる:
SingleStoreは分散アーキテクチャで、データは複数のノードに分散される。データが増えればノードを追加し、容量を増やすことができる。クエリ・プロセッサはベクトル検索とSQLオペレーションを組み合わせており、個別のクエリは必要ない。
Vespaはメモリ管理と検索操作のためのC++エンジンを備えている。ノード間でワークロードを分散し、データ量やトラフィックパターンの変化に合わせて調整します。この自動スケーリングにより、リソースの使用を最適化し、コストを削減できる可能性があります。
統合と利用
SingleStoreは標準SQL構文でベクトル検索を行います。標準SQLコマンドを使用して、ベクトル操作を従来のデータベースクエリと組み合わせることができます。推薦システム、画像認識、AIチャットボットなどのアプリケーションに非常に便利です。
Vespaには、一度に複数の検索タイプを実行できる検索エンジンがある。ドキュメントにはクエリの構文が明記されていないが、1つのクエリで異なる検索タイプを実行できるので、統一されたクエリ・インターフェイスを持っているに違いない。
パフォーマンストレードオフ
SingleStoreのANN検索は正確なkNN検索よりもはるかに速く、時には桁違いの速さになります。しかし、これは精度が低くなることを意味し、何十億ものベクトルに対してインタラクティブな応答時間を必要とするアプリケーションにとっては、トレードオフの価値があります。
Vespaの C++エンジンは、複雑なクエリーと大量のデータに対してパフォーマンスを最適化します。VespaのC++エンジンは、複雑なクエリや大量のデータに対してパフォーマンスを最適化します。データの更新や検索のような並行処理中もパフォーマンスが維持されるので、トラフィックの多いアプリケーションに適しています。
SingleStoreを選ぶとき
SingleStoreは、SQLの互換性と正確なベクトル検索が最も重要な場合に最適です。特に正確なベクトルマッチングを必要とするレコメンデーションエンジン、画像認識システム、AIチャットボットなどを構築する場合、既存のSQLデータベースと統合する必要があるAI搭載アプリケーションを構築する企業に最適です。SQLワークフローを維持したままベクトル検索を追加したいチームや、厳密検索と近似最近傍検索の両方を必要とするアプリケーションに最適です。
Vespa を選ぶとき
Vespaは異なるタイプの検索を組み合わせる必要がある場合に最適です。特にマルチパートのドキュメントエンベッディングのような複雑なデータ構造を扱う場合、統一されたベクトル、テキスト、構造化データ検索を必要とするプロジェクト向けです。人手を介さずにリソースを拡張・最適化できるシステムをお望みの企業には、Vespaの自己調整インフラストラクチャが最適です。
最終的な感想
全てはあなたの技術要件と組織次第です。SingleStoreはSQLの統合と正確なベクトル検索に適しており、SQLの専門知識を持つチームにとって使い慣れた環境です。Vespaは統合検索と自動スケーリングに適しており、複雑なマルチモーダル検索アプリケーションに最適です。チームの専門知識、既存のインフラ、スケーリング・ニーズ、ユースケースを考慮して決定してください。どちらも堅牢なベクトル検索を備えていますが、実装やスケーリングアプローチが異なるため、プロジェクトのタイプによってどちらが適しているかが異なります。
SingleStoreとVespaの概要を知るにはこちらをお読みください。しかし、これらを評価するには、ユースケースに基づいて評価する必要があります。それに役立つツールの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)
読み続けて

Our Journey to 35K+ GitHub Stars: The Real Story of Building Milvus from Scratch
Join us in celebrating Milvus, the vector database that hit 35.5K stars on GitHub. Discover our story and how we’re making AI solutions easier for developers.

The Great AI Agent Protocol Race: Function Calling vs. MCP vs. A2A
Compare Function Calling, MCP, and A2A protocols for AI agents. Learn which standard best fits your development needs and future-proof your applications.

What is the K-Nearest Neighbors (KNN) Algorithm in Machine Learning?
KNN is a supervised machine learning technique and algorithm for classification and regression. This post is the ultimate guide to KNN.
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.


