[P] turboquant-pro autotune:1コマンドでベクターデータベースの最適な圧縮を見つける [R]

Reddit r/MachineLearning / 2026/4/9

📰 ニュースDeveloper Stack & InfrastructureTools & Practical Usage

要点

  • turboquant-pro は、「autotune」CLI をリリースしました。これにより PostgreSQL/pgvector データベースに接続し、埋め込みをサンプリングして、複数の圧縮設定を評価することでユーザーのデータに最適な構成を見つけます。
  • このツールは、PCA の次元数(128/256/384/512)と TurboQuant のスカラー量子化ビット幅(2/3/4)の組み合わせで計 12 通りをスイープし、コサイン類似度の保持と recall@10 を測定して、パレート最適な構成を選択します。
  • 194K 埋め込みの本番相当 RAG テスト(BGE-M3 1024 次元)では、≥95% の recall を満たす推奨として PCA-384 + TQ4 を提示し、約 20.9x の圧縮(758 MB から 36 MB)で 96.0% の recall@10 を達成しました。
  • autotuning の実行時間は GPU なしの CPU 環境で約 10 秒で、CLI は推奨構成のためのコピペ用コードを出力します。
  • 本アプローチは、学習不要の PCA-Matryoshka(サンプルで PCA を適合させ、ベクトルを回転してから量子化する)に基づいており、「autotune」部分は実データセットに対する実測スイープによって駆動されます。

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 秒で答えます:

  1. テーブルから N 個の埋め込みをサンプリング(デフォルトは 5K、今回は 2K を使用)
  2. PCA 次元数(128、256、384、512)×ビット幅(2、3、4)の全 12 組み合わせを試す
  3. それぞれについてコサイン類似度の保存と recall@10 を測定
  4. パレート最適フロンティアを特定
  5. あなたの recall の閾値を満たす最大の圧縮設定を推奨
  6. コピペ用のコードを出力

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

submitted by /u/ahbond
[link] [comments]