10月1日、MarkTechPostが「Perplexity Releases pplx-embed-v2-context-9b-preview: A Contextual Embedding Model That Retrieves Answers and Their Supporting Evidence」と題した記事を公開した。
「回答」と「その根拠」を同時に取得する
従来のRAG(Retrieval-Augmented Generation)システムは、ドキュメントをチャンク(断片)に分割して埋め込みを生成するが、そこには構造的な問題がある。あるチャンクが別の箇所で定義されたエンティティや見出しに依存していても、分割後にはその文脈が失われる。
この問題に対する先行アプローチとして「レイトチャンキング」がある。ドキュメントを1回のパスでエンコードしてからチャンクごとにプーリングすることで、文書全体の文脈をチャンク埋め込みに反映させる手法だ。
しかし、学習シグナルにも別の問題が残っていた。従来の学習では、クエリに対して正解となる「ゴールドチャンク」を1つだけ正例としてラベル付けする。結果として、回答を検証するために必要な周辺の文脈チャンクは軒並み負例扱いになる。Perplexityはほかにも3つの問題を指摘している:二値ラベルは学習シグナルが粗いこと、LLMによるアノテーションコストがデータセットサイズに対して線形にスケールすること、そしてラベルが特定のチャンク分割戦略に依存してしまうことだ。
pplx-embed-v2-context-9b-previewはこの学習シグナル自体を刷新している。
トークンレベルの教師モデルで学習シグナルを改善
本モデルの学習には、Perplexityが以前公開したクエリ対応コンテキスト圧縮モデルを教師として用いる。この教師モデルはクエリとドキュメントを同時に読み込み、各トークンをスコアリングする。
学習の仕組みは以下のとおりだ:
- チャンク関連度スコア: 各チャンク内の上位nトークンスコアの平均値
- ソフトターゲット: チャンクスコアを温度付きsoftmaxで変換したもの(1つのチャンクだけを正例とするone-hotラベルではない)
- 蒸留ロス: 教師と生徒の分布間のforward KL divergence
- ドキュメントロス: ColBERTのMaxSim(各クエリトークンに対しドキュメント側の最類似トークンスコアを取る遅延インタラクション手法)にインスパイアされたInfoNCE損失。ドキュメントスコアはそのベストチャンクで代表される
各バッチではチャンク分割戦略をランダムにサンプリングする。これにより、トークンスコアを再集計するだけでチャンク境界の変更に対応でき、再アノテーションが不要になる。教師モデルは学習時にのみ動作するため、推論時の遅延やストレージへの影響はない。
モデルは社内製9B ColBERT検索モデルをベースに構築され、線形投影で2048次元の埋め込みを出力する。Matryoshka学習(単一モデルで異なる次元数の埋め込みを利用可能にする手法)により1024次元にも対応。量子化対応学習でネイティブのint8埋め込みを生成できる。学習には50以上の言語をカバーする約430のデータセットを使用した。
context-benchでのベンチマーク結果
評価にはcontext-benchを用いた。これはturbopuffer(ベクトルデータベースのスタートアップ)が構築・管理するベンチマークで、2,099件のクエリ、38,894件のドキュメント、2,458,072件のセンテンスチャンクで構成され、代名詞解決からテーブル構造まで12種類のコンテキスト能力を測定する。Perplexityはモデルをブラインド評価で提出したと述べている。なお、turbopufferはベンチマークの運営主体であり、評価の中立性については元記事の範囲では詳細が開示されていない点には留意が必要だ。
K=10でのcontext-bench結果:
| 指標 | pplx-embed-v2-context-9b-preview | voyage-context-4 |
|---|---|---|
| Answer Recall | 45.5% | 約31.1% |
| Evidence Recall | 40.6% | 約35.6% |
| Document Recall | 61.6% | — |
※voyage-context-4の数値は元記事掲載のグラフからの概算値であり、公式発表数値ではない。
voyage-context-4に対してAnswer Recallで14.4ポイント、Evidence Recallで5.0ポイント上回る。
ストレージ効率も特徴的だ。1024次元int8(ベクトルあたり1KB)でvoyage-context-4の2048次元float32(8KB)をわずかに上回り、ストレージ容量は8分の1で済む。チャンクサイズが64〜512トークンの範囲で変化しても、平均スコアは81.0%から79.9%と安定している。
競合モデルとの比較
| pplx-embed-v2-context-9b-preview | voyage-context-4 | pplx-embed-context-v1-4B | Nemotron-3-Embed-8B | |
|---|---|---|---|---|
| チャンク埋め込み | コンテキスト対応 | コンテキスト対応 | コンテキスト対応 | チャンク独立 |
| アクセス | オープンウェイト、MIT | ホステッドAPI | オープンウェイト、MIT / API | オープンウェイト |
| パラメータ数 | 9B(HFには8Bと記載) | 非公開(MoEバックボーン) | 4B | 約8B |
| 次元数 | 2048、1024 | 2048、1024、512、256 | 2560 | 4096 |
| 料金 | セルフホスト | $0.12/100万トークン | セルフホストまたはAPI | セルフホスト |
利用方法
Hugging FaceからMITライセンスのウェイトを取得し、セルフホストで利用可能だ。ロードにはtransformers>=5.4.0(Hugging Faceの主要ライブラリで、本モデルのカスタムアーキテクチャを読み込むために比較的新しいバージョンが必要)とtrust_remote_code=Trueが必要になる。現時点でPerplexity APIへの統合は未対応であり、ウェイトとインターフェースは後方互換性なしに変更される可能性があるとモデルカードに明記されている。
詳細はPerplexity Releases pplx-embed-v2-context-9b-preview: A Contextual Embedding Model That Retrieves Answers and Their Supporting Evidenceを参照していただきたい。