視覺文件檢索走向多語言

釋出於 2025 年 1 月 10 日
在 GitHub 上更新

摘要: 我們推出了 vdr-2b-multi-v1,這是目前最優秀的用於視覺文件檢索的多語言嵌入模型。我們還發布了其僅支援英文的孿生模型 vdr-2b-v1,並開源了新的 vdr-multilingual-train 資料集。該資料集包含 50 萬個高質量樣本,是目前最大的用於視覺文件檢索的開源多語言合成數據集。

image/png

隆重介紹 vdr-2b-multi-v1 (🤗),一款專為跨多種語言和領域的視覺文件檢索而設計的多語言嵌入模型。該模型旨在將文件頁面的截圖編碼為密集的單向量表示,這將有效地支援對視覺豐富的多語言文件進行搜尋和查詢,而無需任何 OCR、資料提取流程、分塊等操作……

vdr-2b-multi-v1 模型基於 MrLight/dse-qwen2-2b-mrl-v1,並使用我們自制的大量多語言查詢-影像對資料集進行訓練。該模型與 LlamaIndex 合作構建,是 mcdse-2b-v1 的下一代版本。我們的 vdr-2b-multi-v1 擴充套件並改進了訓練時所用的學習和方法,從而產生了一個更強大、更優秀的模型。

  • 訓練資料覆蓋 🇮🇹 義大利語、🇪🇸 西班牙語、🇬🇧 英語、🇫🇷 法語和 🇩🇪 德語: 這些語言共同構成了一個新的、大型的、開源的多語言訓練資料集,包含 50 萬個高質量樣本。

  • 低視訊記憶體佔用與更快的推理速度:在合成視覺文件檢索(ViDoRe)基準測試中,我們僅支援英語的模型使用 768 個影像補丁的表現優於使用 2560 個影像補丁的基礎模型。這使得推理速度提升了 3 倍,並顯著降低了視訊記憶體使用量。

  • 跨語言檢索:在真實世界場景中表現顯著更優。例如,您可以使用義大利語查詢來搜尋德語文件。

  • 套娃表示學習(Matryoshka Representation Learning):您可以將向量大小縮減 3 倍,同時仍保持 98% 的嵌入質量。這在降低儲存成本的同時,顯著提高了檢索速度。

使用方法

🎲 立即試用 vdr-2b-multi-v1,請訪問此 Hugging Face Space

藉助 SentenceTransformers 和 LlamaIndex 的直接整合,使用 vdr-2b-multi-v1 生成嵌入比以往任何時候都更容易。只需幾行程式碼即可開始

透過 LlamaIndex
pip install -U llama-index-embeddings-huggingface
from llama_index.embeddings.huggingface import HuggingFaceEmbedding

model = HuggingFaceEmbedding(
    model_name="llamaindex/vdr-2b-multi-v1",
    device="cpu",  # "mps" for mac, "cuda" for nvidia GPUs
    trust_remote_code=True,
)

image_embedding = model.get_image_embedding("image.png")
query_embedding = model.get_query_embedding("Chi ha inventato Bitcoin?")
透過 SentenceTransformers
from sentence_transformers import SentenceTransformer

model = SentenceTransformer(
    model_name_or_path="llamaindex/vdr-2b-multi-v1",
    device="cuda",
    trust_remote_code=True,
    # These are the recommended kwargs for the model, but change them as needed if you don't have CUDA
    model_kwargs={
        "torch_dtype": torch.bfloat16, 
        "device_map": "cuda:0", 
        "attn_implementation": "flash_attention_2"
    },
)

embeddings = model.encode("image.png")

訓練資料集

為視覺文件檢索訓練優秀的單向量模型需要高質量的資料,但目前現有的多模態資料集非常稀少且非多語言。

因此,我們花費了大量時間從頭開始構建。原始資料集包含 50 萬個多語言查詢-影像樣本,這些樣本是使用公開的網際網路 PDF 從頭收集和生成的。與每個影像關聯的查詢是合成的,並使用 VLM 生成。相比之下,我們的資料集樣本量比之前最大的用於多模態視覺文件檢索的開源合成數據集(即為 ColPali 訓練資料集 生成的爬取文件)多 10 倍。

image/png

資料收集

對於每種語言,我們都會生成一個涵蓋許多不同主題的長搜尋查詢列表,然後用這些查詢來搜尋 PDF。我們使用搜索引擎的語言過濾功能來爬取僅包含指定語言的文件。這種“按主題搜尋”的技術確保了模型能夠接觸到大量多樣化的主題和領域,並且在現實生活場景中表現良好。

爬取過程產生了約 5 萬份多語言文件。與之前 mcdse-2b-v1 模型中使用的方法不同,頁面不是隨機提取的。相反,每個 PDF 的每一頁都透過一個文件佈局分析模型來確定該頁面是包含更多文字元素還是視覺元素。結果是一個數字,將頁面分類為純文字、純視覺或混合型。然後,這個標註步驟被用來抽樣約 10 萬個頁面,確保它們按頁面型別均勻分佈。

合成數據生成

然後使用 gemini-1.5-pro 和 Qwen2-VL-72B 生成查詢。它們的任務是提出一個具體問題和一個泛化問題。之後只有具體問題用於訓練模型,但強制 LLM 區分這兩種問題通常會產生更強的具體問題,以用於資訊檢索訓練。

生成後,進一步的清理步驟確保問題足夠好用於訓練。這包括:

  • 確保語言正確
  • 修復格式問題
  • 移除 markdown
  • 確保只提出一個問題
  • 移除定位短語(例如“根據圖1”、“本文件”……)

篩選與困難負樣本挖掘

這個清理步驟確保了查詢在語法上是正確的,並且遵循一些嚴格的準則。但這仍然不能保證這些查詢足夠好用於資訊檢索。

為了過濾掉不好的問題,我們使用 voyage-3 嵌入模型對每個泛化查詢進行嵌入和索引。對於每個具體問題,我們在索引中搜索。如果其相關的泛化問題出現在前 100 個結果中,則該查詢被標記為“好”。這種方法可以去除低熵、重複或過於相似的問題。平均而言,每種語言的資料集中有 40% 的查詢被移除。

困難負樣本隨後僅使用 voyage-3 在具體問題上進行挖掘,固定閾值為 0.75。我們還進行了實驗,使用了 nvidia/NV-Retriever-v1 中描述的正樣本感知負樣本挖掘方法,但在該資料集上,這種方法似乎產生了過於簡單/遙遠的負樣本。

下載

(vdr-multilingual-train 🤗) 訓練資料集現在已開源,並可直接在 Hugging Face 上獲取。訓練資料集包含 496,167 個 PDF 頁面,其中只有 280,679 個與過濾後的查詢相關聯(使用上述方法)。那些沒有查詢的影像仍然被用作困難負樣本。

語言 過濾後的查詢數 未過濾的查詢數
英語 53,512 94,225
西班牙語 58,738 102,685
義大利語 54,942 98,747
德語 58,217 100,713
法語 55,270 99,797
總計 280,679 496,167

該資料集由 5 個不同的子集組成,每種語言一個。您可以在這裡直接瀏覽

或者,您可以透過在 load_dataset 中指定語言子集來單獨下載各語言資料

from datasets import load_dataset

italian_dataset = load_dataset("llamaindex/vdr-multilingual-train", "it", split="train")

english_dataset = load_dataset("llamaindex/vdr-multilingual-train", "en", split="train")

french_dataset = load_dataset("llamaindex/vdr-multilingual-train", "fr", split="train")

german_dataset = load_dataset("llamaindex/vdr-multilingual-train", "de", split="train")

spanish_dataset = load_dataset("llamaindex/vdr-multilingual-train", "es", split="train")

評估

image/png

該模型已在 ViDoRe 基準測試和自定義構建的評估集上進行了評估,這些評估集能夠測試其在純文字、純視覺和混合頁面截圖上的多語言能力。評估資料集也已在 Hugging Face 上公開(vdr-multilingual-test 🤗)。

我們確保了這些資料集中的任何頁面都沒有出現在訓練集中,以避免任何評估汙染。這些資料集是使用與訓練資料集相同的方法收集和生成的,但樣本量較小。過濾步驟全部是手動完成的:每個查詢都經過評估、策劃和改進(如果需要),以確保高質量的資料。

所有評估都是透過計算 NDCG@5 分數進行的,使用了 1536 維度的向量和可以用最多 768 個詞元表示的影像解析度。

平均 法語(文字) 法語(視覺) 法語(混合)
dse-qwen2-2b-mrl-v1 93.5 94.7 90.8 95.1
vdr-2b-multi-v1 95.6 95.6 93.3 97.9
+2.2%
平均 德語(文字) 德語(視覺) 德語(混合)
dse-qwen2-2b-mrl-v1 93.0 93.4 90.0 95.5
vdr-2b-multi-v1 96.2 94.8 95.7 98.1
+3.4%
平均 義大利語(文字) 義大利語(視覺) 義大利語(混合)
dse-qwen2-2b-mrl-v1 95.1 95.1 94.0 96.2
vdr-2b-multi-v1 97.0 96.4 96.3 98.4
+2%
平均 西班牙語(文字) 西班牙語(視覺) 西班牙語(混合)
dse-qwen2-2b-mrl-v1 96.7 97.2 94.7 98.2
vdr-2b-multi-v1 98.1 98.3 96.9 99.1
+1.4%
平均 英語(文字) 英語(視覺) 英語(混合)
dse-qwen2-2b-mrl-v1 98.0 98.3 98.5 97.1
vdr-2b-multi-v1 98.1 97.9 99.1 97.3
+0.1%

多語言模型在每種語言和每種頁面型別上都優於基礎模型,平均提升了 2.3%。在 ViDoRe 基準測試中,它也表現略好(+0.5%)。我們微調的 vdr-2b-multi-v1 在效能上取得了巨大飛躍,特別是在非英語的純視覺或混合頁面上。例如,在德語純視覺檢索方面,NDCG@5 分數比基礎模型提高了 6.33%。

我們還僅在英語子集上訓練了一個版本(vdr-2b-v1 🤗)。在完整的 ViDoRe 基準測試中(使用 768 個影像詞元進行評估),多語言版本和僅英語版本都優於基礎模型。

平均 shiftproject government healthcare energy ai docvqa arxivqa tatdqa infovqa tabfquad
dse-qwen2-2b-mrl-v1 83.6 79.8 95.7 96.9 92.0 98.2 56.3 85.2 53.9 87.5 90.3
vdr-2b-multi-v1 84.0 82.4 95.5 96.5 91.2 98.5 58.5 84.7 53.6 87.1 92.2
vdr-2b-v1 84.3 83.4 96.9 97.2 92.6 96.8 57.4 85.1 54.1 87.9 91.3

更快的推理

image/png

僅支援英語的 vdr-2b-v1 模型在 ViDoRe 基準測試的合成數據集上也達到了與基礎模型相當的效能,而只使用了 30% 的影像詞元(768 vs. 2560)。這有效地帶來了 3 倍的推理速度提升和更低的視訊記憶體使用量。

平均 shiftproject government healthcare energy ai
dse-qwen2-2b-mrl-v1 (2560 個影像詞元) 93.0 82 96 96.4 92.9 97.5
vdr-2b-v1 (768 個影像詞元) 93.4 83.4 96.9 97.2 92.6 96.8

跨語言檢索

儘管該模型是針對每種語言單獨訓練的,但它在跨語言檢索方面也有所改進。為了測試這種能力,我們將德語評估集的查詢使用 DeepL 翻譯成義大利語。文件頁面的截圖仍保持原始的德語。

平均 義大利語 -> 德語(文字) 義大利語 -> 德語(視覺) 義大利語 -> 德語(混合)
dse-qwen2-2b-mrl-v1 93.1 92.6 93.5 93.3
vdr-2b-multi-v1 95.3 95.0 95.8 95.1
+2.3%

該模型在所有文件型別上都顯著更優,平均提升了 2.3%。這些檢索能力對於現實世界的用例至關重要,特別是在像歐洲這樣語言碎片化的大陸。例如,它能夠在複雜的多語言源上進行與語言無關的搜尋,如歐洲具有約束力的決定、說明手冊、金融資產的 KID、藥品說明書等等……

MRL 和二元嵌入

該模型使用套娃表示學習(Matryoshka Representation Learning,MRL)進行訓練。訓練期間使用的損失函式經過校準,以跟蹤所有這些維度的效能,引導模型將最重要的識別資訊前置。這實際上允許您根據您的規模和預算來縮減嵌入維度。要了解更多關於 MRL 的資訊,Hugging Face 的這篇博文解釋得非常好。

為了測試模型在不同向量維度下的檢索能力,我們在義大利語->德語的跨語言基準測試中進行了評估。

NDCG@5 (浮點型)

平均 義大利語 -> 德語(文字) 義大利語 -> 德語(視覺) 義大利語 -> 德語(混合)
1536 維度
dse-qwen2-2b-mrl-v1 93.1 92.6 93.5 93.3
vdr-2b-multi-v1 95.3 95.0 95.9 95.1
+2.3%
1024 維度
dse-qwen2-2b-mrl-v1 92.2 90.9 92.3 93.5
vdr-2b-multi-v1 94.6 93.1 95.7 95.1
+2.5%
512 維度
dse-qwen2-2b-mrl-v1 89.8 87.9 89.4 92.2
vdr-2b-multi-v1 93.0 91.1 93.4 94.5
+3.4%

NDCG@5 (二元)

平均 義大利語 -> 德語(文字) 義大利語 -> 德語(視覺) 義大利語 -> 德語(混合)
1536 維度
dse-qwen2-2b-mrl-v1 89.8 88.2 90.3 90.8
vdr-2b-multi-v1 92.3 89.6 94.1 93.3
+2.8%
1024 維度
dse-qwen2-2b-mrl-v1 86.7 84.9 88.2 86.9
vdr-2b-multi-v1 90.8 87.0 92.6 92.8
+4.6%
512 維度
dse-qwen2-2b-mrl-v1 79.2 80.6 81.7 75.4
vdr-2b-multi-v1 82.6 77.7 86.7 83.3
+4.0%

1024 維度的浮點向量在質量和大小之間提供了非常好的平衡。它們的體積小了約 30%,但仍然保留了 99% 的檢索效能。這對於 1536 維度的二元向量也是如此,它們每個向量的位元組數減少了 10 倍,但仍保留了 97% 的檢索質量。同樣有趣的是,1536 維度的二元向量幾乎與基礎模型的 1536 維度浮點向量的效能相匹配。

結論與未來工作

我們相信 vdr-2b-multi-v1vdr-2b-v1 將對許多使用者證明其價值。

我們的多語言模型是同類產品中的首創,它顯著提高了在多語言和跨語言場景中的效能,並且得益於 MRL 和二元量化,檢索比以往任何時候都更高效、更快速。我們相信這將開啟新的用例和機會,特別是在像歐洲這樣語言碎片化的大陸。

其僅支援英語的孿生模型代表了對基礎模型的重大改進,現在能夠以 3 倍的速度嵌入文件,視訊記憶體佔用更少,並且具有相同(或更好)的檢索質量。

所有這一切都得益於新的 vdr-multilingual-train 資料集。憑藉 50 萬個高質量樣本,它是用於視覺文件檢索的最大的多語言開源合成數據集。

未來的工作將探索我們的模型在適應新的和特定領域時的表現。這仍處於開發的早期階段,在結果發表前還需要做更多的工作,但初步測試似乎已經表明,用極少的資料和計算資源就能實現令人印象深刻的檢索增益。

敬請期待未來的更新!

連結

社群

註冊登入 以發表評論

© . This site is unofficial and not affiliated with Hugging Face, Inc.