pgvectorとClickhouseの比較:AIアプリに適したベクターデータベースの選択
ベクターデータベースとは?
pgvectorと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のような軽量ベクトルデータベース。
- 小規模なベクトル検索が可能なベクトル検索アドオンを備えた従来のデータベース**。
pgvectorは伝統的なデータベースであり、ClickHouseはオープンソースの列指向データベースである。どちらもアドオンとしてベクトル検索機能を持っています。この記事では、両者のベクトル検索機能を比較する。
pgvector:概要とコア技術
pgvectorはPostgreSQLの拡張で、ベクトル操作のサポートを追加します。これにより、ユーザはPostgreSQLデータベース内に直接ベクトル埋め込みを格納し問い合わせることができ、別個のベクトルデータベースを必要とせずにベクトルの類似検索機能を提供します。
pgvectorの主な機能は以下の通りです:
- 厳密および近似最近傍探索のサポート
- PostgreSQLのインデックス機構との統合
- 加算や減算のようなベクトル演算の実行機能
- 様々な距離メトリクス(ユークリッド、余弦、内積)のサポート。
pgvectorはデフォルトで正確な最近傍探索を採用しており、完全な再現を保証しますが、大規模なデータセットでは遅くなる可能性があります。性能を最適化するために、pgvectorは近似最近傍探索のインデックスを作成するオプションを提供しています。このアプローチは、多くの実世界のアプリケーションにおいて、しばしば価値のあるトレードオフです。
注意すべき点は、近似インデックスを追加するとクエリの結果が変わる可能性があるということです。これは、実際に返される結果に影響を与えない一般的なデータベースインデックスとは異なります。pgvectorでサポートされる2種類の近似インデックスがあります:
1.HNSW (Hierarchical Navigable Small World):pgvectorバージョン0.5.0で導入されたHNSWは、その高い性能と結果の品質で知られています。HNSWは多層グラフ構造を構築し、検索時の高速な走査を可能にします。 2.IVFFlat (Inverted File Flat):ベクトル空間をクラスタに分割する手法。検索時には、まず最も関連性の高いクラスターを特定し、そのクラスター内で厳密な検索を行う。これにより、大規模なデータセットの検索を大幅に高速化することができる。
これらのインデックス・タイプの選択は、データセット・サイズ、要求されるクエリ速度、精度の許容可能なトレードオフなどの要素を考慮し、特定のユースケースに依存する。HNSWは一般的にパフォーマンスが高いが、より多くのメモリを使用する可能性がある。
プロジェクトでpgvectorを実装する際には、両方のインデックスタイプとそのパラメータを試して、特定のニーズに最適な構成を見つけるようにしてください。この微調整のプロセスは、ベクトル検索操作の性能と精度に影響を与えます。
pgvectorの使い方を知りたいですか?チュートリアル](https://zilliz.com/blog/getting-started-pgvector-guide-developers-exploring-vector-databases)をご覧ください!
クリックハウス概要とコア
ClickHouseはオープンソースのリアルタイム分析用OLAPデータベースで、SQLをフルサポートしており、高速なクエリ処理が可能です。完全に並列化されたクエリ・パイプラインを持ち、ベクトル検索を高速に実行できるため、分析クエリに最適です。高い圧縮率(コーデックによってカスタマイズ可能)を持つため、大きなデータセットを保存してクエリすることができる。主な利点のひとつは、メモリに縛られることなく複数TBのデータセットを扱えることで、大規模なベクトルデータを扱うユーザーには最適なツールだ。また、メタデータのフィルタリングと集約をサポートしているので、ベクターとそのメタデータを照会することができます。
ClickHouseはSQLによるベクトル検索機能を備えており、ベクトル距離演算は他のSQL関数と同様です。そのため、従来のフィルタリングや集約と組み合わせることができます。メタデータやその他の情報とともにベクトルデータを照会する必要がある場合に最適です。また、実験的な近似最近傍(ANN)インデックスにより、より高速な(しかし近似的な)マッチングが可能です。また、並列処理による行のリニアスキャンによる厳密なマッチングにより、スピードと効率を向上させます。
ClickHouseは、ベクトルマッチングとメタデータのフィルタリングや集約を組み合わせる必要がある場合のベクトル検索に最適です。特に、複数のCPUコアで並列処理する必要がある非常に大きなベクトルデータセットに最適です。ClickHouseは、SQLサポートが必要で、ベクターデータセットが大きすぎてメモリのみのインデックスに収まらない場合にも適しています。また、既にClickHouseに関連データがある場合や、何百万ものベクトルを管理するために別のツールを習得したくない場合にも、ClickHouseは時間とリソースを節約することができます。ClickHouseが得意とするのは、並列化された高速な完全マッチングと大きなデータセットの処理なので、検索上級者向けです。
ClickHouseはベクトル検索の汎用プラットフォームで、特に並列処理が必要な大規模データセットや、ベクトル検索とSQLベースのフィルタリングや集計を組み合わせる場合に適しています。小規模なメモリバウンドデータセットや高QPSシナリオでは、特化したベクトルデータベースには劣るが、メタデータを含む複雑なクエリを扱えるので、SQLを知っていて高速なベクトル検索を必要とする開発者には最適だ。
pgvectorとClickHouseのベクトル検索:何が違うのか
ベクトル検索のためにpgvectorとClickHouseのどちらかを選択するときは、検討してください:
検索方法
pgvectorは厳密および近似最近傍検索をサポートします。近似検索のためのHNSWとIVFFlatインデックス、および様々な距離メトリクス(ユークリッド、余弦、内積)を備えています。ClickHouseはSQL関数によるベクトル検索が可能です。並列処理と実験的ANNによる厳密マッチング。
pgvectorはベクトル操作のためにPostgreSQLを拡張し、ベクトル埋め込みをPostgreSQLデータベースに格納します。ClickHouseは構造化データと半構造化データを扱い、ベクトル検索とメタデータのフィルタリングと集計を組み合わせます。
スケーラビリティとパフォーマンス
pgvectorの厳密な検索は大きなデータセットでは遅くなりますが、近似的なインデックス作成は大きなデータセットでは速くなります。ClickHouseは複数TBのデータセット用に設計されており、完全に並列化されたクエリパイプラインを持っている。メモリバインドがなく、大きなベクトルデータも扱える。
柔軟性とカスタマイズ
pgvectorはPostgreSQLの既存の機能と統合されており、加算や減算のようなベクトル演算が可能です。ClickHouseはSQLを完全にサポートしており、ベクトル照合を通常のSQL操作と組み合わせることができます。
統合とエコシステム
pgvectorはPostgreSQLエコシステムと統合されており、既にPostgreSQLを使用しているプロジェクトに適しています。ClickHouseはスタンドアローンのOLAPデータベースで、ベクトル検索と同時にリアルタイム分析が必要なプロジェクトに適しています。
使いやすさ
pgvectorは既にPostgreSQLを使用しているのであれば馴染みがありますが、ベクトル操作とインデックスオプションの理解が必要です。ClickHouseはベクトル操作にSQL構文を使用しますが、OLAPデータベースに慣れていない場合、学習曲線が急です。
コスト
pgvectorは既存のPostgreSQLのインフラを使用することができ、既にPostgreSQLを使用している場合はコストを削減することができます。ClickHouseは別のインフラを必要とするが、高圧縮によりストレージコストを節約できる。
セキュリティ
pgvectorはPostgreSQLのセキュリティ機能を継承しており、PostgreSQLのセキュリティエコシステムの恩恵を受けています。ClickHouseには組み込みのセキュリティ機能がありますが、企業レベルのセキュリティのためには追加の設定が必要です。
それぞれの使用時期
pgvectorは、既にPostgreSQLを使用していて、既存のリレーショナルデータベースの設定にベクトル検索を追加したい場合に使用します。pgvectorは、ベクトル操作を正確に制御する必要があり、PostgreSQLのエコシステムと機能を活用したい場合に最適です。
ClickHouseは、非常に大規模なベクトルデータセット、特にベクトル検索と複雑なSQLやリアルタイム分析を組み合わせる必要がある場合に適しています。高性能な分析処理とベクトル検索を必要とする数テラバイトのデータセットを扱うプロジェクトに最適です。ClickHouseは、広範なメタデータのフィルタリングと集約を伴うベクトル検索が必要な場合に特に便利です。
要約
pgvectorはPostgreSQLを使ったベクトル検索に最適で、PostgreSQLユーザにとっては馴染みのある分野であり、リレーショナルデータとのシームレスな統合が可能です。ClickHouseは巨大なデータセット、高性能なベクトル検索、分析機能に優れています。ユースケース、データサイズ、既存のインフラストラクチャ、ベクトル検索と複雑なクエリを組み合わせる必要があるかどうかに基づいて、これらの中から選択してください。PostgreSQLベースのプロジェクトで中程度のデータを扱う場合はpgvectorを、大規模な分析ワークロードでベクトル検索を行う場合はClickHouseをお使いください。
この記事ではpgvectorとClickHouseの概要を説明しますが、特定のユースケースに基づいてこれらのデータベースを評価することが重要です。このプロセスを支援するツールの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: オープンソースベクターデータベースベンチマークツール](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)
読み続けて
Stop Building AI Data Infra for the Wrong Stage
Learn how AI data infrastructure should evolve from prototype to enterprise scale, and when Vector Lakebase becomes the right architecture for AI apps.

Zilliz Cloud Just Landed in Claude Code
The Zilliz Cloud Plugin brings the full power of Zilliz Cloud directly into your Claude Code terminal as natural-language conversations.

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.


