SingleStoreとClickHouse AIアプリに適したベクターデータベースの選択
ベクターデータベースとは?
SingleStoreとClickHouseを比較する前に、まずベクターデータベースの概念について説明します;
ベクトルデータベース](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データベース管理システムであり、ClickHouseはオープンソースの列指向データベースである。どちらもアドオンとしてベクトル検索を備えている。この記事では、両者のベクトル検索機能を比較する。
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アプリケーションを構築することを可能にします。
クリックハウス概要とコアテクノロジー
ClickHouseはオープンソースのリアルタイムOLAPデータベースで、SQLのフルサポートと高速クエリ処理で知られています。完全に並列化されたクエリーパイプラインにより、分析クエリーの処理に秀でており、ベクトル検索操作を素早く実行することができます。コーデックによってカスタマイズ可能な高レベルの圧縮により、ClickHouseは大規模なデータセットの保存とクエリを効率的に行うことができます。ClickHouseの大きな強みは、メモリに制約されることなく複数TBのデータセットを扱えることで、大規模なベクトルデータを扱うユーザーにとって強力なツールとなる。また、メタデータに対するフィルタリングと集約をサポートしており、開発者はベクターと関連するメタデータの両方に対して複雑なクエリを実行することができます。
ClickHouseは、SQL機能を通じてベクトル検索機能を統合しており、ベクトル距離演算は他のSQL関数と同様に扱われます。これにより、従来のフィルタリングや集計とシームレスに組み合わせることができるため、ベクトルデータをメタデータやその他の情報と一緒に照会する必要がある場合に最適です。さらに、近似最近傍(ANN)インデックスのような実験的な機能は、近似的ではありますが、より高速なマッチング機能を提供します。ClickHouseは、並列処理により高速性と効率性を保証し、行のリニアスキャンによる厳密なマッチングもサポートしています。
ClickHouseは、ベクトルマッチングとメタデータのフィルタリングや集約を組み合わせることが重要な場合に、ベクトル検索の優れた選択肢となります。複数のCPUコアで並列処理する必要がある非常に大きなベクトルデータセットに特に有効です。ClickHouseは、SQLサポートが必要で、ベクターデータセットが大きすぎてメモリのみのインデックスに頼ることができない場合にも有利です。さらに、ClickHouseにすでに関連データがある場合や、何百万ものベクトルを管理するための別のツールの習得を避けたい場合、ClickHouseは時間とリソースの両方を節約することができます。ClickHouseの強みは、高速で並列化された完全一致と大規模なデータセットの処理にあり、高度な検索を必要とするユーザーに適しています。
ClickHouseは、特に並列処理を必要とする大規模なデータセットを扱う場合や、ベクトル検索とSQLベースのフィルタリングや集計を組み合わせる場合に、ベクトル検索の汎用性の高いプラットフォームとして際立ちます。専用ベクターデータベースほど、小規模でメモリバウンドデータセットや高QPSシナリオに特化していないかもしれないが、メタデータを含む複雑なクエリーを処理できるため、高速なベクター検索機能を必要とするSQLに精通した開発者にとって強力な選択肢となる。
主な相違点
検索方法
SingleStoreは厳密なk-最近傍(kNN)検索と近似最近傍(ANN)検索の両方を提供します。FLAT、IVF_FLAT、IVF_PQ、IVF_PQFS、HNSW_FLAT、HNSW_PQを含む複数のインデックスタイプを サポートする。類似性のマッチングには、ドット積とユークリッド距離を使用する。
ClickHouseは異なるアプローチをとり、主に並列処理によるリニアスキャンによる厳密なマッチングに焦点を当てている。実験的なANNインデックスを提供する一方で、ベクトル距離計算を標準SQL関数として扱い、ベクトル操作とSQL機能を組み合わせることに強みがある。
データ処理
SingleStoreはベクトル機能をデータベースシステムに直接統合しています。通常のデータベーステーブルにベクトルを保存し、標準SQLを使用して問い合わせることができます。つまり、価格帯によるフィルタリングや特定のカテゴリーへの限定など、従来のSQL操作とベクトル検索を1つのクエリで組み合わせることができます。
ClickHouseは、分析クエリーや大規模データセットの処理に優れています。カスタム圧縮コーデックを使用して、大規模なデータセットを効率的に保存し、クエリします。このシステムは、メモリの制約なしに複数TBのデータセットを処理できるため、メタデータとともに広範なベクトルデータを扱う必要があるシナリオに特に適しています。
スケーラビリティとパフォーマンス
SingleStoreはデータを複数のノードに分散する分散アーキテクチャを採用しています。データの増加に応じてノードを追加することでスケーリングが可能です。システムのクエリプロセッサーは、ベクトル検索とSQL操作を1つのクエリで組み合わせることができ、複数のクエリを別々に実行するオーバーヘッドを削減します。
ClickHouseは、完全に並列化されたクエリーパイプラインによって高いパフォーマンスを実現しています。複数のCPUコアに処理を分散させることができるため、大規模なベクトル演算を効率的に行うことができる。システムの設計により、データが利用可能なメモリを超えた場合でも、複数TBのデータセットを効率的に処理することができます。
柔軟性とカスタマイズ
SingleStoreでは、ベクターインデックスに特有の技術要件があります。これらはカラムストアテーブルで作成されなければならず、ベクトルデータを格納する単一カラムにのみ適用できます。現在、システムはVector Type(dimensions[, F32])形式をサポートしており、F32のみがサポートされています。
ClickHouseは、SQL機能とカスタム圧縮コーデックのサポートにより柔軟性を提供します。ベクトル操作と従来のSQL関数、フィルタ、集計を組み合わせた複雑なクエリを実行できます。このため、高度なクエリー機能を必要とするシナリオで特に役立ちます。
統合とエコシステム
SingleStoreは完全なデータベースソリューションとして位置づけられ、技術スタックに個別のベクターデータベースを必要としません。この統合されたアプローチは、アーキテクチャを簡素化し、データ転送の複雑さを軽減します。
ClickHouseはオープンソースであるため、既存のSQLベースのツールやフレームワークとうまく統合できます。標準SQLをサポートしているため、使い慣れたツールやクエリを使用しながら、アプリケーションにベクトル検索機能を追加することができます。
使いやすさ
SingleStoreは使い慣れたSQLインターフェイスでベクトル操作を行うことができるため、SQLの経験があるチームでも利用することができます。統一されたアプローチは、複数のシステムを学んだり、異なるデータベース間の複雑なデータ転送を管理する必要がないことを意味します。
ClickHouseは標準的なSQL構文を利用しているため、SQLに精通した開発者にとっては親しみやすいものとなっている。しかし、分析クエリと並列処理に重点を置いているため、OLAPデータベースに慣れていないチームにとっては、追加の学習が必要になるかもしれません。
SingleStore を選ぶとき
SingleStoreは、従来のデータベース操作とベクトル検索を1つのシステムで組み合わせる必要があるアプリケーションに最適です。レコメンデーションシステム、AIチャットボット、画像認識など、厳密検索と近似最近傍検索の両方が必要なアプリケーションに最適です。例えば、商品の類似検索と在庫管理を組み合わせたeコマースプラットフォームや、ユーザーのメタデータを考慮したコンテンツ推薦システムなど、通常のSQLクエリに加えてリアルタイムのベクトル演算が必要なアプリケーションを構築する場合に適しています。
クリックハウスを選ぶとき
ClickHouseは、大規模ベクトルデータの分析ワークロード、特に複数TBのデータセットを処理する必要がある場合に最適です。ベクトル演算と多くのメタデータのフィルタリングや集約を組み合わせた複雑な分析クエリーを必要とするアプリケーションに適しています。ClickHouseは、複数のCPUコアにまたがってベクトル演算を並列化する必要があるシナリオに適しているため、大規模データ分析プラットフォーム、ベクトルコンポーネントを含むログ分析システム、または膨大なデータセットを扱う研究アプリケーションに最適です。
結論
SingleStoreとClickHouseはどちらもベクトル検索アプリケーションに適している。SingleStoreは、ベクトル検索オプション、複数のインデックスタイプ、伝統的なデータベース機能を備えた統合データベースソリューションに最適です。ClickHouseは、並列処理、膨大なデータセット、SQLベースの分析機能に優れています。これらのどちらを選択するかは、データ規模、クエリーの複雑さ、統合の必要性など、具体的な要件によって決める必要があります。伝統的なデータベース機能(SingleStore)によるリアルタイムのベクトル演算が必要なのか、それとも大規模ベクトルデータの高性能分析処理(ClickHouse)が必要なのかを自問自答し、ユースケースに適した選択をしましょう。
これを読めばSingleStoreとClickHouseの概要がわかりますが、これらを評価するにはユースケースに基づいて評価する必要があります。それに役立つツールの一つが、ベクターデータベースの比較のためのオープンソースのベンチマークツールである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)
読み続けて

Data Deduplication at Trillion Scale: How to Solve the Biggest Bottleneck of LLM Training
Explore how MinHash LSH and Milvus handle data deduplication at the trillion-scale level, solving key bottlenecks in LLM training for improved AI model performance.

Introducing Zilliz MCP Server: Natural Language Access to Your Vector Database
Developers can easily manage and query vector databases with natural language via Zilliz MCP Server in AI-native environments.

Bringing AI to Legal Tech: The Role of Vector Databases in Enhancing LLM Guardrails
Discover how vector databases enhance AI reliability in legal tech, ensuring accurate, compliant, and trustworthy AI-powered legal solutions.
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.


