ホームへ戻る

RAG/向量檢索

txtai 9.13はColBERTのマルチベクトルを単一インデックスに圧縮、大規模コーパスではFaissの再調整が必要

txtai 9.13はLEMURを正式に統合し、学習ベースの固定次元ベクトルによってtoken単位のMaxSimスコアを近似する。初期テストではインデックス容量と検索品質を両立したが、デフォルトのIVFは大規模データセットで再現率を大幅に低下させる可能性がある。

user:snowyowls · CC BY-SA 2.0 · Image source
zh-Hant

NeuMLは8月27日、[txtai 9.13.0](https://github.com/neuml/txtai/releases/tag/v9.13.0)をリリースし、LEMUR(Learned Multi-Vector Retrieval)をこのオープンソース検索フレームワークに正式に組み込んだ。ColBERT系のlate-interactionモデルはtokenごとにベクトルを保持し、MaxSimによってクエリと文書のきめ細かな関連性を計算する。一般に単一のdense vectorより高い品質を実現できる一方、インデックスが大きくなり、標準的なANNインフラストラクチャを直接利用しにくいという代償がある。

LEMURはまず、浅いfeature encoderでMaxSimを学習する。次に、クエリをtoken特徴量の総和として、文書をサンプルtokenに対する最小二乗法の重みとして表現する。両者の固定ベクトルの内積によって元のスコアを近似できるため、Faissなどの単一ベクトルインデックスへ直接渡せる。学習成果物には`config.json`、`model.safetensors`、正規化統計が含まれるが、コーパスの分布に依存するため、新しいインデックスを構築する前には追加の学習が必要となる。

著者は、単一のRTX 4080 SUPER、ColBERTv2、3つのBEIRデータセットを使用したexact searchテストで、2,048次元のLEMURと10,240次元のMUVERAを比較した。インデックス容量は約5分の1に縮小された一方、NDCG@10はなお8.4~22.9%向上した。新バージョンでは、LateOnなどのモデルに見られるベクトルの異方性を緩和するため、設定可能なtokenベクトルの平均センタリングも追加された。

制約もエンジニアリング上重要な意味を持つ。[実装レポート](https://huggingface.co/blog/NeuML/txtai-lemur)が対象としたのは、1つのモデル、3つのデータセット、exact searchのみである。データ件数が5,000件を超えると、txtaiはデフォルトでIVFへ切り替わり、その結果、scifactテストにおけるLEMURのNDCG@10は43%低下した。チームは次の段階として、自社の日本語コーパスではなく対象となる中国語コーパスで性能を測定し、IVFパラメーターを調整したうえで、学習とインデックス再構築にかかる総コストを比較すべきであり、exact searchの結果をそのまま適用してはならない。

出典

  1. txtai v9.13.0 release notes
  2. LEMUR and Mean Centering for Late-Interaction Retrieval in txtai
  3. LEMUR: Learned Multi-Vector Retrieval