数据远不止于文本,它本质上是多模态的,包括图像、视频、音频等,通常采用复杂的非结构化格式。虽然常见的方法是将 PDF、扫描图像、幻灯片和其他文档转换为文本,但以文本格式捕获所有信息具有挑战性,如图 1 所示。
文本中视觉信息的丢失推动了多模态语言模型 (也称为视觉语言模型 ( VLM)) 的开发。这些模型可以处理文本和原始图像,并生成适当的响应。

VLM 将计算机视觉与自然语言处理相结合,有助于将我们看到的内容与我们所说的内容联系起来。它们使机器能够理解和处理视觉和文本信息,从而实现更自然、更实用的应用,例如视觉问答、多模态搜索和生成图像描述。它们通常使用配对图像和文本的庞大数据集进行训练。在过去一年中,随着 Gemma 3、PaliGemma、SmolVLM、QwenVL 和 LLaVA-1.5 等模型的发布,VLM 在处理复杂视觉效果 (例如 ChartQA) 方面取得了重大进展。

传统的检索增强生成 (RAG) 工作流通常以文本数据为中心。如图 2 所示,文档通常很复杂,必须解析为文本。另一方面,VLM 最近的改进使它们变得更好、更可靠,甚至更小。
构建多模态 RAG 工作流已变得越来越流行,因为此类工作流不需要复杂的文本提取步骤。然而,VLM 仍然比文字 LLM 更容易产生幻觉。为了减轻 VLM 的潜在限制,在多模态 (视觉) 嵌入模型发挥关键作用的情况下,高精度的检索步骤至关重要。
多模态 (视觉) 嵌入模型将图像和文本映射到共享特征空间,从而实现更有效的跨模态检索。此功能对于为给定文本查询查找最相关的图像或根据图像输入检索相关文本等任务尤为重要。无论是构建产品搜索引擎、内容推荐系统,还是用于组织大型多媒体数据集的工具,视觉语言嵌入模型都是快速、有意义的跨模态检索的支柱。
开发多模态信息检索系统需要集成强大的检索组件,即多模态嵌入和排序器模型,能够从多模态知识库中识别最相关的信息。给定用户查询,检索系统可以检索相关文档图像。根据检索到的结果作为上下文,VLM 可以回答用户查询。
在过去一年中,发布了大量不同规模和功能的多模态嵌入模型 (例如 ViDoRe 检索排行榜) 。虽然许多模型都具有很高的能力,但较小的模型在索引和检索任务中的效率往往受到青睐。为应对构建强大的多模态 RAG 工作流的挑战,NVIDIA 推出了一项全新的 NVIDIA NeMo Retriever 微服务,该微服务以 NVIDIA NIM 的形式构建,用于先进的文档图像检索。
Llama 3.2 NeMo Retriever 多模态嵌入 1B 模型
Llama 3.2 NeMo Retriever 多模态嵌入模型是一个小型 ( 16 亿个参数) 但功能强大的视觉嵌入模型。NeMo Retriever 多模态嵌入模型以 NVIDIA NIM 构建,有助于创建大规模、高效的多模态信息检索系统。
高效文档检索
对于具有多模态内容的文档,传统的检索范式需要预先进行数据解析和提取,换言之,需要使用 PDF 提取工作流 (图 2) 。PDF 的索引过程通常是一个多步骤的工作流程。首先,在每个页面上执行页面元素检测,以检测各种模式的不同元素,例如文本块、图像、表格或图表。然后,根据模态,应用适当的处理方法,例如扫描文本的光学字符识别 (OCR) 或嵌入文本的解析。
或者,VLM 可用于以文本格式描述文档/ 图像。提取文本内容后,系统会通过密集文本嵌入模型 (例如 llama-3.2-nv-embedqa-1b-v2) 进行传递,以生成固定长度的向量表示。
引入了多模态嵌入模型,以应对基于文本的文档嵌入流程的挑战。与基于文本的方法不同,它们可以直接嵌入原始页面图像,从而在表示文本信息语义的同时保留视觉信息。(图 3) 。使用视觉模型可简化流程并泛化到多种文档类型。
对此,基于“视觉空间检索”概念的优势,我们改编了一个功能强大的视觉语言模型,并将其转换为 Llama 3.2 NeMo Retriever 多模态嵌入 1B 模型。它由一个视觉编码器 (SigLIP2-So400m-patch16-512) 、一个大语言模型 (Llama-3.2-1B) 和一个将编码图像映射到 LLM 嵌入空间的线性投影层组成。
Llama 3.2 NeMo Retriever Multimodal Embedding 1B 模型基于 Eagle 2 模型 (引入了一种新的视觉编码器分层混合方法) ,为每个图像文档和查询输入生成 2048 维嵌入。我们使用对比度损失对其进行了微调,以对齐文本查询的嵌入和包含答案的文档页面图像。用于对比学习的负面示例是使用我们的正向感知硬负挖掘方法挖掘的 (详情请参阅 NV-Retriever 论文) 。

文档检索基准测试
我们已基于 10 个 ViDoRe V1 数据集和两个内部精选的多模态数据集 ( DigitalCorpora 和收益) 评估了 1B 参数检索器模型:
- 收益数据集:包含 512 个 PDF (收益报告、咨询演示文稿) 的内部集合,其中每个包含 3000 多个图表、表格和信息图实例,以及 600 多个人工注释的检索问题。
- DigitalCorpora-767 数据集:基于 Digital Corpora 767 个 PDF 的多样化基准测试,包含文本、表格、图表和信息图中的 991 个人工注释问题。
条形图中显示的所有模型均在相同的基础设施和数据集上进行评估。图 4 显示,与其他公开发布的小型 (< 20B) 视觉嵌入模型相比,NVIDIA llama-3.2-nemoretriever-1b-vlm-embed-v1 模型在检索准确性方面表现出色 (以“召回”= 5 衡量) 。

模态 | # 查询数字语料库 | DigitalCorpora 上的 NeMo-retriever – VLM – embed-v1 | # 查询收入 | NeMo-retriever-vlm-embed-v1 的盈利情况 |
多模态 | 991 | 84.5% | 628 | 66.1% |
表格 | 235 | 75.3% | 155 | 44.6% |
图表 | 268 | 88.1% | 129 | 89.9% |
文本 | 488 | 86.9% | 224 | 96.0% |
信息图 | – | – | 100 | 55.0% |
以下是使用 llama-3.2-nemoretriever-1b-vlm-embed-v1 NIM 生成查询和通道 (图像) 嵌入的示例推理脚本,该 NIM 与用于嵌入的 OpenAI API 兼容:
查询:
from openai import OpenAI
client = OpenAI(
api_key="$API_KEY_REQUIRED_IF_EXECUTING_OUTSIDE_NGC",
base_url="https://integrate.api.nvidia.com/v1"
)
response = client.embeddings.create(
input=["What is the civil caseload in South Dakota courts?"],
model="nvidia/llama-3.2-nemoretriever-1b-vlm-embed-v1",
encoding_format="float",
extra_body={"modality": ["text"], "input_type": "query", "truncate": "NONE"}
)
print(response.data[0].embedding)
段落 (图像) :
import base64
import requests
from openai import OpenAI
image_source = "https://assets.ngc.nvidia.com/products/api-catalog/nemo-retriever/embedding/court-sizing-metrics.png"
if image_source.startswith(('http://', 'https://')):
response = requests.get(image_source)
image_b64 = base64.b64encode(response.content).decode()
else:
with open(image_source, "rb") as image_file:
image_b64 = base64.b64encode(image_file.read()).decode()
client = OpenAI(
api_key="$API_KEY_REQUIRED_IF_EXECUTING_OUTSIDE_NGC",
base_url="https://integrate.api.nvidia.com/v1"
)
response = client.embeddings.create(
input=[f"data:image/jpeg;base64,{image_b64}"],
model="nvidia/llama-3.2-nemoretriever-1b-vlm-embed-v1",
encoding_format="float",
extra_body={"modality": ["image"], "input_type": "passage", "truncate": "NONE"}
)
print(response.data[0].embedding)
开始开发出色的信息检索工作流
NVIDIA NeMo Retriever 是一系列微服务,能够以高准确性和数据隐私性提供出色的信息检索,使企业能够生成实时业务见解。立即在我们托管环境的 API Catalog 中体验 NVIDIA NeMo Retriever NIM 微服务。