ベクトルインデックスの圧縮は検索再現率とRAM使用量にどのような影響を与えるか?

エヴァ・ウォンテクニカルライター であり ZimaSpaceの常駐ティンカーでもあります。 生涯のオタクであり、 ホームラボとオープンソースソフトウェアに情熱を持っています。彼女は複雑な技術的概念をわかりやすく、 実践的なガイドに翻訳することを専門としています。エヴァはセルフホスティングは楽しくあるべきで、怖がるものではないと信じています。彼女のチュートリアルを通じて、コミュニティが ハードウェアのセットアップを解明する手助けをしています。初めてのNAS構築からDockerコンテナの習得まで。

ベクトルインデックスの圧縮は、低精度の表現を保存することでRAM使用量を削減しますが、その結果生じる距離の歪みによって、最近傍検索の再現率が低下する場合があります。

家庭用のRAGインデックスは、10万チャンク程度なら余裕を持って収まっていても、何年分ものドキュメント、写真、文字起こしデータが蓄積するとメモリ不足になることがあります。量子化によってより多くのベクトルをメモリ上に保持できる一方、検索品質は、圧縮後の距離が高精度な距離と同じ候補順位を維持できるかどうかに左右されます。結果は、埋め込みの分布、圧縮率、インデックスの種類、候補の探索範囲、そして再スコアリング用に元のベクトルを利用できるかどうかによって変わります。

圧縮で小さくなるのはベクトルのデータ量であり、すべてのインデックスコストではない

ベクトルインデックスは、埋め込み値、グラフまたはパーティション構造、識別子、メタデータ、アロケーターのオーバーヘッド、一時的なクエリバッファーのためにメモリを使用します。圧縮によって主に削減されるのは、埋め込みの表現です。HNSWのリンクやメタデータはほぼ変わらない場合があるため、RAM全体の削減量は、ベクトルの圧縮率から想定されるほど大きくならないことがあります。

高次元ベクトルは、各次元をフル精度の値として保存すると、メモリ使用量と距離計算コストが増えるため高コストです。これらの値をコンパクトなコードに置き換えることで、メモリ上に常駐するデータ量を減らし、キャッシュ効率を向上させられます。

したがって、実際の削減量はインデックスの構成に左右されます。高次元の浮動小数点ベクトルは通常、大きな削減対象になりますが、グラフ接続が密な小規模ベクトルでは、比例した削減効果が得られない場合があります。圧縮前後でプロセスの常駐メモリとインデックスファイルを測定し、ベクトルの生バイト数にドキュメント数を掛けるだけで見積もらないようにしてください。

量子化は距離の歪みを生じさせる

スカラー量子化は各次元をより小さな数値範囲に変換し、積量子化はベクトルを部分空間に分割してコードブックの選択肢を保存します。どちらも、正確な座標を近似値に置き換える手法です。そのため、クエリとの距離は元の浮動小数点ベクトルではなく、再構成された値やコードブックの距離を使って計算されます。

積量子化に関する実験では、再構成された距離の歪みと再現率を測定して圧縮効果を評価します。よりコンパクトなコードはレイテンシーやメモリ使用量を削減できますが、真の距離が近い候補同士では、近傍候補を正しい順序に並べることが難しくなります。

再現率が低下するのは、すべての距離が少しずつ誤るからではなく、関連性の高い近傍が候補のカットオフより下に押し出されるためです。関連性の高いチャンクと低いチャンクの距離に明確な差があるクエリは、強い圧縮にも耐えられる場合があります。一方、多数の候補がほぼ同じ距離になる密な意味空間では、より大きな影響を受けます。

候補の拡張と再スコアリングで再現率を回復できる

2段階検索では、圧縮ベクトルを使って候補の広いショートリストを作成し、その後、候補に対してより高精度なベクトルで距離を再計算します。オーバーサンプリングによって、近似的な第1段階を関連アイテムが通過できる可能性を高め、再スコアリングによって、コンパクトなコードが曖昧にした小さな距離差に基づく順位を復元します。

高い圧縮レベルでは通常、再現率が低下しますが、オーバーサンプリングと再スコアリングによって精度を改善できます。ただし、回復処理には追加の読み取り、メモリ、クエリ処理が必要です。そのため、圧縮は品質コストをなくすのではなく、リソースの配分を変えるものだと考えられます。

完全なベクトルをディスク上に保持すれば、RAM使用量を小さく抑えられますが、再ランキング時にストレージレイテンシーが発生します。RAMに保持すればレイテンシーは改善しますが、メモリ削減効果は小さくなります。適切な構成は、ホームサーバーがメモリ容量、ストレージIOPS、応答時間の目標のどれに制約されているかによって異なります。

再現率は実際のローカル検索タスクで測定する必要がある

代表的なクエリに対して正確な検索または高精度検索を実行し、圧縮検索がtop-k以内に同じ関連近傍を返すかどうかを比較して、基準データセットを作成します。言い換え、固有名詞、重複に近いドキュメント、希少な用語、そして小さな証拠の違いが回答を左右するクエリを含めてください。

これは、検索グラウンディングの信頼度を補完するものです。近傍の類似度と回答の裏付けは関連していますが、同一ではありません。検索ベースラインに対するRecall@kを測定するとともに、失われたチャンクや順位が変わったチャンクによって、生成モデルが利用できる証拠が変化していないかも確認してください。

圧縮率を最大化することと精度を最大化することの間に、普遍的な正解はありません。RAM、レイテンシー、タスクの再現率が望ましいバランスに達するまで圧縮率を高め、その後、埋め込みモデルやコーパスを変更した際には再テストしてください。幅広い写真類似検索で有効な構成でも、意味的に近い文章が多数存在する技術文書検索には、情報の損失が大きすぎる場合があります。

テック&AIハブ

もっと読む

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.