Cassandra 5におけるベクターデータ検索のパフォーマンスチューニング

はじめに

ベクターデータ検索は、機械學習や自然言語処理など、高次元データの類似性検索に不可欠な技術として注目されています。Cassandra 5では、ベクターデータの検索性能を向上させるため、Storage Attached IndexやJVectorなどの新機能が導入されました。本記事では、これらの技術の特徴と、パフォーマンスチューニングの実験結果を解説します。

ベクターデータ検索の概要

ベクターデータは、対象の抽象的な屬性を浮動小數點數の配列として表現します。このベクターは、ベクタースペースに配置され、関連性の高いデータは空間的に近接し、関連性の低いデータは遠くに位置します。距離計算には、コサイン類似度、ドット積類似度、ユークリッド距離などの手法が用いられます。ベクターデータ検索は、類似データの効率的な検索を実現するための技術です。

Cassandra 5の新機能

Storage Attached Index(SAI)

Cassandra 5では、任意の列に対してインデックスを構築できるStorage Attached Indexが導入されました。従來の二次インデックスに比べて、処理速度と効率が向上し、多列インデックスのサポートも可能になりました。この機能により、ベクターデータの検索性能が大幅に改善されています。

JVectorによる近似最近隣検索

JVectorは、HNSW(Hierarchical Navigable Small World)アルゴリズムを採用した近似最近隣検索を実現しています。このアルゴリズムは、単層グラフ構造を用いて、長辺を減らすことでディスクI/Oを削減し、並列更新をサポートしています。結果として、インデックスの構築速度が速く、メモリ使用量も少ないという特徴を持っています。

テスト環境と方法

テスト機器とクラスター

テストは、DS8 v4s(8コア/64GBメモリ/32GB RAM)のマシンで行われ、3ノードのクラスター構成で実施されました。この環境では、さまざまなパラメータを変更してパフォーマンスを評価しました。

変數テスト

  • スレッド數:16 → 32 → 64 → 100
  • 圧縮戦略
    • Size-Tier Compaction Strategy
    • Level Compaction Strategy
    • UniFi Compaction Strategyは未テスト

データセット処理

  • データ正規化:ベクターを単位ベクター(幅が1)に変換
  • 精度計算:検索結果と期待結果の交差比率を基に精度を算出

テスト結果分析

精度とトランザクション量

  • 高次元データではトランザクション量が低下する傾向にあるが、Cassandraは高精度(紫色曲線)と高トランザクション量を維持
  • Quadrantデータベースと比較して、Cassandraの性能が優れていることが確認された

圧縮戦略の比較

  • Level Compaction Strategyが最適な選択肢
    • 読み取り重視のワークロードに適している
    • 簡単なクエリは単一のSSTableを読み込む

スレッド數の影響

  • スレッド數の増加によりトランザクション量は向上するが、遅延が増加する傾向にある

Cassandra 5の今後の展望

ベータ機能の進展

Cassandra 5は現在、GA(一般利用開始)前のベータフェーズにあり、開発チームは生産環境での運用に向けた安定性を確保するため、ソフトウェアの細かい問題修正に取り組んでいます。

新機能の導入

  • Seep 39クエリコスト最適化器:SQLクエリの最適化プロセスを改善し、インデックス情報を考慮してベクターデータ検索の効率を向上させる

結論

Cassandra 5のベクターデータ検索は、既存のソリューションよりも優れたパフォーマンスを示しました。Level Compaction Strategyの採用と適切なスレッド數設定により、パフォーマンスを最大化することが可能です。今後のバージョンでは、クエリコストの最適化と生産環境の安定性がさらに向上する予定です。