turboquant-pro のための autotune CLI をついに公開しました — これは PostgreSQL データベースに接続し、埋め込み(embeddings)をサンプリングし、12 通りの圧縮設定をスイープして、あなたが使うべき最適な設定を正確に教えてくれます。
bash turboquant-pro autotune \ --source "dbname=mydb user=me" \ --table chunks --column embedding \ --min-recall 0.95
10 秒後:
``` 12 通りの設定を評価中...
Config Ratio Cosine Recall Var% Time
PCA-128 + TQ2 113.8x 0.9237 78.7% 79.9% 2.2s PCA-128 + TQ3 78.8x 0.9390 84.0% 79.9% 0.6s PCA-256 + TQ3 41.0x 0.9700 92.0% 92.3% 0.7s PCA-384 + TQ3 27.7x 0.9823 93.7% 97.3% 0.7s PCA-384 + TQ4 20.9x 0.9906 96.0% 97.3% 0.6s PCA-512 + TQ4 15.8x 0.9949 96.3% 99.0% 0.6s 推奨(min recall >= 95%):PCA-384 + TQ4: 20.9x 圧縮 コサイン類似度: 0.9906 Recall@10: 96.0% 保存容量: 758 MB -> 36 MB(722 MB 節約) ```
何をするのか
問題:pgvector データベースに数百万の埋め込みがあります。それらを圧縮したい。でもどの設定にすればいいのでしょうか? PCA は何次元まで? 2-bit、3-bit、4-bit の量子化? 品質/圧縮のトレードオフは あなたの具体的なデータ に依存します。
Autotune はこれを約 10 秒で答えます:
- テーブルから N 個の埋め込みをサンプリング(デフォルトは 5K、今回は 2K を使用)
- PCA 次元数(128、256、384、512)×ビット幅(2、3、4)の全 12 組み合わせを試す
- それぞれについてコサイン類似度の保存と recall@10 を測定
- パレート最適フロンティアを特定
- あなたの recall の閾値を満たす最大の圧縮設定を推奨
- コピペ用のコードを出力
194K の本番埋め込みでの実結果
本番の RAG システム(33 のコードリポジトリから得た 194K BGE-M3 1024 次元埋め込み)でこれを実行しました:
95%+ の recall が必要なら: PCA-384 + TQ4 は、0.991 のコサインで 96.0% の recall を実現し、20.9x の圧縮が得られます。758 MB は 36 MB に縮みます。
84% の recall まで許容できるなら: PCA-128 + TQ3 は、0.939 のコサインで 78.8x の圧縮を実現します。758 MB は 10 MB になります。これで、あなたのコーパス全体が L3 キャッシュに収まります。
最大の圧縮を狙うなら: PCA-128 + TQ2 は 113.8x を達成します — ほぼ 2 桁(2 乗)のオーダーです。コサインはそれでも 0.924。
スイープ全体は CPU で 10.8 秒かかりました。GPU は不要です。
仕組み(内部)
PCA-Matryoshka(こちらは IEEE TAI の投稿) は学習不要の手法です。まずサンプルに対して PCA を一度だけ当てはめ、切り詰めが機能するように全ベクトルを回転させ、その後 TurboQuant のスカラー量子化によって 2〜4 ビットに量子化します。「autotune」の部分は単に設定空間をスイープし、実データで品質を測定するだけです。
15 手法によるベンチマークからの重要な洞察:PCA-Matryoshka + TurboQuant は、実用的な圧縮範囲において、二値量子化とプロダクト量子化の両方を厳密に上回ります。Autotune は、そのフロンティア上のどこにあなたのデータが存在するかを正確に見つけます。
インストール & 使用方法
```bash pip install turboquant-pro[pgvector]
turboquant-pro autotune \ --source "dbname=mydb user=me" \ --table my_embeddings \ --column embedding_vector \ --min-recall 0.95 \ --output results.json ```
オプション:--sample-size、--pca-dims、--bits、--queries、--top-k。プログラムから利用できるように、完全な結果は JSON として保存されます。
```python
autotune が PCA-384 + TQ4 を推奨した後:
from turboquant_pro import PCAMatryoshka, PCAMatryoshkaPipeline, TurboQuantPGVector
pca = PCAMatryoshka(input_dim=1024, output_dim=384) pca.fit(sample_embeddings) tq = TurboQuantPGVector(dim=384, bits=4) pipeline = PCAMatryoshkaPipeline(pca, tq)
compressed = pipeline.compress(embedding) # 4096 bytes -> 195 bytes ```
GitHub: https://github.com/ahb-sjsu/turboquant-pro PyPI: pip install turboquant-pro Paper: IEEE TAI の投稿(PCA-Matryoshka:15-method 圧縮ベンチマーク) ライセンス MIT
[link] [comments]



