往期内容看了看多模态RAG在文档问答上的相关内容及简单实践:
- 【RAG&多模态】多模态RAG-ColPali:使用视觉语言模型实现高效的文档检索
- 【多模态&RAG】多模态RAG ColPali实践
- 【RAG&多模态】多模态RAG-VisRAG:基于视觉的检索增强生成在多模态文档上的应用
- 【RAG&多模态】再看多模态RAG进行文档问答的方案
- 【RAG&多模态】mR^2AG:基于知识的多模态检索-反思增强生成方法浅尝
本文单独来看看检索部分的多模态嵌入部分。
(a)传统方法;(b)本文方法
局限性 : 现有的检索范式缺乏跨模态的统一编码过程,导致两个问题:
- 预处理工作繁琐:需要专门的处理来应对各种文档类型和内容模态,而这些处理往往不完美。例如,HTML文件由于其多样的结构,复杂性较高,使得单一工具难以准确解析所有信息。同样,ppt和PDF通常需要OCR模型来提取文本并分别处理其他内容类型,如表格和图表。处理这些长尾问题较为复杂。
- 破坏文档原始布局信息:解析过程可能导致文档布局信息丢失。文档的视觉呈现可以传达通过内容提取难以捕捉的关键信息。例如,除了文本和图像的内容外,这些元素在文档中的 大小和位置 可能编码了一些信息。
解决手段 :提出了文档截图嵌入(Document Screenshot Embedding, DSE),将不同格式和模态的文档统一为一种形式进行直接文档编码和索引: 截图 。与使用各种工具从不同格式的文档中提取文本和图像不同,截图易于获取并且文档的所有信息在视觉上都得到了保留。如上图(b)所示,DSE将给定文档的截图进行embedding。
方法
文档检索任务的任务定义:给定一个查询
和一个包含文档
的语料库
,任务是识别出与查询
最相关的
个文档,其中
。相关性是通过相似性度量
来确定的。
文档截图embedding
采用 双编码器架构 进行密集检索,其中文档截图和用户文本查询分别通过视觉编码器和文本编码器编码成密集向量。
多模态大模型作为文档截图编码器
视觉编码器
一个文档截图
,首先由视觉编码器
处理,生成隐藏层表示。序列的长度由视觉编码器的图像tokenizer决定。以 clip-vit-large-patch14-336l 为例,任何给定的截图首先转换为
像素的图像,然后分成
个块(即总共 576 个块),每个块由 14
14 像素组成。每个块展平并通过可训练的线性投影映射到块嵌入。块嵌入由视觉编码器编码成隐藏层表示。但是, 如果截图包含大量文本(例如维基百科网页),576 个块的潜在嵌入可能无法捕捉截图中的细粒度文本信息 。
视觉-语言模型
为了视觉编码器中的问题,利用多模态大模型 Phi-3-vision ,其使用与 clip-vit-large-patch14-336 相同的图像tokenizer,但可以通过将图像裁剪成子图像来表示更多的块。例如,给定一个截图,可以选择将其分成
个块。给定的截图转换为
像素的图像,并裁剪成
个子图像,每个子图像有
像素。同样,每个子图像独立编码成 576 个块潜在表示。在这里,Phi-3-vision 进一步将整个截图转换为
像素,并编码成额外的 576 个块潜在表示以捕捉全局信息,总共生成
个块潜在表示,如上图中左侧所示。此外,每四个块潜在表示连接并投影成一个嵌入,作为语言模型输入。这个过程产生
个块潜在嵌入作为语言模型
的输入。
编码后的块潜在嵌入与文本提示一起作为后续语言模型的输入:“< s> What is shown in this image?</ s>”。这里,
是一个特殊的占位符标记,被视觉编码器的块潜在嵌入序列替换。为了使用具有单向注意力的语言模型聚合序列信息,使用最后一个隐藏状态的序列标记
的嵌入作为文档截图嵌入:
对比学习
query和文档之间的相似性通过embedding之间的余弦相似度计算:
在训练期间,embedding模型使用 InfoNCE 损失进行优化:
其中
表示正文档,
表示与查询
无关的一组负文档,包括难负样本和批次内负样本。
是在实验中设置为 0.02 的温度参数。此时只考虑文本查询,它们直接使用模板 f“< s>{query}< /s>” 输入到语言模型中,
的最后一个隐藏状态作为query嵌入,
。
实验
监督检索效果
零样本检索效果
补丁序列长度的影响
不同数量的作物输入图像下,DSE的有效性和效率之间的权衡。推理速度是在单个H100 GPU上通过BF16精度和FlashAttention实现的
参考文献
Unifying Multimodal Retrieval via Document Screenshot Embedding,https://arxiv.org/pdf/2406.11251