Slide 1

Slide 1 text

Binary and Scalar Embedding Quantization for Significantly Faster & Cheaper Retrieval Aamir Shakir, Tom Aarsen, and SeanLee https://huggingface.co/blog/embedding-quantization 発表者:Kampersanda

Slide 2

Slide 2 text

Summary 文埋め込みの各値を量子化してコンパクトに持ってみる ● Binary Quantization (1 bit) ● Scalar Quantization (8 bits) Efficiency & Effectiveness にどれくらい影響がある?

Slide 3

Slide 3 text

背景 埋め込み(Embeddings)の保存には結構なメモリとお金が必要 ※ $3.8 per GB/mo with x2gd instances on AWS

Slide 4

Slide 4 text

省メモリ化の方法 1. 次元数削減 ● PCA ● マトリョーシカ法 ● など 2. 要素圧縮 ● Quantization (Binary & Scalar) ● など  あとは LSH や Product Quantization などなど 今日のテーマ

Slide 5

Slide 5 text

Binary Quantization 方法 ● 値の符号によって各要素を 0 or 1 に変換 ● 距離計算はハミング距離(異なるビットの数) 以上です

Slide 6

Slide 6 text

Binary Quantization – Sentence Transformersでは

Slide 7

Slide 7 text

Binary Quantization – Vector Databasesでは

Slide 8

Slide 8 text

Scalar (int8) Quantization 手順 1. Calibration Dataset から各次元 について min, max を算出 2. その範囲で値を 256 等分に  (バケット化) 注意点 ● Calibration Dataset は量子化バ ケットを定義するため、性能に 影響する

Slide 9

Slide 9 text

Scalar (int8) Quantization – Sentence Transformersでは

Slide 10

Slide 10 text

Scalar (int8) Quantization – Vector Databasesでは

Slide 11

Slide 11 text

リランキングによる検索精度改善 [Yamada et al., ACL21] 前提 ● データベースには量子化されたベクトルが格納されている 手順 1. 検索ステップ ○ クエリ埋め込みを量子化し、量子化されたドキュメントのデータベース に対してベクトル検索 ○ K件より多めに取ってくる 2. リランキング ○ 量子化する前のクエリ埋め込みと、量子化されたドキュメントとで内積 を再計算しリランキング

Slide 12

Slide 12 text

TopK検索の実験結果 ● BinaryはTop400をリランキング ● Scalar (int8) はリランキング無し

Slide 13

Slide 13 text

リランキングの実験結果 Binary Quantization ● リランキング無しでは 92.53% ● リランキングすると 96.45%(検索での件数を100〜1000にしても変化なし)

Slide 14

Slide 14 text

リランキングの実験結果 Scalar (int8) Quantization 400件 1000件 リランキング無し

Slide 15

Slide 15 text

速度の実験結果(次元数1024) ● Binary Quantization: Faiss (Version 1.8.0) ● Scalar (int8) Quantization: USearch (Version 2.9.2)

Slide 16

Slide 16 text

まとめ 話さなかったこと ● Binary と Scalar (int8) のハイブリットな方法 See Section “Combining Binary and Scalar Quantization”