Hugging Face が vdr-2b-multi-v1 多言語視覚ドキュメント検索モデルをリリース
Hugging Face は vdr-2b-multi-v1 を発表しました。これは、ドキュメントのページスクリーンショットを密な単一ベクトル表現にエンコードするように設計された多言語埋め込みモデルで、OCR、データ抽出パイプライン、または手動のチャンク分割を必要とせずに、視覚的に豊富なドキュメントを検索およびクエリすることを可能にします。
主なモデル機能
vdr-2b-multi-v1 は、以前の視覚検索手法と比較していくつかの技術的利点を提供します:
- 多言語サポート: このモデルはイタリア語、スペイン語、英語、フランス語、ドイツ語で訓練されており、クロスリンガル検索を可能にします(例えば、イタリア語のクエリでドイツ語のドキュメントを検索するなど)。
- 効率と速度: 英語専用バージョンの
vdr-2b-v1は、768 の画像パッチを使用することで 2560 の代わりに、ベースモデルと比較して推論速度が 3倍 速く、VRAM 使用量を大幅に削減します。 - Matryoshka 表現学習 (MRL): このモデルは可変ベクトルサイズをサポートし、ユーザーはベクトル次元を 3倍 に削減しながら埋め込み品質の 98% を保持でき、ストレージと検索速度の最適化が行われます。
- OCR フリー検索: スクリーンショットを直接エンコードすることで、従来のテキスト抽出パイプラインの複雑さを回避します。
vdr-multilingual-train データセット
多言語マルチモーダルデータセットの不足に対処するため、Hugging Face は vdr-multilingual-train データセットをリリースしました。これは、視覚ドキュメント検索のための最大のオープンソース多言語合成データセットで、500,000 件の高品質なサンプルを含んでいます。
データ生成パイプライン
このデータセットは、高品質と多様性を確保するためにマルチステッププロセスで構築されました:
- データ収集: トピックベースの検索を使用して、公開インターネットから約 50,000 件の多言語ドキュメントがスクレイピングされました。多様性を確保するために、ページはドキュメントレイアウト分析モデルを使用してテキストのみ、視覚のみ、または混合に分類されました。
- 合成クエリ生成: クエリは Gemini 1.5 Pro と Qwen2-VL-72B を使用して生成されました。これらのモデルには、トレーニングで使用される特定のクエリの強度を高めるために、具体的かつ一般的な質問を生成するタスクが与えられました。
- クリーニングとフィルタリング: クエリは、正しい言語、適切なフォーマット、およびグラウンディングフレーズ(例: 「図 1 によると」)の削除を確保するためにクリーニングプロセスを経ました。
- ハードネガティブマイニング: 検索精度を向上させるために、voyage-3 埋め込みモデルを使用してハードネガティブが採掘されました。クエリは、関連する広範な質問がインデックスの上位 100 結果に表示される場合、「良い」とみなされました。
パフォーマンスと評価
vdr-2b-multi-v1 は、ViDoRe ベンチマークおよびカスタム多言語テストセットで評価されました。このモデルは、ベースモデル (dse-qwen2-2b-mrl-v1) と比較して、特に非英語の視覚専用および混合ページタイプにおいて顕著なパフォーマンス向上を示しています。
ベンチマーク結果 (NDCG@5)
多言語モデルは、テストされたすべての言語でベースモデルを平均 2.2% 上回ります。顕著な改善点には次のものがあります:
- ドイツ語 (視覚専用): ベースモデルと比較して +6.33% の改善。
- イタリア語 (混合): +2% の改善。
- スペイン語 (視覚専用): +1.4% の改善。
クロスリンガルパフォーマンス
このモデルは効果的なクロスリンガル検索能力を示しています。ドイツ語の評価セットをイタリア語の翻訳でクエリしたテストでは、すべてのドキュメントタイプにわたってベースモデルと比較して平均 2.3% の改善が見られました。
実装と統合
これらのモデルは、SentenceTransformers と LlamaIndex を介して標準的な機械学習ワークフローと互換性があります。
LlamaIndex ユーザーの場合、統合は llama-index-embeddings-huggingface パッケージを通じて行われます。
SentenceTransformers の場合、CUDA デバイスでの最適化されたパフォーマンスのために、モデルは torch_dtype=torch.bfloat16 と flash_attention_2 をサポートします。