46.6kデモを予約するログイン無料で始める

TiDBとAerospikeの比較 AIアプリケーションに適したベクターデータベースの選択

Dec 27, 20240 min read

ベクターデータベースとは?

TiDBと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のような軽量ベクトルデータベース。
  • 小規模なベクトル検索が可能なベクトル検索アドオンを備えた従来のデータベース**。

TiDBは伝統的なデータベースであり、Aerospikeも分散型のスケーラブルなNoSQLデータベースである。この記事では、両者のベクトル検索機能を比較する。 

TiDB: 概要とコアテクノロジー

TiDBはPingCAP社によって開発されたオープンソースの分散型SQLデータベースであり、ハイブリッドトランザクションと分析処理(HTAP)機能を提供する。MySQLと互換性があるため、MySQLのエコシステムに慣れ親しんでいるチームにとっては導入が容易です。TiDBの分散SQLアーキテクチャは、SQLデータベースのリレーショナルモデルを維持しながら、NoSQLデータベースのような水平スケーラビリティを提供し、トランザクションと分析の両方のワークロードを処理するための高い柔軟性を実現しています。

TiDBの中核的な強みの1つはHTAPアーキテクチャであり、トランザクション(OLTP)と分析(OLAP)のワークロードを単一のデータベースで処理できるため、別々のシステムを用意する必要がありません。さらに、TiDBはMySQLと互換性があるため、アプリケーションコードを大幅に変更することなく、MySQLに依存している既存の環境に簡単に統合することができます。また、このデータベースは自動シャーディング機能を備えており、ノード間でデータを自動的に分散することで、強力な一貫性を維持しながら読み取りと書き込みのパフォーマンスを向上させます。

TiDBは外部ライブラリやプラグインとの統合によりベクトル検索をサポートし、ベクトル化されたデータの効率的な管理とクエリを可能にします。この機能とTiDBのHTAPアーキテクチャを組み合わせることで、トランザクションや分析ワークロードに加えてベクトル検索機能を必要とするビジネスにとって、TiDBは汎用性の高い選択肢となります。TiDBの分散アーキテクチャにより、必要な構成が整えば、大規模なベクタークエリを処理することができます。

TiDBにベクトル検索機能を組み込むには追加の設定が必要ですが、TiDBはSQLと互換性があるため、開発者はベクトル検索と従来のリレーショナルクエリを組み合わせることができます。この柔軟性により、TiDBはベクトル検索とリレーショナルデータベースの両方の機能を必要とする複雑なアプリケーションに適しており、多様なデータ管理ニーズに対する包括的なソリューションを提供します。

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がどのようにベクトルデータを扱い、類似検索のためのインデックスを構築し、高次元のベクトル検索に対応できるかを示している。

主な相違点

TiDBは外部との統合によりベクトル検索を実現し、HTAP機能を持つ分散SQLデータベースとしての中核を維持しています。MySQLと互換性があり、ベクトル検索と従来のリレーショナルクエリを組み合わせることができる。

Aerospikeは、HNSWインデックスのみを使用するAerospike Vector Search (AVS)により、より特化したアプローチをとる。ノード間での同時インデックス構築を可能にし、並列処理にベクトル拡張を使用する。

検索手法:

TiDBはプラグインを通じてベクトル検索を統合しており、SQLとベクトルクエリを一緒に使うことができる。AerospikeはHNSWインデックスのみを使用し、パフォーマンスを向上させるために非同期インデックスキューを使用する。

データ

TiDBは自動シャーディングでトランザクションと分析ワークロードを処理する。Aerospikeはベクトルデータを非同期で処理し、更新を即座に可視化する一方、インデックスレコードはバッチ処理される。

スケーラビリティ:

TiDBはノード間でデータを自動的に分散し、一貫性を維持します。Aerospikeの分散インデックス作成は、クラスタ内のすべてのCPUコアを使用し、ホストのメモリとストレージに基づいてスケーリングされます。

統合:

TiDBはMySQL環境に適合し、SQLとベクトル操作の両方をサポートする。AerospikeのAVSはベクトル検索に重点を置いているが、Aerospikeのコアデータベースと緊密に統合されている。

TiDBを選択するタイミング

TiDBは、特にMySQL環境において、従来のデータベース操作とベクトル検索の両方を必要とするエンタープライズアプリケーションに最適です。HTAPアーキテクチャは、通常のトランザクションから複雑な分析まで、さまざまなワークロードが混在し、ベクトル検索を必要とする組織に最適です。MySQLとの互換性があるため、既存のチームはアプリケーションやワークフローに最小限の変更を加えるだけでTiDBを導入することができます。

Aerospikeを選ぶとき

Aerospikeは、高性能なベクトル検索が最優先されるアプリケーション、特にリアルタイム検索に最適です。インデックス構築とベクトル処理の最適化を同時に行うAVSシステムは、レコメンデーション・エンジンや画像認識システムなど、従来のデータベース操作よりも検索速度を重視するAIを搭載したアプリケーションなど、大規模で高速なベクトル類似検索を必要とするアプリケーションに最適です。

結論

TiDBとAerospikeは、ベクトル検索分野で異なるユースケースに対応する。TiDBはベクトル機能を備えた完全なデータベースで、従来のデータベース操作とベクトル検索の両方を必要とするビジネスに最適です。Aerospikeは、最適化されたインデックスを持つ高性能なベクトル検索で、ベクトル検索専門のアプリケーションに最適です。ベクトル検索機能を備えたフル機能のデータベース(TiDB)か、ベクトル検索のスペシャリスト・ソリューション(Aerospike)か、必要なものをお選びください。

TiDBとAerospikeの概要についてはこちらをお読みいただきたいが、これらを評価するには、ユースケースに基づいて評価する必要がある。それに役立つツールの一つが、ベクターデータベースを比較するためのオープンソースのベンチマークツールである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)
Updated on Jul 09, 2026

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.

Get the Free Guide