Papers with Code 用の Hugging Face 検索アーキテクチャ
Hugging Face は、AI 研究をより身近なものにするため、キーワードベースの語彙検索とベクトルベースのセマンティック検索を組み合わせた、Papers with Code 用のハイブリッド検索システムを実装しました。このアーキテクチャにより、ユーザーは正確なタイトルや arXiv 識別子を通じて研究を見つけることができると同時に、特定のキーワードが論文に含まれていない場合でも、概念的に関連する研究を検索できるようになります。
ハイブリッド検索アーキテクチャ
Papers with Code は、正確な言及のためのキーワード検索と、意味的な類似性のためのベクトル検索の強みを組み合わせたハイブリッド検索システムを利用しています。このシステムは、高速な語彙ベースラインのために PostgreSQL データベースを使用し、高密度な埋め込み(embeddings)のために pgvector を使用して、Reciprocal Rank Fusion (RRF) アルゴリズムを用いてこれら 2 つを組み合わせます。
検索パイプライン
各クエリに対して、システムは 2 つの並列ブランチを実行します:
- 語彙ブランチ (Lexical Branch): 重み付き PostgreSQL 全文検索を使用して、最大 50 個の候補を取得します。
- セマンティックブランチ (Semantic Branch): アクティブな埋め込み生成のコサイン距離検索を使用して、
pgvectorから最大 50 個の候補を取得します。
これらの結果は、ブランチの重みを等しくし、ランク定数を $k=60$ とした重み付き RRF を使用してマージされます。決定論的な同一性動作を維持するために、システムは正確なタイトルや arXiv ID が結果の最上位に留まるようにし、一方でメソッド・タクソノミー(手法の分類学)がナビゲーションのリクエスト(例:「the original BERT paper」)を処理します。
技術スタックとインフラストラクチャ
コーパス構築ののスループットと、ライブクエリの低レイテンシを両立させるため、Hugging Face は検索インフラをオフラインとオンラインのコンポーネントに分割しました。
オフライン・コーパス構築 (Hugging Face Jobs)
フルコーパスの埋め込みは、バッチワークロードとして扱われます。Hugging Face Jobs は、論文コーパスを処理するためにバスタブルな GPU コンピューティング(具体的には NVIDIA L4 GPU)を提供します。プロセスには以下が含まれます:
- PostgreSQL スナップショットから論文データを JSONL シャードにエクスポートすること。
Qwen/Qwen3-Embedding-0.6Bの固定されたモデルリビジョンをロードすること。- ドキュメントをバッチでエンコードし、パディングを減らすためにテキストの長さをソートすること。
- Matryoshka Representation Learning (MRL) を使用してベクトルを 256 次元に切り詰め、L2 正規化を適用すること。
永続ストレージ (Hugging Face Storage Buckets)
Storage Buckets は、データベース、一時的な Jobs、およびプロダクション・インデックスの間の結合組織として機能します。アーティファクトを不変の実行プレフィックス、マニフェスト、およびチェックサムの下で整理することで、システムは以下を実現します:
- 再現性: 生成物を特定のスナップショットやモデルリビジョンまで遡って追跡できること。
- 安全なリトライ: 完了したシャードから作業を再開できること。
- 制御されたロールアウト: 新しい生成物を原子的に有効化する前に、カバレッジを検証し HNSW インデックスを構築すること。
オンライン検索 (Hugging Face Inference Endpoints)
ライブクエリは、Text Embeddings Inference (TEI) をバックエンドとする認証済み Inference Endpoint を使用して埋め込み化されます。このエンドポイントは、Qwen3 モデルの query プロンプトを使用して、正規化された 256 次元のベクトルを生成します。
エンドポイントの「scale-to-zero」の性質と、コールドスタート時のレイテンシ・スパイクを避けるため、システムは厳格なクライアントサイド・ポリシーを実装しています:1 秒間のプロダクション・タイムアウトとサーキットブレーカーです。セマンティック・エンドポイントが利用不可、またはタイムアウトした場合は、システムは直ちに語彙検索結果にフォールバックします。
埋め込みコントラクトとモデルの選択
埋め込みパイプラインにおける微妙な失敗を防ぐため、Hugging Face は埋め込み形式を、バージョン管理された API として扱います。すべての論文は normalized title + "\n\n" + normalized abstract としてエンコードされます。
モデル仕様:
- モデル:
Qwen/Qwen3-Embedding-0.6B(特定の正確なリビジョンに固定)。 - 次元数: 256 (速度とストレージのバランスをとるために MRL を通じて選択)。
- 正規化: L2 正規化されたベクトル。
- プロンプト: コーパス埋め込み用の
documentプロンプトと、ライブ検索用のqueryプロンプト。
運用上の洞察と学んだ教訓
スループット vs. レイテンシ
スループット指向の作業 (Jobs) とレイテンシに敏感な作業 (Inference Endpoints) を分離することで、システムはコストと可用性を独立して最適化できます。
ベクトル次元数
Matryoshka 埋め込みを使用することで、チームは次元数を 256 に削減することができました。5,000 報の論文におけるパイロット・テストでは、この構成で、1024 次元のベクトルに必要とされるストレージのわずか 27% を使用しながら、完全一致検索に対して 0.9955 Recall@20 を達成しました。
増分更新
Jobs はフル・リビルドを処理しますが、1時間ごとの増分プロセスは、同じ Inference Endpoint (with the document prompt) を使用して、最大 500 報の論文をバッチで埋め込み、フル GPU Job のオーバーヘッドなしにインデックスを最新の状態に保ちます。
関連論文機能
ドキュメント埋め込みはすでに PostgreSQL に保存されているため、各論文の個別ページにおける「Related Papers」機能は、単純な最近傍探索クエリとして実装されており、リアルタイムのモデル推論を必要としません。
Sources
関連
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch