ViDoRe V3:企业用例检索的综合评估
📣 预印本现已发布!它包含广泛的检索评估、端到端 RAG 评估和 VLM 答案接地。
📣 ViDoRe v3 现已集成到 MTEB 排行榜中!
内容提要
ILLUIN Technology 自豪地发布 ViDoRe V3 基准,该基准由 NVIDIA 协助设计和开发。ViDoRe V3 是我们最新的基准,旨在为多模态企业文档检索评估树立新的行业黄金标准。它解决了生产 RAG 系统中的一个关键挑战:从复杂的、视觉丰富的文档中检索准确信息。
ViDoRe V3 通过优先考虑企业相关性和严格的数据质量来改进现有 RAG 基准。该基准不是依赖于干净的学术文本,而是借鉴了 10 个具有挑战性的真实世界数据集,这些数据集涵盖了不同的工业领域,其中 8 个已公开发布,2 个保密。此外,与以前通常依赖合成数据的基准不同,ViDoRe V3 是建立在 12,000 人工小时的人工创建和验证的注释基础上的。
此基准包含 26,000 页和 3,099 个查询,翻译成 6 种语言。每个查询都链接到由人工标注员创建和验证的检索真实数据:相关页面、关键元素的精确边界框标注以及全面的参考答案。
我们为什么要构建 ViDoRe V3
文档检索领域日益多样化。基于视觉语言模型的新管道正在挑战基于文本检索/生成模型的传统系统。通过 ViDoRe V1 和 V2,我们展示了更好地评估 VLM 检索器的第一步。
- ViDoRe V1 专注于基于单页的提取式查询,
- ViDoRe V2 将基准扩展到更开放式的查询。
但是,与实际用例相比,语料库仍然很小,并且两者都严重依赖合成生成。尽管这些都是正确的方向,但以前的基准仍然给我们留下了零散的印象。语料库需要更大、更具企业数据代表性,查询需要更多样化,端到端评估很困难,并且缺少人工验证。
我们的核心贡献
为了解决以前基准的局限性,我们专注于 3 个主要改进支柱。
- 企业相关语料库: 我们收集了 10 个多样化的语料库,每个语料库都专注于一个独特的、与企业相关的领域或任务。对于每个领域,我们从多样化、许可许可的多模态文档中整理了 1,000 多个页面,这些文档反映了真实世界的企业检索挑战和复杂性。8 个数据集公开发布,2 个保密以防止过拟合。
- 丰富的人工标注: 进行了一项耗时 12,000 人工小时的大规模人工标注活动,用于查询生成和接地视觉问答。对于每个查询,我们提供人工标注的页面相关性排名、边界框和书面答案,以实现全面的检索/RAG 评估。
- 多样化查询: 为了系统地识别失败模式,查询涵盖 7 种类型(例如,多跳、数值)和 3 种格式(问题、指令、关键词)。为了评估跨语言能力,所有查询都提供 6 种语言:英语、法语、西班牙语、德语、意大利语和葡萄牙语。
公开数据集
| 数据集 | 领域 | 语料库语言 | 主要模态 | 页面数 | 查询数(不含翻译) |
|---|---|---|---|---|---|
| 法国上市公司年度报告 | 金融-法语 | 法语 | 文本、表格、图表 | 2384 | 320 |
| 美国上市公司年度报告 | 金融-英语 | 英语 | 文本、表格 | 2942 | 309 |
| 计算机科学教科书 | 计算机科学 | 英语 | 文本、信息图表、表格 | 1360 | 215 |
| 欧盟人力资源报告 | 人力资源 | 英语 | 文本、表格、图表 | 1110 | 318 |
| 法国政府能源报告 | 能源 | 法语 | 文本、图表 | 2229 | 308 |
| 美国空军技术命令 | 工业 | 英语 | 文本、表格、信息图表、图像 | 5244 | 283 |
| FDA 报告 | 制药 | 英语 | 文本、图表、图像、信息图表、表格 | 2313 | 364 |
| 法国物理讲义 | 物理学 | 法语 | 文本、图像、信息图表 | 1674 | 302 |
私有数据集
两个数据集将保持私有,并由 MTEB 团队管理(非常感谢他们!),以确保基准的完整性并减轻过拟合。这种评估方法应该为评估视觉检索模型提供一种更无偏见的方法,从而更具代表性地理解它们的真实能力。为了避免透露过多关于这些数据集的细节,我们只披露文档的领域和语言。
这两个私有数据集涵盖:
- 核能监管文件(英文)
- 电信相关技术标准文件(英文)
查询类别
我们将 ViDoRe V3 查询设计为反映真实世界检索任务的多样性和复杂性。每个查询都以问题、指令或关键词的形式呈现,并标记一个或多个 7 种查询类型。
| 查询类型 | 定义 |
|---|---|
| 开放式 | 需要综合和解释信息的查询。答案必须将多个概念整合到一个连贯的叙述中,而不是引用一个单一的事实。 |
| 比较-对比 | 需要识别和阐明两个或多个实体、概念或主题之间的相似点和/或不同点的查询。 |
| 枚举式 | 请求满足特定条件的完整项目列表的查询。 |
| 数值型 | 期望一个数值的查询,该数值可以通过直接提取或计算获得。 |
| 布尔型 | 期望是/否答案的查询,可能需要对提取的信息进行推理。 |
| 提取式 | 可以通过直接引用文档中的特定事实或信息片段来回答的查询。 |
| 多跳 | 需要从多个不同的来源或部分检索信息,然后将这些信息组合以生成完整答案的查询。 |
为了说明哪些查询类型组合倾向于同时出现以及每种组合的常见程度,我们可视化了所有组合的分布和基数。单类别查询最常见,但许多查询混合了多种类型,例如需要数值比较的提取式问题。
我们特别注意确保所有领域中的查询对当前检索系统都具有挑战性。大多数查询需要跨多个页面传播的信息,迫使模型从整个文档中提取和综合内容,而不是依赖单页匹配。
混合生成过程:如何构建一个具有挑战性的基准
为了构建一个健壮、困难且高质量的基准,我们开发了一个复杂的混合过程,平衡了人类专业知识和 LLM 驱动的规模化。我们的目标是创建真实的查询,因此我们从页面无关的方法开始。与 ViDoRe V2 类似,查询不是使用单个页面,而是从文档部分的高级摘要中生成的。这可以防止任务过于简单,并确保它们模仿真实世界用户的意图。这种生成是通过合成管道(包括使用 Qwen3-235B 的 NVIDIA NeMo Data Designer)实现规模化和专业人工标注员实现细微差别和复杂性。
对于数千个语料库页面的数千个生成查询,找到正确的真实答案需要大量的标注工作。我们实施了一个多阶段漏斗来扩展此过程。首先,VLM(Qwen2.5-32B)执行高召回率的宽松过滤,以快速丢弃明显不相关的页面,限制误报并集中标注员的工作。在此预过滤之后,训练有素的人工标注员执行关键工作。他们识别出真正的相关页面并生成最终的详细标注,包括页面级相关性排名、精确的书面答案和真实边界框。
虽然完美的基础事实对于这种规模的任何数据集来说都是一个难以实现的目标,但我们投入了大量精力来实施多层质量控制框架。我们的标注员具有母语水平的语言能力,并且都通过了生产前验证和试点门槛。关键任务由多名标注员完成,以确保共识,并且数据经过经验丰富的资深标注员的质量控制和审计检查。这种分层方法旨在使基础事实和基准任务尽可能可靠和真实。
作为最终的质量保证步骤,我们严格筛选了注释。这包括检查标注员的一致性,进行人工审查,并使用 Qwen2.5-VL-32B 确认相关信息是否存在于注释页面中。然后,我们最后一次利用 Qwen2.5-VL-32B 将剩余的输出合并为一个黄金答案。
当前检索模型的硬基准
我们使用 MTEB 框架评估了我们基准上广泛的现代视觉检索模型。结果证实该基准对当前方法来说极具挑战性。
表现最好的模型在英文数据集上的 NDCG@10 得分为 65%。当引入多语言文档和翻译查询时,性能显著下降,平均得分未能达到 60% NDCG@10。
对结果的深入分析揭示了几个关键模式:
- 技术文档的挑战: 模型在面对我们“工业”子集和私有“核能”集中高度技术性的文档时表现不佳,特别是在解释密集的示意图和复杂图表方面。
- 持续的多语言挑战: 对于表现最好的模型,我们注意到多语言查询的性能比纯英语查询下降了 3-5 个 NDCG@10 点。
- 计算机科学领域的相对优势: 模型在“计算机科学”拆分中表现出更高的性能。我们推测这是由于用于训练现代 VLM 的大量编码数据产生的溢出效应,使它们对该领域更加了解。
完整的详细评估结果和对数据集难度的深入分析可在下方获取。除非另有说明,所有报告的指标均为 NDCG@10。
英文评估结果
这些结果仅针对 7 个英语数据集(5 个公共数据集,2 个私有数据集)的英语查询进行计算。
| 模型 | 平均分 | 计算机科学 | 核能 | 金融 | 制药 | 人力资源 | 工业 | 电信 |
|---|---|---|---|---|---|---|---|---|
| nemo-colembed-3b | 0.656 | 0.778 | 0.534 | 0.695 | 0.669 | 0.649 | 0.570 | 0.694 |
| nemo-colembed-1b | 0.643 | 0.755 | 0.522 | 0.670 | 0.662 | 0.645 | 0.561 | 0.687 |
| jinav4 | 0.639 | 0.742 | 0.524 | 0.661 | 0.652 | 0.646 | 0.559 | 0.687 |
| colnomic-7b | 0.630 | 0.782 | 0.482 | 0.631 | 0.646 | 0.629 | 0.542 | 0.696 |
| colnomic-3b | 0.617 | 0.755 | 0.455 | 0.630 | 0.637 | 0.626 | 0.528 | 0.686 |
| colqwen2.5 | 0.592 | 0.752 | 0.429 | 0.612 | 0.609 | 0.592 | 0.494 | 0.653 |
| nomic-7b (密集) | 0.573 | 0.709 | 0.423 | 0.576 | 0.638 | 0.559 | 0.485 | 0.620 |
| colqwen2 | 0.563 | 0.735 | 0.441 | 0.509 | 0.581 | 0.547 | 0.498 | 0.632 |
| colpali-v1.3 | 0.530 | 0.725 | 0.381 | 0.433 | 0.577 | 0.533 | 0.470 | 0.592 |
| nomic-3b (密集) | 0.517 | 0.621 | 0.372 | 0.533 | 0.592 | 0.519 | 0.411 | 0.572 |
| colmodernvbert | 0.507 | 0.597 | 0.420 | 0.504 | 0.566 | 0.470 | 0.439 | 0.552 |
| colsmol256 | 0.464 | 0.574 | 0.365 | 0.477 | 0.514 | 0.460 | 0.385 | 0.475 |
多语言结果
| 模型 | 平均分 | 计算机科学 英语 | 物理学 法语 | 核能 英语 | 能源 法语 | 金融 英语 | 制药 英语 | 人力资源 英语 | 工业 英语 | 金融 法语 | 电信 英语 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| jinav4 | 0.576 | 0.718 | 0.466 | 0.500 | 0.640 | 0.593 | 0.631 | 0.595 | 0.504 | 0.461 | 0.648 |
| colnomic-7b | 0.574 | 0.762 | 0.483 | 0.450 | 0.640 | 0.566 | 0.623 | 0.587 | 0.501 | 0.455 | 0.672 |
| nemo-colembed-3b | 0.573 | 0.752 | 0.451 | 0.491 | 0.621 | 0.609 | 0.637 | 0.587 | 0.471 | 0.438 | 0.670 |
| colnomic-3b | 0.558 | 0.727 | 0.475 | 0.421 | 0.65 | 0.563 | 0.611 | 0.573 | 0.474 | 0.443 | 0.645 |
| nemo-colembed-1b | 0.556 | 0.713 | 0.441 | 0.473 | 0.609 | 0.589 | 0.626 | 0.570 | 0.466 | 0.424 | 0.647 |
| colqwen2.5 | 0.519 | 0.723 | 0.459 | 0.381 | 0.597 | 0.523 | 0.579 | 0.512 | 0.413 | 0.391 | 0.613 |
| binomic-7b | 0.490 | 0.666 | 0.442 | 0.367 | 0.575 | 0.488 | 0.589 | 0.462 | 0.379 | 0.360 | 0.578 |
| colqwen2 | 0.447 | 0.686 | 0.416 | 0.357 | 0.488 | 0.390 | 0.522 | 0.451 | 0.383 | 0.200 | 0.574 |
| binomic-3b | 0.443 | 0.585 | 0.420 | 0.322 | 0.514 | 0.442 | 0.553 | 0.433 | 0.332 | 0.289 | 0.537 |
| colpali-v1.3 | 0.431 | 0.653 | 0.417 | 0.329 | 0.471 | 0.344 | 0.531 | 0.448 | 0.356 | 0.218 | 0.540 |
| colmodernvbert | 0.245 | 0.353 | 0.212 | 0.196 | 0.305 | 0.270 | 0.317 | 0.183 | 0.144 | 0.179 | 0.293 |
| colsmol256 | 0.214 | 0.288 | 0.161 | 0.183 | 0.248 | 0.232 | 0.278 | 0.165 | 0.129 | 0.157 | 0.298 |
查询类型难度分析
我们根据查询类型和任务对 nemo-retriever-colembed-3b 的分数分布进行了分解。模型性能与每种查询类型的预期难度非常吻合:开放式查询(NDCG@10 = 0.438)和多跳查询(0.515)最难检索,而提取式查询(0.668)和布尔查询(0.657)最容易。
| 查询类型 | 平均分 | 计算机科学 英语 | 物理学 法语 | 能源 法语 | 金融 英语 | 制药 英语 | 人力资源 英语 | 工业 英语 | 金融-法语 |
|---|---|---|---|---|---|---|---|---|---|
| 提取式 | 0.668 | 0.777 | 0.526 | 0.767 | 0.661 | 0.744 | 0.723 | 0.663 | 0.547 |
| 布尔型 | 0.657 | 0.825 | 0.501 | 0.741 | 0.729 | 0.747 | 0.547 | 0.626 | 0.410 |
| 数值型 | 0.633 | 0.712 | 0.596 | 0.725 | 0.587 | 0.832 | 0.647 | 0.703 | 0.488 |
| 比较-对比 | 0.590 | 0.799 | 0.581 | 0.694 | 0.466 | 0.669 | 0.552 | 0.478 | 0.490 |
| 枚举式 | 0.546 | 0.712 | 0.307 | 0.549 | 0.675 | 0.667 | 0.562 | 0.347 | 0.397 |
| 多跳 | 0.515 | 0.710 | 0.415 | 0.359 | 0.597 | 0.701 | 0.603 | 0.446 | 0.183 |
| 开放式 | 0.438 | 0.709 | 0.375 | 0.475 | 0.529 | 0.489 | 0.498 | 0.209 | 0.324 |
基准范围
企业文档的覆盖范围: 开发此基准的一个主要挑战是领域内多模态文档的有限可用性。虽然我们为整理相关文档付出了巨大努力,但语料库可能无法在所有上下文中完全代表专有企业数据。
语言覆盖: 该基准目前仅限于法语和英语文档。虽然我们曾尝试整理其他语言的相关文档,但资源限制阻碍了更广泛的语言覆盖。为了缓解这一限制,查询被翻译成多种语言,以实现跨语言任务的评估。
标注质量: 在这种规模和任务复杂性/范围下实现完美的标注质量具有挑战性。我们在整个管道中实施了多层质量控制框架,其中包含先进的 LLM/VLM 和资深人工标注员,以验证质量并最大程度地减少类型 1/2 错误。尽管有此严格的验证过程,但基准中可能仍存在一些标注错误。
用法
评估
这是一个关于如何使用 MTEB 在新基准上评估 colqwen2.5-v0.2 的快速脚本(目前您需要克隆存储库才能获取最新版本)
git clone https://github.com/embeddings-benchmark/mteb.git
cd mteb
pip install .
import mteb
benchmark = mteb.get_benchmark("ViDoRe(v3)")
model = mteb.get_model("vidore/colqwen2.5-v0.2")
results = mteb.evaluate(model=model, tasks=benchmark)
样本可视化
这是一个简单的脚本,用于可视化查询/答案对,并在相关页面上绘制边界框。
from datasets import load_dataset
dataset_name = "vidore/vidore_v3_industrial"
dataset = {
"queries": load_dataset(dataset_name, data_dir="queries", split="test"),
"qrels": load_dataset(dataset_name, data_dir="qrels", split="test"),
"corpus": load_dataset(dataset_name, data_dir="corpus", split="test")
}
query_sample = dataset["queries"][8]
print('Query:', query_sample['query'])
print("Answer:", query_sample['answer'])
> Query: What type of airflow is required to maintain ultra-clean environments in aerospace operations?
> Answer: Laminar airflow is required to maintain ultra-clean environments in aerospace operations.
related_qrels = dataset["qrels"].filter(lambda x: x['query_id'] == query_sample['query_id'])
import matplotlib.pyplot as plt
import matplotlib.patches as patches
def plot_bbox(image, bboxes):
_, ax = plt.subplots(figsize=(18, 12))
ax.imshow(image), ax.axis('off')
for bbox in bboxes:
rect = patches.Rectangle((bbox['x1'], bbox['y1']), bbox['x2'] - bbox['x1'], bbox['y2'] - bbox['y1'], linewidth=2, edgecolor='r', facecolor='none')
ax.add_patch(rect)
plt.show()
for qrel in related_qrels:
plot_bbox(dataset["corpus"][qrel['corpus_id']]['image'], qrel['bounding_boxes'])
致谢
这项工作获得了 IDRIS (Jean Zay cluster) 的 HPC 资源,分配代码为 GENCI 分配的 AD011016393。如果没有所有相关人员——我们所有标注员和同事——的投入,这个项目将无法实现。
还要感谢 MTEB 团队在私有数据集方面的合作。
最后,感谢 NVIDIA 的 Tom Balough、Gabriel Moreira、Bo Liu、Eric Tramel、Mengyao Xu、Radek Osmulski、Erin Potter、Hannah Brandon 对本基准的设计和开发做出的宝贵帮助和建议。
链接
- 数据集集合:https://huggingface.co/collections/vidore/vidore-benchmark-v3
- HF 组织 🤗:https://huggingface.co/vidore
- 论文 📄:https://arxiv.org/abs/2601.08620
- 代码库 💻:即将推出
- MTEB 排行榜 📊:http://mteb-leaderboard.hf.space






