スカラー量子化HNSW索引
スカラー量子化HNSW索引は、メモリー要件を減らし類似検索を高速化するために使用できます。
ベクトル・データベースのコンテキストでは、スカラー量子化とは、ベクトルの各次元(またはスカラー・コンポーネント)を個別に量子化することで、高次元データ・ベクトルを圧縮または近似する方法です。この手法は、類似検索などのタスクのための必要なデータ構造を維持しながらベクトル・データベースのストレージ要件を減らすために使用します。スカラー量子化は、シンプルさと低いストレージ要件が最優先である場合に特に役立つ可能性があります。
浮動小数点数として格納される高次元ベクトルには、かなりのストレージ領域が必要です。スカラー量子化により、ベクトルを圧縮することでメモリーを節約できます。たとえば、次元ごとに8ビット(INT8)に格納される、128次元のベクトルには、128バイトのメモリーのみが必要ですが、32ビットの浮動小数点ストレージ(Float32)には512バイトが必要で、64ビットの倍精度浮動小数点ストレージ(Float64)には1024バイトが必要になります。このようにストレージ要件が減ることから、スカラー量子化により、ベクトル・データベースで、ストレージの制約が原因で別の方法では実用的ではない、数十億ものベクトルからなる非常に大きなデータセットに対応できるようになります。
スカラー量子化のもう1つの利点は、検索速度の向上です。近似最近傍(ANN)検索の方法では、より高速に比較できるように、量子化されたデータを利用できます。これは、整数またはバイナリ・コードに対する演算が浮動小数点計算より高速であるためです。
Oracle AI Databaseでは、均一スカラー量子化が、実装されている圧縮方法です。つまり、入力範囲は、同じサイズの間隔に分割されます。各間隔は、単一量子化レベル(通常は中間値)で表されます。各次元の範囲は、2bの等間隔に分けられています。ここでのbはビット数です(たとえば、int8の場合は8ビット)。各float値は、最も近い量子化レベルにマップされます。
ノート:
スカラー量子化では、ベクトル・プールに割り当てられるメモリーの量は、実際のデータ型サイズではなく量子化スケールに基づいて決まります。スカラー量子化は、HNSW索引でサポートされており、CREATE VECTOR INDEX DDLを使用した索引作成の間に指定できます。構文と追加情報については、「Hierarchical Navigable Small World索引の構文およびパラメータ」と『Oracle AI Database SQL言語リファレンス』を参照してください。
スカラー量子化ベクトルでの推論を実行するときは、rescore factorパラメータをSELECT文のオプションとして使用でき、問合せ実行中に上位Kの結果を絞り込むために使用できます。情報と構文については、『Oracle AI Database SQL言語リファレンス』を参照してください。
親トピック: インメモリー近傍グラフ・ベクトル索引