Elasticsearch 9.2のDiskBBQ - メモリ効率を爆上げする新しいベクトル検索

Elasticsearch 9.2で導入されたDiskBBQについて、従来のHNSWとの違いやパフォーマンス特性を対話形式で解説します。メモリ使用量を大幅に削減しながら、高速なベクトル検索を実現する仕組みとは?

2025年10月にリリースされたElasticsearch 9.2で、ベクトル検索の新しいストレージフォーマット「DiskBBQ」が技術プレビューとして導入されました。従来のHNSW(Hierarchical Navigable Small Worlds)と比較して、メモリ使用量を劇的に削減しながら高速なベクトル検索を実現する革新的な技術です。

著者
著者: Sera
大学院でAI作曲に関して研究中!
来春からデータサイエンティストとして働く予定の技術オタク。
初心者
登場人物: あかり
流行りのAIやWeb技術に興味津々!
『知りたい』気持ちで質問を止められない、好奇心旺盛な学生。

DiskBBQとは?

confusedの表情
初心者

DiskBBQって何?バーベキューと関係あるの?

専門家

いい質問だね!DiskBBQは、Elasticsearchの新しいベクトル検索アルゴリズムで、バーベキューとは関係ないんだ。名前の由来は「BBQ」という圧縮技術(Better Binary Quantization)から来てるよ。

normalの表情
初心者

ベクトル検索って何?

専門家

ベクトル検索は、データを数値の配列(ベクトル)として表現して、似たものを探す技術なんだ。例えば、画像検索や文章の類似度検索に使われているよ。GoogleやChatGPTのような検索システムの裏側で活躍してるんだ。

surprisedの表情
初心者

そんなに使われてるんだ!

従来のHNSWの課題

専門家

実は、従来のベクトル検索には大きな課題があったんだ。

normalの表情
初心者

どんな課題?

専門家

従来のHNSWという方式は、全てのデータをメモリ(RAM)に読み込む必要があったんだ。だから、データ量が増えるとメモリが足りなくなって、検索ができなくなってしまう。

sadの表情
初心者

メモリが足りないと、諦めるしかないの?

専門家

そうなんだ。もっと高性能なサーバーを用意するか、データ量を減らすしかなかった。でも、DiskBBQはこの問題を解決するために作られたんだよ。

excitedの表情
初心者

どうやって解決するの!?

DiskBBQの仕組み

専門家

DiskBBQの最大の特徴は、ディスク(ハードディスクやSSD)から直接ベクトルを読み込むことなんだ。

confusedの表情
初心者

ディスクから読むって、普通じゃないの?

専門家

実は普通じゃないんだ。従来のHNSWは検索する前に全データをメモリに読み込む必要があった。でもDiskBBQは、必要な部分だけをディスクから読み込むんだ。

happyの表情
初心者

なるほど!必要な部分だけ読めば、メモリが少なくて済むんだね!

専門家

そういうこと!具体的には、次の3つの技術を組み合わせてるんだ。

1. 階層的K-meansによるクラスタリング

専門家

まず、ベクトルを小さなグループ(クラスタ)に分けるんだ。これは「階層的K-means」という手法を使うよ。

confusedの表情
初心者

K-meansって何?

専門家

K-meansは、似たもの同士をグループにまとめる手法なんだ。例えば、服を種類別に整理するみたいなイメージだよ。Tシャツはこの箱、ズボンはあの箱、みたいにね。

happyの表情
初心者

整理整頓みたいなものなんだ!

2. BBQ(Better Binary Quantization)による圧縮

専門家

次に、ベクトルを「BBQ」という技術で圧縮するんだ。

normalの表情
初心者

圧縮ってどれくらい小さくなるの?

専門家

元のベクトルのサイズを大幅に小さくできるんだ。例えば、128次元のベクトルなら、元のデータサイズの数十分の一まで圧縮できるよ。

surprisedの表情
初心者

数十分の一!?すごい!

3. SOARによる複数クラスタへの割り当て

専門家

最後に、「SOAR」という技術を使って、1つのベクトルを複数のクラスタに割り当てるんだ。

confusedの表情
初心者

なんで複数に割り当てるの?1つじゃダメなの?

専門家

いい質問だね!1つのクラスタだけだと、境界にあるベクトルが見つけにくくなっちゃうんだ。複数のクラスタに割り当てることで、検索の精度(recall)を高められるんだよ。

happyの表情
初心者

なるほど!検索漏れを防ぐための工夫なんだね!

HNSWとの性能比較

normalの表情
初心者

で、実際にどれくらい速いの?

専門家

ベンチマークの結果を見てみよう。100万個のベクトルでテストした結果がこれなんだ。

インデックス作成時間

専門家

まず、データを検索可能な状態にする「インデックス作成」の時間だよ。

  • HNSW BBQ:1,054,319ミリ秒(約17.5分)
  • DiskBBQ:94,075ミリ秒(約1.6分)

DiskBBQは約10倍速いんだ。

surprisedの表情
初心者

10倍!?めちゃくちゃ速くなってるじゃん!

検索速度

専門家

検索速度(レイテンシ)はこんな感じだよ。

  • HNSW BBQ:約3.4ミリ秒
  • DiskBBQ:約4.0ミリ秒
confusedの表情
初心者

あれ?DiskBBQの方が少し遅いね

専門家

そうなんだ。でも、これは十分高速で、ほとんどのアプリケーションでは問題ないレベルなんだ。それに、DiskBBQは100MBのメモリで動作してるけど、HNSWはもっと大量のメモリが必要なんだよ。

happyの表情
初心者

100MBで動くのはすごいね!スマホアプリにも使えそう!

検索精度(Recall)

専門家

検索精度も見てみよう。

  • HNSW BBQ:92%
  • DiskBBQ:91%

ほぼ同じ精度を保ってるんだ。

normalの表情
初心者

91%って高いの?低いの?

専門家

用途によるんだ。例えば、100件の関連結果があるとして、91件見つけられるってこと。多くの検索アプリケーションでは十分な精度だよ。

DiskBBQの使いどころ

normalの表情
初心者

じゃあ、どういう時にDiskBBQを使えばいいの?

専門家

DiskBBQがおすすめなのは、こんな場面だよ。

  1. メモリが限られている環境:小規模なサーバーやクラウドでコストを抑えたい時
  2. 大規模データセット:数百万、数千万のベクトルを扱う時
  3. 95%以下の精度で十分な用途:レコメンド機能や類似画像検索など
  4. コストを重視する場合:メモリの多いサーバーは高価だからね
confusedの表情
初心者

逆に、使わない方がいい場面は?

専門家

99%以上の高精度が必要な場合や、メモリが十分にある環境では、従来のHNSWの方がいい場合もあるんだ。用途に応じて使い分けることが大切だよ。

happyの表情
初心者

なるほど!適材適所ってことだね!

実装方法

normalの表情
初心者

実際にどうやって使うの?

専門家

Elasticsearchのマッピング設定で、index_optionsbbq_diskを指定するだけなんだ。

{
  "mappings": {
    "properties": {
      "image-vector": {
        "type": "dense_vector",
        "dims": 128,
        "similarity": "l2_norm",
        "index_options": {
          "type": "bbq_disk"
        }
      }
    }
  }
}
surprisedの表情
初心者

これだけ!?簡単すぎる!

専門家

そうなんだ。Elasticsearchが裏側で全部やってくれるから、設定はとてもシンプルだよ。dimsはベクトルの次元数で、similarityは類似度の計算方法を指定するんだ。

confusedの表情
初心者

l2_normって何?

専門家

l2_normは「ユークリッド距離」って呼ばれる、2点間の直線距離を測る方法なんだ。他にもcosine(コサイン類似度)やdot_product(内積)が選べるよ。

happyの表情
初心者

用途に応じて選べるんだね!

まとめ

専門家

DiskBBQは、ベクトル検索の新しい選択肢として、メモリ効率と検索性能のバランスを大きく改善したんだ。

happyの表情
初心者

従来は全部メモリに入れる必要があったけど、DiskBBQはディスクから必要な分だけ読むから、メモリが少なくても大丈夫なんだね!

専門家

その通り!主なメリットをまとめるとこんな感じだよ。

  • メモリ使用量を大幅削減:100MBという少量のメモリでも動作
  • インデックス作成が約10倍高速:データの準備時間を大幅短縮
  • 検索速度も十分高速:サブ20ミリ秒のレイテンシを実現
  • スケーラビリティの向上:メモリではなくCPUとディスクで制限されるため、より大規模なデータセットに対応可能
excitedの表情
初心者

これでコストを抑えながら、大規模なベクトル検索ができるようになるんだね!

専門家

まさにそういうこと。現在は技術プレビュー版だから、今後さらに改善されていくと思うよ。ベクトル検索を使ったアプリケーションを考えてる人は、ぜひチェックしてみてね。

happyの表情
初心者

教えてくれてありがとう!早速試してみたくなった!

参考資料

← ブログ一覧に戻る