@weaviate_io:在搜索PDF之前,我们不再要求它们转换为文本。通过后期交互多向量检索,您能够……
摘要
Weaviate 引入了一种无需文本提取即可搜索PDF的方法,通过后期交互多向量检索将每一页作为图像嵌入,在NVIDIA投资者演示文稿中进行了演示。
查看缓存全文
缓存时间: 2026/09/02 14:07
我们不再要求PDF在搜索前必须转换为文本。
借助晚期交互多向量检索技术,您可以将PDF的每一页作为图像嵌入,从而搜索那些文本提取会遗漏的图表、表格和版式。
我们在NVIDIA 92页的投资者演示文稿上测试了该技术。关于汽车收入的查询准确检索到了五季度柱状图——即使页面上从未出现“变化“或“随时间“这样的词汇。
无需OCR,无需分块处理。只需将您的PDF拖入Weaviate云端,即可开始提问。
了解工作原理:https://weaviate.io/blog/charts-tables-pdfs?utm_source=linkedin&utm_medium=w_social&utm_campaign=query_agent&utm_content=blog_annoucement_808982937…
如何从PDF中的图表和表格提取意义
来源:https://weaviate.io/blog/charts-tables-pdfs?utm_source=linkedin&utm_medium=w_social&utm_campaign=query_agent&utm_content=blog_annoucement_808982937 来自NVIDIA FY26第二季度演示文稿的毛利率趋势图,通过单次文本查询检索获得,无需任何OCR处理。
引言 (https://weaviate.io/blog/charts-tables-pdfs?utm_source=linkedin&utm_medium=w_social&utm_campaign=query_agent&utm_content=blog_annoucement_808982937#intro)
如果您曾尝试将一堆投资者演示文稿、科学论文或年度报告通过RAG流程处理,那么您一定熟悉这个流程:设置光学字符识别(OCR)或文本提取步骤,选择分块策略,嵌入文本,最后检索信息。历经这一切后,有人可能会询问FY25第二季度的收入情况,而您的检索结果却返回三页不相关的要点列表,因为真正的答案在一个柱状图中——而该图表对您的索引是不可见的。
过去人们不得不这样做——只能将PDF中有趣的部分排除在RAG之外,比如包含趋势的柱状图、对比表格、架构图,以及通常使PDF比纯文本更有价值的所有内容。
在本文中,我们将展示一种更好的方法,它不仅能检索嵌入图表中的丰富信息,还能消除复杂的处理步骤。我们将涵盖:
- 经典RAG:为什么OCR和文本嵌入对某些数据(结构化和非结构化)效果很好,但对富PDF却不然。
- 晚期交互RAG:什么是晚期交互多向量模型,以及为什么它们允许您完全跳过文本提取。
- 拖放即完成:如何在Weaviate云端只需点击几下即可摄取多个PDF。
- 真实示例:针对NVIDIA FY2026季度收益的示例查询,其中每个顶级结果都是回答该问题的精确图表。
- 复杂代理推理:如何用Weaviate查询代理包装相同数据,以生成带有页面图像引用的综合答案。
- 编码化与部署就绪:当您需要在生产环境中部署时,只需大约50行Python代码即可实现相同的摄取流程。
如果您宁愿先看演示再阅读解释,请直接跳转到下方的查询部分。
传统RAG的不足 (https://weaviate.io/blog/charts-tables-pdfs?utm_source=linkedin&utm_medium=w_social&utm_campaign=query_agent&utm_content=blog_annoucement_808982937#how-traditional-rag-falls-short)
首先,让我们看看如今大多数人在为PDF构建RAG流程时的做法:
- OCR(或文本提取)文件(使用Python库或第三方工具)。
- 将文本分块。
- 使用文本嵌入模型嵌入这些块。
- 检索,(可能)重排序,生成。
这个工作流本身没有错,但背后有一个天真的假设,即页面可以被简化为一系列文本令牌,而不损失内容的丰富性。对于新闻稿或维基百科文章,这基本没问题,但对于充满图表的幻灯片、包含对比表格的10-K文件,或包含说明性图表的学术论文,这显然不够。
您可以构建复杂的ETL管道来提取图表并单独向量化它们,但这意味着流程中多了一个模型,不仅增加了技术栈的复杂性,还会在查询时引入合并问题。
使用晚期交互多向量模型,您不需要这些:您嵌入的是页面,而不是其中的文本。模型看到图表的方式和你一样。是的,您没听错,甚至没有分块步骤——页面本身就是一个块。
晚期交互多向量检索,两段话概述 (https://weaviate.io/blog/charts-tables-pdfs?utm_source=linkedin&utm_medium=w_social&utm_campaign=query_agent&utm_content=blog_annoucement_808982937#late-interaction-multi-vector-retrieval-in-two-paragraphs)
在进入演示之前,让我们快速了解一下其工作原理。如果您已经熟悉ColPali / ColBERT,可以跳过或略读。
传统的稠密嵌入模型将整个文档(或块)压缩成一个向量。晚期交互多向量模型则不同:它们将文档编码为一个向量集合,通常每个令牌(或对于我们将要使用的视觉模型,每个图像块)一个向量。在查询时,您的查询也被编码为一个集合,相关性分数是查询令牌和文档令牌之间最佳匹配的总和(这个量称为MaxSim)。
模型不再是询问“这整个页面是否与我的整个问题相关?”,而是可以询问“页面中谈论FY26第四季度的部分是否与我问题中关于‘随时间变化’的部分匹配良好?”。对于图表密集的页面,这正是所需的粒度。模型不必将整个幻灯片总结为一个向量,而是可以为页面的每个区域保留一个向量,查询可以挑选出相关的区域。
因此,实际上有两个明显的优势:
- 因为这是一个视觉模型,您保留了版式、图表、表格等。并且
- 通过对向量集使用MaxSim,您消除了分块的需求。
Weaviate提供multi2multivec-weaviate,这是一个向量化模块,在Weaviate云端运行托管的晚期交互多向量模型,因此您无需托管或管理模型即可从PDF生成多向量。
通过拖放摄取PDF (https://weaviate.io/blog/charts-tables-pdfs?utm_source=linkedin&utm_medium=w_social&utm_campaign=query_agent&utm_content=blog_annoucement_808982937#ingesting-pdfs-by-drag-and-drop)
尝试此功能的最快方法是使用Weaviate云端 (https://console.weaviate.cloud/) 中的拖放导入器。
- 在控制台中打开您的集群。
- 转到集合并创建一个新集合。
- 选择从文件上传的选项,然后拖入您的PDF。
Weaviate控制台中的创建新集合页面,突出了“上传CSV、Excel或PDF”选项 (https://weaviate.io/assets/images/console-create-collection-90227cca6ba85195d4aa8c781acac4d5.png)
上传后的Weaviate控制台:一个NVIDIA FY26第四季度的PDF标记为完成,带有“下一步”按钮 (https://weaviate.io/assets/images/console-upload-completed-4ff5dab338fa25e52498b3028da13c41.png)
这就是整个摄取过程。在后台,Weaviate在做三件事:
- 将每个PDF页面渲染为高分辨率图像。
- 将该图像作为
BLOB属性存储在新集合中。 - 使用
multi2multivec-weaviate模块对其进行向量化,为每个页面生成多个向量。
有几点值得注意:
- 一个对象等于一页。 检索的单位是页面,这也是人类浏览文档的单位。
- 无需OCR。 模型从未将文本视为文本。它将页面视为图像。这就是为什么没有标题的图表与一段文字一样可搜索。
- 向量是压缩的。 晚期交互模型可以为每个页面生成数百个向量,朴素存储会很昂贵。Weaviate使用多向量编码方案 (https://docs.weaviate.io/weaviate/configuration/compression/multi-vectors) 来保持索引的紧凑性。(更多内容也在下面的权衡部分。)
在此演示中,我们导入了NVIDIA的四份FY2026季度投资者演示文稿(第一季度到第四季度)。它们涵盖了截至2026年1月的财政年度,包含了满满的图表和表格,总共92页。整个导入过程大约花费了一分半钟。
审讯NVIDIA的季度收益 (https://weaviate.io/blog/charts-tables-pdfs?utm_source=linkedin&utm_medium=w_social&utm_campaign=query_agent&utm_content=blog_annoucement_808982937#interrogating-nvidias-quarterly-earnings)
在我们对数据进行任何复杂的操作(如代理推理)之前,我们想向您展示原始的检索结果,因为它们本身就令人印象深刻。
摄取完成后,您可以直接在控制台(或任何Weaviate客户端)中查询数据。查询使用纯英文,结果是一个排名的页面列表,内联显示页面图像。
让我们浏览三个查询,向您展示返回了哪些结果。
查询1:“汽车收入随时间如何变化?” (https://weaviate.io/blog/charts-tables-pdfs?utm_source=linkedin&utm_medium=w_social&utm_campaign=query_agent&utm_content=blog_annoucement_808982937#query-1-how-did-automotive-revenue-change-over-time)
汽车收入查询的顶级结果——来自NVIDIA FY26第二季度演示文稿的五季度柱状图
顶级结果是FY26第二季度演示文稿的一页,标题为汽车。左半部分是一个柱状图,显示了五个季度的收入($346M → $449M → $570M → $567M → $586M,同比增长+69%)。右半部分包含三个关于Thor SoC和DRIVE AV的要点。
“随时间”这个短语在这一页的任何地方都没有出现。“变化”这个词也没有。模型不是基于语义匹配文本,而是基于页面的图像。它看到的是五个高度递增的柱子和季度标签,这足以将该页面识别为关于时间趋势问题的匹配项。
查询2:“毛利率趋势” (https://weaviate.io/blog/charts-tables-pdfs?utm_source=linkedin&utm_medium=w_social&utm_campaign=query_agent&utm_content=blog_annoucement_808982937#query-2-gross-margin-trend)
毛利率趋势查询的顶级结果——包含五个季度收入柱状图和毛利率折线图的组合图表,外加一个财务关键绩效指标表
这里的顶级结果是FY26第二季度财务摘要页面。左侧是一个组合图表:五个季度的收入柱状图和非GAAP毛利率折线图。右侧是GAAP/非GAAP关键绩效指标表,包含同比和环比变化。
同样,这一页上没有一处字面上写着“毛利率趋势”,但确实有一个折线图可视化了毛利率从75.7%下降到FY26第一季度的61.0%,然后在FY26第二季度恢复到72.7%。这就是trend的样子,也是模型检索到的内容。
一个附带说明:同一页还包含一个详细的财务表格。这使得它成为一个特别有用的检索目标,如果您接下来要问后续问题,比如“毛利率环比恢复了多少个基点?”答案就在模型已经返回的页面上。更多内容将在下面介绍查询代理时讨论。
查询3:“数据中心收入随时间如何变化?” (https://weaviate.io/blog/charts-tables-pdfs?utm_source=linkedin&utm_medium=w_social&utm_campaign=query_agent&utm_content=blog_annoucement_808982937#query-3-how-did-data-center-revenue-change-over-time)
数据中心收入查询的顶级结果——FY26第四季度收入页面,包含一个同比柱状图和要点
顶级结果是FY26第四季度的收入页面——一个同比柱状图($39.3B → $68.1B),并有一个要点指出数据中心收入自ChatGPT出现以来增长了13倍。这是一个很好的例子,说明当文本是更好的匹配时,模型仍然会尊重文本。在这种情况下,图表的相关性较低,但声明了确切答案的框在该页面上获得了最高的相似度(MaxSim)。因此,您获得了两种模态的最佳结果。
亚军是来自另一个季度的专门的数据中心页面,该页面将该业务部门细分为计算和网络:
亚军:FY26第三季度数据中心页面,将部门细分为计算和网络柱状图
请注意,第二佳匹配不仅仅是“另一页关于数据中心的页面”,而是不同类型的答案——相同的收入,以不同方式细分。这对于想要从相同基础数字的多个视角进行三角测量的代理来说是一个有用的特性。说到这个……
从搜索到答案:Weaviate查询代理 (https://weaviate.io/blog/charts-tables-pdfs?utm_source=linkedin&utm_medium=w_social&utm_campaign=query_agent&utm_content=blog_annoucement_808982937#from-search-to-answers-the-weaviate-query-agent)
向量搜索返回结果,但有时您想要一个答案。
Weaviate查询代理 (https://docs.weaviate.io/agents/query) 是一个托管代理,它将向量检索与多步推理、来源引用和内联页面图像结合在一起。它开箱即用地适用于任何Weaviate云端集群。只需将其指向一个集合,然后提问。
Weaviate查询代理回答一个汽车收入问题,提供一个综合的、多季度的响应
如果我们对同一个集合提问“FY26各季度汽车收入如何变化?驱动因素是什么?”,代理会返回一个综合答案(来自柱状图的数字,加上关于Thor SoC和DRIVE AV采用的要点)以及作为引用的基础页面图像。代理决定了检索哪些页面,查看了它们的视觉内容,并直接引用了幻灯片中的内容。
打开来源面板,您将准确看到哪些页面支持了该答案。引用中包括来自FY26第一季度演示文稿的汽车页面——与我们之前在原始向量搜索中展示的相同类型的柱状图,只是针对不同的季度。
响应中的每一个数值声明都锚定到特定PDF中的特定页面,页面图像就在那里供您验证。您不必盲目信任代理,可以自己阅读幻灯片的内容。
查询代理的来源面板——引用的页面包括来自FY26第一季度演示文稿的实际汽车柱状图
使用Python构建可部署的流程 (https://weaviate.io/blog/charts-tables-pdfs?utm_source=linkedin&utm_medium=w_social&utm_campaign=query_agent&utm_content=blog_annoucement_808982937#building-a-deployable-pipeline-with-python)
拖放式UI是创建POC的最快路径,但大多数生产流程需要代码,以下是大约50行代码的等效实现。
首先,安装依赖项:
pip install "weaviate-client>=4.21" PyMuPDF
然后,将每个PDF页面渲染为2000像素的PNG,并将其作为BLOB存储在使用multi2multivec-weaviate向量化的集合中:
import os
from base64 import b64encode
from pathlib import Path
import fitz # PyMuPDF
from weaviate import connect_to_weaviate_cloud
from weaviate.classes.config import Configure, DataType, Property
def page_to_b64(page, long_edge: int = 2000) -> str:
scale = long_edge / max(page.rect.width, page.rect.height)
pix = page.get_pixmap(matrix=fitz.Matrix(scale, scale))
return b64encode(pix.tobytes(output="png")).decode()
client = connect_to_weaviate_cloud(
os.environ["WEAVIATE_URL"],
auth_credentials=os.environ["WEAVIATE_API_KEY"],
)
if not client.collections.exists("PDF"):
client.collections.create(
name="PDF",
properties=[
Property(name="pdf_name", data_type=DataType.TEXT),
Property(name="page_number", data_type=DataType.INT),
Property(name="page_image", data_type=DataType.BLOB),
],
vector_config=Configure.MultiVectors.multi2vec_weaviate(
image_field="page_image",
),
)
col = client.collections.get("PDF")
相似文章
@SilvioMartinico: 晚期交互多向量检索生态系统正在爆炸式发展。为了帮助区分信号与噪声……
一份精选的顶级模型、引擎、库和数据集的列表,用于晚期交互多向量检索,组织在'Awesome Multivector Retrieval'资源中。
@mixedbreadai: https://x.com/mixedbreadai/status/2071678747439505816
Mixedbread AI 引入了用于后期交互检索的非对称量化技术,通过将文档向量存储为二进制符号同时保持查询向量高精度,实现了32倍的存储缩减且质量损失极小,使得后期交互在十亿级生产系统中变得实用。
Unveil: 多模态文档检索的统一视觉-文本融合与蒸馏
Unveil提出了一个用于多模态文档检索的统一视觉-文本嵌入框架,通过知识蒸馏将语义理解从视觉-文本模型转移到纯视觉模型,实现鲁棒且高效的检索。
@perdactor: 1/ 介绍 Argus-Retriever:首个采用延迟交互的视觉文档检索器,其文档表示会根据查询自适应调整……
Argus-Retriever 是一种新型的延迟交互视觉文档检索器,它根据查询自适应文档表示,在 ViDoRe 基准测试上以更小的索引实现了 SOTA 性能。
Multimodal CoLRAG-TF: 面向复杂PDF的三重过滤检索
介绍了Multimodal CoLRAG-TF,一种四轴融合架构,用于在复杂PDF上进行检索增强生成,整合了稠密文本、BM25、知识图谱三重过滤和图像相似性。在日文灾难教训PDF基准上,多跳推理取得了显著改进。