我们今天来看继续看RAG的两个工作,一个是一个面向PDF文档的RAG方案,可以理解为混合多模态检索,另一个是关于RAG与类COT的结合进展CoV-RAG。
两个工作,都很工程化,算法成分不多 ,也 很粗糙,但也看看。
供大家参考并思考。
一、一个面向PDF文档的多模态RAG方案
看到一个工作,《PDF-WuKong: A Large Multimodal Model for Efficient Long PDF Reading with End-to-End Sparse Sampling》(https://arxiv.org/pdf/2410.05970,https://github.com/yh-hust/PDF-Wukong),处理包含文本和图像的长PDF文档,如学术论文。
其标题取得很宏大,实际上就是一个多模态RAG。
可以看几个点:
一个是当前处理长文档的代表模型。

另一个是PDF-WuKong架构。
1、架构
PDF-WuKong的架构包括文档解析器、稀疏采样器和模型。文档解析器将PDF文档转换为交错的文本块和图像。稀疏采样器编码文本块和图像,并缓存它们的嵌入向量。当用户提出查询时,模型通过简单的相似性度量来采样最相关的内容。最后,查询和采样的内容被输入到大型语言模型中生成答案。

其中,稀疏采样器(SparseSampler)先对所有文本块和图像进行编码,并将候选向量嵌入缓存,计算查询嵌入与缓存的文本/图像嵌入之间的相似性,然后选择与查询最相关的top-k文本块和图像作为证据。
2、推理流程
在这个算法中,最关键的部分是稀疏采样阶段,它通过计算查询与文档内容(包括文本和图像)之间的相似度,来选择最相关的部分作为输入传递给大型语言模型。

1)输入:算法接收一个PDF文档D和用户查询q作为输入。
2)输出:算法的输出是生成的答案a。
3)初始化:初始化文本编码器En_T、图像编码器En_I和大型语言模型LLM。
4)文档解析阶段:解析输入的PDF文档D,将其转换为文本块{T1,T2,...,Tn}和图像块{I1,I2,...,Im}。
5)稀疏采样阶段:对所有文本块和图像进行编码,并将它们的嵌入向量缓存起来:ET={eT1,eT2,...,eTn}和EI={eI1,eI2,...,eIm}。对用户查询q进行编码,得到查询嵌入eq。计算查询嵌入eq与缓存的文本/图像嵌入之间的相似度:ST={Sim(eq,eTi)|i=1,2,...,n}和SI={Sim(eq,eIj)|j=1,2,...,m}。选择与查询最相关的top-k文本块和图像:(T,I)top=TopK(ST,SI,k)。
6)答案生成阶段:将查询q和选择的文本和图像标记输入到LLM中:a=LLM(q,(T,EI)top)。返回生成的答案a。
3、训练流程
在这个训练流程中,模型通过对比学习损失Lrep来学习如何将查询和与查询相关的正样本特征拉近,同时将查询和与查询不相关的负样本特征推远,这有助于模型更好地理解文档内容和用户查询之间的关系。其实这就是simcse的思想。
接着,模型通过交叉熵损失LQA来学习如何根据查询和相关文档内容生成准确的答案。
最终,这两个损失函数联合起来,以端到端的方式优化模型,使得模型能够理解文档内容,还能够准确回答用户的查询。

1)输入:算法接收一个PDF文档D,用户查询q,以及真实答案gt作为输入。
2)输出:算法的输出是最终的损失函数Ltotal。
3)初始化:初始化文本编码器En_T,图像编码器En_I,和大型语言模型LLM。
4)数据准备阶段:从解析器中获取文本块{T1,T2,...,Tn}和图像块{I1,I2,...,Im}。
5)多模态编码阶段:对用户查询、正样本和负样本进行编码:eq←En_T(q),ET={eTP,eTN}←En_T({TP,TN}),EI={eIP,eIN}←En_I({IP,IN})。
6)计算对比学习损失:使用对比学习的方法对齐文本和图像特征与查询:Lrep=-1/PΣ[ei∈EP]log(exp(sim(eq,ei))/τ)/Σ[ei∈EP]exp(sim(eq,ei))/τ+Σ[ej∈EN]exp(sim(eq,ej))/τ,其中sim(eq,ei)和sim(eq,ej)分别代表查询与正样本/负样本之间的相似度,τ是控制相似度得分比例的温度参数,P是正样本的数量。
7)输出MLLM的预测:将查询、正样本文本和正样本图像标记输入到LLM中:a←LLM(q,TP,eIP)。
8)计算交叉熵损失:计算输出答案a和真实答案gt之间的交叉熵损失:LQA(a,gt)。
9)端到端优化模型:根据联合损失更新模型参数:Ltotal=Lrep+LQA。
10)返回最终损失Ltotal。
所以可以很清晰的看到,这个工作只是一个多模态检索RAG的雏形而已,并无太多新意。
二、关于RAG与COT结合进展,CoV-RAG
接着再看一个RAG的工作,《Retrieving, Rethinking and Revising: The Chain-of-Verification Can Improve Retrieval Augmented Generation》(https://arxiv.org/pdf/2410.05801),提出了验证链增强检索增强生成(CoV-RAG)的方法,将验证模块集成到RAG中,进行评分、判断和改写。
可以看几个有趣的点。
1、两种RAG错误
一个是两种错误,外部检索错误以及内部生成错误。

另一个是针对这两种错误的采用的方案:
为了纠正外部检索错误,CoV-RAG使用修订后的查询检索新知识。
为了纠正内部生成错误,在训练过程中将质量评估和验证任务与思维链推理(CoT)统一。
2、CoV-RAG框架
也就是CoV-RAG(Chain-of-Verification for Retrieval-Augmented Generation),示意图如下:

它由三个主要部分组成:检索器(Retriever)、生成器(Generator)和链式验证(Chain-of-Verification)。下面是对这三个部分的详细解读:
1)检索器(Retriever)
检索器的任务是根据输入的问题(Question)检索出与之最相关的前五个段落作为参考(References)。这些参考段落包含了可能用于回答问题的外部知识。
2)生成器(Generator)
生成器利用检索器提供的参考段落和输入问题来生成答案(Answer)。这个过程是通过大型语言模型(LLM)完成的,模型根据问题和相关参考生成一个回答。
3)**链式验证(Chain-of-Verification,CoV)
链式验证模块是 CoV-RAG 的核心,它负责评估生成的答案和检索到的参考的准确性。这个评估过程包括打分(Scoring)和判断(Judgment)。
其中:
打分(Scoring):对参考的正确性(Reference Correctness)和答案的不同方面(如正确性、引用准确性、真实性、偏见和简洁性)进行打分。
判断(Judgment):基于打分结果,判断答案是否准确、真实,并且是否清晰地回答了问题。如果答案不准确,链式验证模块会决定是否需要对检索到的知识进行更新。
修订(Revise):如果链式验证模块认为有必要,它会生成一个修订后的问题(Revised Question),以便检索器可以进行重新检索(Re-retrieval),以期获得更准确的参考信息,从而提高答案的事实性。这个过程可以是多次迭代的,以确保最终生成的答案尽可能准确。
3、推理流程
具体的推理步骤,可以看看Algorithm 1,示意图如下:

这个算法的核心在于通过链式验证机制来提高答案的准确性和事实性。在初步生成答案后,模型会评估答案的质量,并在必要时通过修订问题和重新检索来迭代改进答案。这个过程可以多次迭代,直到生成一个高质量、准确的答案。
其输入(Input):一个待回答的问题(Question)。
**1)检索(Retrieval)**阶段,使用检索器(Retriever)根据问题检索相关的参考(References)。这些参考是外部知识源中的段落,按与问题的相关性排序。
2)生成答案(Generate Answer阶段,利用生成器(Generator)基于问题和检索到的参考生成一个初步答案(Initial Answer)。
**3)验证结果预测(Predict Verification Results)**阶段,生成器再次预测验证结果,包括参考分数(Reference Score)、答案分数(Answer Score,涵盖正确性、引用准确性、真实性、偏见和简洁性等多个维度)、判断(Judgment,即答案是否准确、真实、清晰)以及修订后的问题(Revised Question)。
**4)重新检索指示(Re-retrieval Indicator)**阶段,根据验证结果,获取一个重新检索指示(Re-retrieval Indicator,σ),以决定是否需要根据修订后的问题更新外部上下文知识。
**5)条件重新检索(Conditional Re-retrieval)**阶段,如果重新检索指示为真(True),则检索器根据修订后的问题重新检索新的相关参考。
**6)重新生成答案(Re-generate Answer)**阶段,如果进行了重新检索,生成器会基于初始问题和新的参考再次生成答案(Revised Answer),并更新初始答案。
最终,算法返回最终确定的答案。
总结
本文今天看了RAG的两个工作,一个是一个面向PDF文档的RAG方案,可以理解为混合多模态检索,另一个是关于RAG与类COT的结合进展CoV-RAG。
其中针对特定问题所采用的应对方式,当工程论文来看。
参考文献
1、https://arxiv.org/pdf/2410.05970
2、https://arxiv.org/pdf/2410.05801
如何系统的去学习大模型LLM ?
大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。
事实上,抢你饭碗的不是AI,而是会利用AI的人。
继科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?
与其焦虑……
不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!
但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。
针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

一、LLM大模型经典书籍
AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

二、640套LLM大模型报告合集
这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)

三、LLM大模型系列视频教程

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

LLM大模型学习路线 ↓
阶段1:AI大模型时代的基础理解
-
目标:了解AI大模型的基本概念、发展历程和核心原理。
-
内容:
- L1.1 人工智能简述与大模型起源
- L1.2 大模型与通用人工智能
- L1.3 GPT模型的发展历程
- L1.4 模型工程
- L1.4.1 知识大模型
- L1.4.2 生产大模型
- L1.4.3 模型工程方法论
- L1.4.4 模型工程实践
- L1.5 GPT应用案例
阶段2:AI大模型API应用开发工程
-
目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
-
内容:
- L2.1 API接口
- L2.1.1 OpenAI API接口
- L2.1.2 Python接口接入
- L2.1.3 BOT工具类框架
- L2.1.4 代码示例
- L2.2 Prompt框架
- L2.3 流水线工程
- L2.4 总结与展望
阶段3:AI大模型应用架构实践
-
目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
-
内容:
- L3.1 Agent模型框架
- L3.2 MetaGPT
- L3.3 ChatGLM
- L3.4 LLAMA
- L3.5 其他大模型介绍
阶段4:AI大模型私有化部署
-
目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
-
内容:
- L4.1 模型私有化部署概述
- L4.2 模型私有化部署的关键技术
- L4.3 模型私有化部署的实施步骤
- L4.4 模型私有化部署的应用场景
这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

3533

被折叠的 条评论
为什么被折叠?



