Elasticsearch 8.16 で Better Binary Quantization (BBQ) という、新しい密ベクトルのフィールドタイプが追加されました。

Elasticsearch ではベクトルの各次元の int8int4 への量子化をサポートしていますが、BBQ ではビットにまで量子化することで、さらなるインデックスサイズの削減と近似近傍探索の高速化を図っています。

この記事では、まず BBQ の元になった RaBitQ[^RaBitQ] というベクトル量子化手法を解説します。そのあと、Elasticsearch における BBQ の実装について説明し、RaBitQ と BBQ の違いについて触れます。

この記事は情報検索・検索技術 Advent Calendar 2024 の 25 日目の記事です。

近似最近傍探索 (ANN)

RaBitQ の前に、その背景となっている近似最近傍探索について簡単に説明します。

ANN の問題設定

あるベクトルが与えられたときに、それから近いベクトルを探すタスクを最近傍探索 (NN query; nearest neighbor query) といいます。近似最近傍探索とは、NN のように exact に近いベクトルを探すのではなく、ある程度の誤差を許容するものです。

D 次元のユークリッド空間を考えます。近似最近傍探索 (ANN query; approximate nearest neighbor query) とは、