
- PostgreSQL全文検索とpgvectorをRRFで融合するハイブリッド検索を採用
- バッチ処理はHF Jobs、データ受け渡しはStorage Buckets、クエリはInference Endpointsで分担
- Qwen3-Embeddingの動的次元を利用し、256次元で速度と品質のバランスを実現
何が起きたか
Hugging Faceが運営するPapers with Codeでは、論文を正確に検索できる仕組みが欠かせない。検索対象はタイトルやarXiv IDの完全一致だけにとどまらず、「small language models for code generation」のような概念的なクエリや、「the original BERT paper」のようなナビゲーション意図も理解する必要がある。
この課題に対して、Hugging Faceは自社の各サービスを組み合わせたハイブリッド検索システムを構築し、その設計をブログで公開した。現在、同システムはarXivとDaily Papersから取得した110,000以上の論文の埋め込みを保持している。
埋め込み契約の設計
埋め込みパイプラインは、モデルのリビジョン変更やプロンプトの混同、ベクトルの次元不一致など、さまざまな暗黙の失敗が起きやすい。そこでPapers with Codeでは、埋め込み形式をバージョン付きAPIとして定義し、正規化したタイトルと要約を「\n\n」で連結したものを入力としている。
生成時には、モデルリポジトリと正確なリビジョン、出力次元、入力形式のバージョン、クエリか文書か、正規化方法、コンテンツハッシュを記録する。本番環境ではQwen/Qwen3-Embedding-0.6Bを固定リビジョンで使い、256次元のL2正規化ベクトルを生成している。Qwen3のMatryoshka表現学習により、動的な埋め込みサイズを指定できるのが特徴だ。
バッチ処理とストレージの役割
論文全体の埋め込み生成は、短時間だけGPUを必要とするバッチワークロードだ。Hugging Face Jobsは、コマンドとハードウェア、Dockerイメージを指定するだけで実行でき、この用途に適している。実際のジョブはL4 GPUを搭載するl4x1フレーバーで動き、バケットをマウントして入力データを読み取り、埋め込みをParquet形式で出力する。
ストレージにはHugging Face Storage Bucketsを使用し、run IDごとに不変なディレクトリを作る。入力・出力のマニフェストとチェックサムを管理することで、再現性、安全なリトライ、低コストな実験、段階的なロールアウト、簡単なロールバックが可能になる。5,000論文のパイロットでは、L4 GPUで1秒あたり約75論文を1024次元で処理できたという。
オンライン検索の実装
ユーザーのクエリを埋め込む段階では、Inference Endpointsが使われる。固定したモデルを認証付きエンドポイントとしてデプロイし、クエリプロンプトを使って256次元の正規化ベクトルを返す。APIはpgvector上でコサイン距離による近傍検索を行い、HNSWインデックスで高速化している。
パイロットでは、256次元のQwenインデックスが完全一致検索に対してRecall@20で0.9955を達成し、HNSWの検索遅延はp50で1.31ms、p95で2.21msだった。ストレージ使用量は1024次元版の約27%に抑えられた。エンドポイントはレプリカ最大1つでアイドル時にはスケールアウトできるが、コールドスタートが発生するため、タイムアウトやフォールバックをアプリケーション設計に組み込んでいる。
ハイブリッド検索の融合
検索クエリごとに、全文検索とベクトル検索のそれぞれから最大50件の候補を取得し、重み付きRRFでランキングを融合する。RRFはスコアではなく順位を組み合わせるため、異なる尺度を持つ2つの検索結果を頑健に統合できる。現在は両ブランチに等しい重みとk=60を使っている。
この方式により、概念的なクエリにはベクトル検索の再現率が効き、正確な用語や識別子には全文検索の精度が生きる。また、完全一致タイトルやarXiv IDを最上位に保つ、タイプミスへの耐性、あいまいな検索に無理に結果を返さないといった動作も実装されている。
| 項目 | 1024次元 | 256次元 |
|---|---|---|
| ストレージ使用量 | 基準 | 約27% |
| 検索精度(Recall@20) | 基準(同等) | 0.9955 |
| HNSW遅延(p50) | 基準 | 1.31ms |
| HNSW遅延(p95) | 基準 | 2.21ms |
Hybrid search typically outperforms keyword- and vector-based search systems, as it combines the best of both worlds.
ハイブリッド検索は、キーワード検索とベクトル検索の両方の長所を組み合わせるため、通常はいずれか単独の検索よりも高い性能を発揮する。
今後の見通し
今後は、110,000件の全文脈でこのパイロット結果が再現できるかが焦点になる。また、記事ではクロスエンコーダーを用いたリランカーの追加がさらなる精度向上につながる可能性に言及しているが、追加のコストとレイテンシが課題となる。検索品質の評価指標や、エージェントが利用するCLI経由の検索が実際のワークフローでどう使われるかも、今後の情報が待たれる。
日本の開発者・IT企業にとっての意味
日本のIT企業がRAGや社内文書検索を構築する際、キーワード検索とベクトル検索のどちらを選ぶかはよくある論点です。この記事は、両者をRRFで融合する実践的なパターンを示しています。特に、埋め込みのバージョン管理を契約として徹底する考え方は、PaaSで運用する際の落とし穴を避けるうえで参考になります。また、バッチ処理にマネージドGPUを使い、オンライン推論はスケールアウト可能なエンドポイントに分離する設計は、コストとレイテンシのバランスを取る上で有用です。Hugging Faceの各サービスを組み合わせる具体的な構成が公開されたことで、同様のシステムを導入するさいの設計指針が得られるでしょう。
気になる点
- なぜ埋め込み次元として256次元を選んだのか?
- Qwen3のMatryoshka表現学習により、埋め込み次元を動的に調整できるため。パイロットでは1024次元と同等のRecall@20を維持しつつ、ストレージを約27%に削減し、検索遅延も低く抑えられた。
- 既存のPostgreSQL環境でも同じ構成を再現できるか?
- pgvector拡張とQwen3-Embeddingモデルはオープンに利用できるため、原理的には再現可能です。ただし、Hugging Face JobsやStorage Buckets部分は自前のバッチ基盤で代替する必要があります。記事のパイロット結果は特定の環境に基づくため、本番規模での性能は未公表です。
- Inference Endpointsのコールドスタート時はどうなるのか?
- クエリクライアントには1秒のタイムアウトとサーキットブレーカーが実装されており、エンドポイントが応答しない場合は即座に全文検索へフォールバックします。ユーザーは待たされることなく、語彙検索ベースの結果を受け取れます。
用語解説
- pgvector
- PostgreSQLでベクトル検索を可能にする拡張機能。
- HNSW
- グラフ構造を使った近似最近傍探索アルゴリズム。
- RRF
- 複数の検索結果の順位を統合するアルゴリズム。
- Matryoshka表現学習
- 埋め込みの次元を動的に削減しても品質を維持する手法。
- Inference Endpoints
- Hugging Faceが提供するマネージド推論サービス。
出典
How Hugging Face Inference Endpoints, Jobs, and Buckets Power Search on Papers with Code
AI導入も顧問も、お任せください
何から手をつけるか、どこまでAIに任せるか。自社の業務に合わせて整理し、導入から運用まで伴走します。相談だけでも構いません。
AI導入について相談する