🥗

Embeddingの圧縮と性能の向上を実現するCRISP

に公開

導入

こんにちは、株式会社ナレッジセンスの須藤英寿です。

今回は、Embeddingとクラスタリングを組み合わせることで、容量の圧縮と性能を向上した手法「CRISP」について紹介します。

https://arxiv.org/pdf/2505.11471

サマリー

RAGは大量のドキュメントをEmbeddingモデルを使用して、ベクトルに変換することで必要な情報を精度高く計算することが可能になっています。さらに今回紹介するCRISPはマルチベクトル表現を使用しており通常のEmbeddingと比較してさらに容量が増えてしまいます。(マルチベクトル表現を利用した手法はこちらで紹介しています。)

今回紹介するCRISPは、マルチベクトル表現を事前にクラスタリング前提で学習することで、マルチベクトル表現の性能と容量の削減を実現しています。

マルチベクトル表現の利点と欠点

マルチベクトル表現とは

RAGの文書をベクトルに変換する際にEmbeddingモデルというものが用いられますが、一般的に(2025年5月現在)文書を単一のベクトル表現へと変換するモデルが用いられています。しかし、この種のモデルとは別にトークン単位でのベクトル表現を取得するEmbeddingモデルも存在します。(過去に紹介した「Late Chunking」はこのタイプのモデルを使用しています。)このタイプのモデルを使用することを、この記事の中では「マルチベクトル表現」としています。

マルチベクトル表現の利点と欠点

マルチベクトル表現は、トークンごとのベクトルを取得できるため一般的には検索性能が上がります。その反面、トークンごとというかなり細かい単位でベクトルが出力されるため、元のテキストの数十倍以上のデータ容量を必要としてしまいます。なので一般的には、トークンごとのベクトルを何らかの形でまとめることになりますが(Late Chunkingでもベクトルの平均を使用している)当然その過程で精度が下がってしまいます。

手法

CRISPは、マルチベクトル手法が最終的により少ないベクトルに集約されるという点に着目して、Embeddingモデルの学習過程でトークンごとのベクトルデータを任意の個数のベクトルに集約されるように学習します。

これにより、マルチベクトルの利点を損なわないままに容量の減少に成功しています。

Gemma 2Bというモデルをファインチューニングする手法で作成されており、学習は以下のような手順で行われます。

  1. ベクトルデータの集約方法を決定する

入力された文章を何個のベクトルに集約するかを学習段階で決めておきます。論文内ではC[n]x[m]という形式で文書をm個のベクトル、クエリをn個のベクトルに集約する手法と、C[n]という形式で入力された文字列のトークン数のn%個のベクトルに集約する手法を採用しています。

  1. トークンごとのベクトルをk-meansで所定の代表ベクトルに集約して学習する

通常のマルチベクトル手法と同様にトークンごとのベクトルデータを出力し、それをk-means法で任意の個数のベクトルに集約して、そこで出されたベクトルデータを元に学習を進めていきます。この集約されたベクトルで学習をすすめることがこの手法の最大の特徴となっています。

成果

一番左に記載されているXTRは代表的なマルチベクトル表現用のEmbeddingモデル。GTRはシングルベクトル表現用のEmbeddingモデルです。

既存のEmbeddingモデルと、Gemma 2BそしてCRISPの性能の比較を行っています。全般的にマルチベクトル表現に該当するモデルの方が性能が高くその中でも、ドキュメントを32個のベクトル、クエリを8個のベクトルに集約するCRISP手法が最も精度が高くなっています。

まとめ

今回は、精度と容量の圧縮を実現するCRISPについて紹介しました。そもそも、マルチベクトルを用いたRAGというのはあまり普及していないのですが、実際にRAGを開発していると文章ごとに複数の意味を持っているパターンが往々にしてありそこをどうやって分解するかに頭を悩ませることがよくあります。

CRISPは一つの文章を複数のベクトルに落とし込むことの有用性を示した一つの例と考えています。直近でのEmbeddingの発展の方向性は、画像も文章と同じように扱えるようにすることを目指す方向にありますが、個人的には一つの長い文章を複数の適切なベクトル表現に分解される方向に発展してくれると嬉しいと思っています。

CRISPはどうしても容量面で既存の手法と比較して不利がありますが、分解したテキストの意味的な分解に課題がある場合に有用な手法となると考えられるので、ぜひご活用いただければと思います。

ナレッジセンス - 生成AIとRAGの実装戦略・技術ブログ

Discussion