企业知识库中的模态数据不止文本一个模态,传统的RAG无法解决多模态场景下的问答, 问题提出 :如何检索到与用户问题相关且有用的多模态数据?以及如何将这些数据整合成一个连贯的多模态答案?来看一个简单有效的多模态RAG框架-MuRAR。
MuRAR框架
在MuRAR框架的设计中,目标是生成一个高质量的多模态答案(multimodal answer),该答案通过整合与用户问题相关的多模态数据来提供连贯且信息丰富的内容。
用户界面设计:用户输入问题;显示检索到的相关文本片段;显示每个文本片段及其可能的来源;显示检索到的多模态数据(如图像和视频);最终的多模态答案,包含文本和多模态元素的整合。
- 设计目标
形式化 :给定用户问题
和一组多模态数据
,其中:
- 表示文本文档片段的集合。
- 表示图像的集合。
- 表示表格的集合。
- 表示视频的集合。
目标 是生成一个多模态答案
,其中
是一个函数,用于将检索到的多模态数据
组织成一个连贯且有用的答案。
- 文本答案生成
文本答案生成组件采用检索增强生成(RAG)的方法。具体步骤如下:
- 文本片段检索 :首先,根据用户查询
检索相关的文本文档片段
。这一步使用了一个预训练的文本嵌入模型,该模型在内部标注的数据集上进行了微调,以识别哪些文本片段与用户查询相关。 2. 创建向量索引 :使用FAISS库对文本文档片段进行向量化,创建向量索引。这些向量索引用于计算用户查询
与每个文本文档片段
之间的余弦相似度。 3. 选择相关片段 :对于每个用户查询
,选择与查询最相关的五个文本片段。 4. 生成初始文本答案 :使用一个大型语言模型(LLM)结合用户查询
和检索到的五个文本片段来生成初始文本答案
。
生成初始文本答案提示词
- 基于源的多模态检索
基于源的多模态检索组件分为两个步骤:源归属和节级多模态数据检索。
- 源归属 : 将初始文本答案
分割成多个句子,每个句子代表一个连续的文本答案片段
。计算每个文本答案片段
与其在
中的每个文本文档片段的余弦相似度。将文本文档片段
识别为
的来源,如果相似度得分低于0.6,则不分配来源。 2. 节级多模态数据检索 :对于每个文本答案片段
及其对应的来源
,定位包含
的原始网页文档。确定
所在的节段,并收集该节段内的所有多模态数据(如图像、表格和视频)。使用上下文文本特征和LLM生成的特征来 表示多模态数据 。例如,使用GPT-4生成的图像标题和HTML中的"alt"属性来表示图像。
检索时,使用相同的微调嵌入模型计算多模态数据的文本嵌入。基于文本答案片段
与多模态数据的文本嵌入之间的余弦相似度来 检索多模态数据 。 只选择得分最高的多模态数据 。为了避免重复,只保留从检索结果中得分最高的多模态数据。
- 多模态答案优化
在检索到多模态数据后, 使用LLM提示来优化初始文本答案,生成最终的多模态答案 。提示包括:
- 用户问题
。 2. 初始文本答案
。 3. 检索到的多模态数据及其上下文文本特征。
多模态答案细化的提示词
为了指导LLM生成多模态答案,提示中插入了占位符,用于替换为检索到的多模态数据的描述。占位符包括多模态数据的URL和上下文文本特征,以确保LLM在生成答案时能够整合相关信息。
参考文献
MuRAR: A Simple and Effective Multimodal Retrieval and Answer Refinement Framework for Multimodal Question Answering,https://arxiv.org/pdf/2408.08521v2