txtaiへのLEMUR統合は、遅延相互作用検索モデルにおける実用上の問題を扱います。これらのモデルはクエリまたは文書内の各トークンについて1つのベクトルを保持するため、各テキストを単一のベクトルで表現するよりも細かな情報を得られますが、従来の密ベクトル検索インデックスと組み合わせて使用することが難しくなります。txtaiは、このマルチベクトル表現を、同じ種類のインデックスで検索できる固定次元ベクトルへ変換する経路を提供します。また、トークンベクトルが非常によく似ている場合に方向の違いを活用しやすくする、mean centeringという調整可能なオプションも追加しています。
この記事は2026年8月13日にHugging Faceのブログで、Morgan Carrが執筆したコミュニティ記事として公開され、変更の背景、限定的な実験結果、txtaiにおけるLEMUR成果物の学習および読み込み方法を紹介しています。検索技術間の総合的な順位を示すものではなく、比較は1つのモデル、3つのデータセット、1台のデバイス、厳密な検索に限定されています。
複数のベクトルからインデックス可能なベクトルへ
遅延相互作用検索では、MaxSimを使ってクエリのすべてのトークンと文書のトークンを比較します。クエリ内の各トークンについて最も強い一致を保持し、その値を合計します。一方、LEMUR(Learned Multi-Vector Retrieval)は、この相互作用の結果を近似しながら、従来のベクトルインデックスを利用できるようにする固定次元エンコーディングを学習します。
txtaiにおけるLEMUR成果物は、特徴エンコーダー、出力正規化統計、トークンベクトルのサンプルで構成されます。推論時には、クエリは学習済み特徴の合計に変換され、文書は保存されたサンプル上の通常最小二乗重みの集合によって表現されます。2つの固定ベクトル間の内積は、元の遅延相互作用の結果の近似になります。
生成された成果物は学習に使用したデータセット固有のものであり、txtaiでembeddingsインデックスを読み込む前に学習する必要があります。成果物はconfig.jsonとmodel.safetensorsとして保存されます。epochs=100の設定では品質重視のMLP経路が使用され、epochs=0では、低コストな代替手段として決定論的なランダムELM特徴が選択されます。
学習データの選択が決定的な要因だった
nfcorpusでのコンポーネント除去実験では、特徴マップの学習に使用するベクトルの分布が、その他の一部の学習選択よりも大きな影響を及ぼすことが示されました。データエンコーダーのトークンベクトルでMLPを学習した場合、NDCG@10は0.15870で、未学習のELMの0.19187を下回りました。クエリエンコーダーのベクトルを使用すると結果は0.24868に上昇し、検証に基づいてエポック数を選択すると0.25534に達しました。
記事の分析によると、学習分布の選択は、データベクトルの実験から最終結果までに測定された改善の93%を説明し、エポック数の選択が残りの7%の改善に寄与しました。そのため、LemurTrainerではデフォルトでlearncategoryをqueryに設定し、dataを選択したり、別の学習セットを渡したりすることも可能です。
比較テストで示されたこと
比較では、colbert-ir/colbertv2.0モデル、NVIDIA GeForce RTX 4080 SUPER、torch 2.13.0+cu130、IDMap,FlatによるFaissの厳密検索を使用しました。デフォルト幅10,240次元のMUVERA、2,048次元に縮小したMUVERA、幅2,048次元のMLPエンコーディングを使用するLEMURを比較しました。
- nfcorpusでは、LEMURは0.25524を記録し、同じサイズのMUVERAは0.16299、デフォルトサイズのMUVERAは0.23544でした。
- scifactでは、LEMURは0.54910を記録し、縮小版MUVERAは0.36757、デフォルト版は0.50021でした。
- arguanaでは、LEMURは0.42556を記録し、縮小版MUVERAは0.26280、デフォルト版は0.34614でした。
これは、同じサイズのMUVERAに対して、nfcorpusで56.6%、scifactで49.4%、arguanaで61.9%の改善に相当します。デフォルトのMUVERAベクトルと比較した場合、改善率はそれぞれ8.4%、9.8%、22.9%でした。また、LEMURのインデックスは、ベクトル幅が10,240次元から2,048次元へ減少したため、測定時にはデフォルトのMUVERAインデックスの5分の1の容量を使用しました。
ただし、これらの数値の範囲は重要です。必要なデータセットからfiqaとscidocsの2つの実験は完了しておらず、測定は1つのモデル、1台のデバイス、厳密な検索に依存しています。txtaiは5,000行までは厳密検索を使用し、その後IVFインデックスへ移行します。scifactの実験では、デフォルトのIVFにより、厳密検索と比較してLEMURのNDCG@10が43%低下した一方、MUVERAの低下は25%でした。したがって、規模を拡大した場合や近似検索を使用した場合にも、厳密検索の結果が同じままになるとは仮定できません。
なぜmean centeringが追加されたのか?
ColBERTv2からlightonai/LateOnへ移行した際、テストではトークンベクトルの方向的な類似性が非常に高いことが分かりました。5,000ペアのサンプルでは、ベクトル間のコサイン類似度の平均は0.9508、MaxSimの分散は0.0559でした。集合平均を差し引いて再正規化すると、類似度は0.0033に低下し、MaxSimの分散は0.4772に上昇しました。これはそれ自体が検索指標を表すものではありませんが、センタリングによって固定次元エンコーダーが捉えられる方向空間が広がったことを示しています。
検索テストでは、この利点がモデルに依存することが確認されました。LateOnの行列では、測定した4つのセルすべてにおいて、バッチレベルのセンタリングが、センタリングを無効にした場合や集合平均を使用した場合よりも強い結果を示しました。たとえば、nfcorpusでのLEMURの結果はセンタリングなしの0.00000からバッチセンタリングありの0.33309へ上昇し、scifactでは0.04985から0.69016へ上昇しました。しかし、ColBERTv2での実験では、センタリングが中立的であるか、MUVERAに悪影響を及ぼす場合があることが示されました。そのため、無条件のグローバル設定として提示されたわけではありません。
統合された変更におけるデフォルトルールでは、読み込まれたモデルがtorch.nn.Linearの線形層を2つ以上含む場合に、バッチセンタリングを有効にします。層が0個または1個のモデルでは従来の動作が維持されますが、判断を手動で上書きすることもできます。センタリングはトークンベクトルの正規化後、LEMURまたはMUVERAの前に行われ、その後、再度正規化されます。document、batch、collectionの範囲を選択でき、collection範囲では埋め込み平均、またはcenter.meanを含むSafetensorsファイルを受け入れます。
ユーザーにとって実際に何が変わるのか?
LEMURを使用するには、インデックスを作成する前に別途学習手順が必要であり、学習時と読み込み時のベクトル設定を一致させる必要があります。公開された例では、LEMUR成果物とともにcenter: trueを使用し、厳密検索が実用的な場合にはFaissをIDMap,Flatに固定しています。記事におけるtxtaiの最新公開版はv9.12.0であり、統合された変更はv9.13.0を対象としています。リリース前のソースを試すには、隔離環境でGitHubリポジトリのmaster版をインストールできます。
実際の結論は、LEMURやセンタリングがあらゆる状況で優れているということではありません。txtaiが、異なる2つの問題に対する別々のツールを提供するようになったということです。LEMURは遅延相互作用の表現を固定ベクトルへ縮小するためのものであり、センタリングは一部のモデルに適さないトークンベクトルの幾何を扱うためのものです。結果を一般化するには、モデル、データセット、調整済みの近似インデックスをまたいだ、より広範なテストが依然として必要です。