SingleStoreとAerospikeの比較 AIアプリケーションに適したベクターデータベースの選択
ベクターデータベースとは?
SingleStoreとAerospikeを比較する前に、まずベクターデータベースの概念について説明します;
ベクトルデータベース](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データベース管理システムであり、Aerospikeも分散型のスケーラブルなNoSQLデータベースである。どちらもアドオンとしてベクトル検索を備えている。この投稿では、両者のベクトル検索機能を比較する。 ;
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アプリケーションを構築することを可能にします。
Aerospike概要とコアテクノロジー
Aerospikeは、高性能なリアルタイムアプリケーション向けのNoSQLデータベースである。ベクトルデータベースのユースケースに適しているように、ベクトルインデックスと検索のサポートが追加された。ベクトル機能はAerospike Vector Search (AVS)と呼ばれ、現在プレビュー中です。Aerospikeから早期アクセスをリクエストできます。
AVSは、ベクター検索用にHNSW(Hierarchical Navigable Small World)インデックスのみをサポートしています。AVSで更新や挿入が行われると、ベクトルを含むレコードデータがAerospikeデータベース(ASDB)に書き込まれ、すぐに表示されます。インデックスを作成するためには、各レコードは、インデックスの指定されたベクトルフィールドに少なくとも1つのベクトルを持つ必要があります。1つのレコードに対して複数のベクトルとインデックスを持つことができるので、同じデータをさまざまな方法で検索することができます。Aerospike では、アップサートされたレコードを特定のセットに割り当てて、監視および操作できるようにすることを推奨しています。
AVSにはインデックスを構築する独自の方法があり、それはすべてのAVSノードで同時並行的に行われます。ベクトルレコードの更新はASDBに直接書き込まれますが、インデックスレコードはインデックスキューから非同期に処理されます。これはバッチで行われ、すべてのAVSノードに分散されるため、AVSクラスタのすべてのCPUコアを使用し、スケーラブルです。Ingestionのパフォーマンスはホストのメモリとストレージレイヤーの構成に大きく依存します。
インデキシングキュー内の各アイテムについて、AVSはインデキシング用のベクトルを処理し、各ベクトルのクラスタを構築し、それらをASDBにコミットします。インデックスレコードには、ベクター自体のコピーと、HNSWグラフの指定されたレイヤーにおけるそのベクターのクラスタが含まれます。インデックス作成には、単一命令、複数データ並列処理のためのベクトル拡張(AVX)を使用する。
クラスタ内のレコードは相互に接続されているため、AVSはインジェスト時にクエリーを行い、インデックスキャッシュに「事前水分補給」を行う。これらのクエリーはクエリーリクエストとしてカウントされず、ストレージレイヤーに対するリードとして表示される。こうすることで、キャッシュに関連データが蓄積され、クエリ性能を向上させることができる。これはAVSがどのようにベクトルデータを扱い、類似検索のためのインデックスを構築し、高次元のベクトル検索に対応できるかを示している。
主な相違点
検索手法
SingleStoreには複数のベクトル・インデックス・オプションがある:flat、ivf_flat、ivf_pq、ivf_pqfs、hnsw_flat、hnsw_pq。これにより、完全一致から近似最近傍まで、さまざまなユースケースに対応するオプションが提供される。Aerospike Vector Search (AVS)はHNSWインデックスのみをサポートする。HNSWは多くのケースに適していますが、SingleStoreの幅広いインデックスオプションにより、検索のスピードと精度のトレードオフをよりコントロールすることができます。
データと統合
SingleStoreのSQLデータベースにはベクトル検索が組み込まれています。ベクター検索を標準SQLクエリーと組み合わせることで、価格やカテゴリーなどの通常のデータフィールドで結果をフィルタリングすることができます。1つのデータベースで、ベクターデータと従来のデータニーズの両方を処理できます。Aerospikeは、高性能なリアルタイムアプリケーションに特化したNoSQLアプローチを採用しています。ベクトル検索機能(AVS)は新しく、現在プレビュー中です。
スケーラビリティとパフォーマンス
両データベースのスケーラビリティは異なります。SingleStoreは分散アーキテクチャを採用しており、データの増加に応じてノードを追加することができます。そのクエリプロセッサーは、単一のクエリでベクトル操作と SQL 操作を組み合わせます。AerospikeのAVSは、インデックス構築を全ノードで同時に処理し、ベクトル拡張を使用して並列処理を行います。また、クエリ性能を向上させるために、インデックスキャッシュを事前にハイドレートします。取り込み性能は、ホストのメモリとストレージ構成に大きく依存する。
実装の柔軟性
SingleStoreでは、ベクトルデータを格納する列ストアテーブルと単一列にベクトルインデックスを作成する必要があります。Aerospikeでは、1つのレコードに対して複数のベクトルとインデックスを作成できるため、データの検索方法に柔軟性が生まれます。しかし、Aerospikeでは、アップサートされたレコードを特定のセットに割り当てて監視するなど、特定のプラクティスを推奨しています。
使いやすさと統合性
SingleStoreは、ベクタークエリでも従来のクエリでも標準SQL構文を使用するため、SQLに精通しているチームにとっては魅力的かもしれない。このため、SQLに精通した開発者にとっては学習曲線が短くなる可能性がある。AerospikeのNoSQLアプローチは、従来のSQLデータベースに慣れているチームにとっては学習が必要かもしれないが、すでにNoSQLシステムを使用しているチームにとってはプラスになるかもしれない。
こんなときに使う
SingleStoreは、従来のデータベース操作とベクトル検索の両方を1つのシステムで行う必要があるアプリケーション向け。商品の類似検索と価格フィルタリングを必要とするeコマース・プラットフォームや、ユーザーの嗜好とコンテンツ・メタデータを組み合わせたコンテンツ・レコメンデーション・システムのように、ベクトルとともに構造化データを持つプロジェクトに最適です。ベクター操作には使い慣れたSQL構文を使用できるため、SQLの専門知識を持ち、ベクターデータベースを個別に管理することなくAI機能を追加したいチームに最適です。
Aerospikeは、スピードが重要な高性能リアルタイムアプリケーションに最適です。同時インデックス構築とプリハイドレート・キャッシュにより、リアルタイム・レコメンデーション・エンジンやライブ画像類似検索などのユースケースに最適です。レコードごとに複数のベクトルを持つことは、テキストと画像の両方を処理するマルチモーダルAIシステムや、同じコンテンツに異なる埋め込みモデルを使用するシステムのように、同じデータの異なるベクトル表現を必要とするアプリケーションに便利です。
結論
SingleStoreとAerospikeのどちらを選ぶかは、ニーズ次第です。SingleStoreは、伝統的なデータベース操作とベクトル検索を組み合わせるのに最適で、複数のインデックスタイプとSQL統合を備えています。Aerospikeは、HNSW実装と並行処理により、高性能なリアルタイム操作に適しています。既存の技術スタック、チームの専門知識(SQLかNoSQLか)、リアルタイムの要件、従来のデータ型と組み合わせたクエリが必要かどうかを考慮して決定する必要がある。また、Aerospikeのベクトル検索は新しく、SingleStoreはより成熟したベクトル検索ソリューションを持っていることを念頭に置いてください。
これを読めばSingleStoreとAerospikeの概要がわかりますが、これらを評価するにはユースケースに基づいて評価する必要があります。それに役立つツールの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)
読み続けて

Cosmos World Foundation Model Platform for Physical AI
NVIDIA's Cosmos platform enables safe, digital twin training of GenAI models for physical applications, overcoming data scarcity and safety challenges.

Vector Databases vs. Time Series Databases
Use a vector database for similarity search and semantic relationships; use a time series database for tracking value changes over time.

Vector Databases vs. Key-Value Databases
Use a vector database for AI-powered similarity search; use a key-value database for high-throughput, low-latency simple data lookups.
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.


