本篇来看下 RAG 的架构优化策略
利用知识图谱(KG)进行上下文增强
在现有的向量数据库中,典型的上下文增强可能面临挑战:难以捕捉长距离的关联知识,信息稀疏性高(尤其是当LLM上下文窗口有限时)。
这种情况下,知识图谱(KG)的引入为上下文增强提供了新的视角,通过并行链接向量库和知识图谱,以图形数据的丰富性强化上下文的信息量。
具体的操作流程是:针对用户的查询,运用NL2Cypher技术强化知识图谱;常规的图采样技术用以增进知识图谱的上下文信息。
对策包括:基于查询中的关键词提取出实体,并将这些实体作为种子节点在知识图谱中进行图采样(在必要的情况下,可以将知识图谱中的节点与查询实体进行向量化,通过向量相似度来选择种子节点),最终将采样得到的子图转化为文本片段,以此实现上下文信息的增强。
让大模型对召回结果进行筛选
在传统的 RAG 架构中,向量数据库常常面临一个问题:即使在知识图谱协助增强上下文的情况下,回调的上下文也会不加区分地与查询合并,并提交给大模型来生成答案。
但有时回调的上下文可能与查询无关或存在矛盾,这种情况下应当放弃使用这些上下文,尤其是在大模型的上下文窗口有限(当前常见为4k窗口)的情况下。
Self-RAG
Self-RAG 是更主动和智能的实现方式:
1、 判断是否需要额外检索事实性信息(retrieve on demand),仅当有需要时才召回;
2、平行处理每个片段:生产prompt + 一个片段的生成结果;
3、使用反思字段,检查输出是否相关,选择最符合需要的片段;
4、再重复检索;
5、生成结果会引用相关片段,以及输出结果是否符合该片段,便于查证事实。
Self-RAG 的重要创新
Self-RAG 的 Reflection tokens (反思字符) 通过生成反思字符这一特殊标记来检查输出。
这些字符会分为 Retrieve 和 Critique 两种类型,会标示:检查是否有检索的必要,完成检索后检查输出的相关性、完整性、检索片段是否支持输出的观点。模
型会基于原有词库和反思字段来生成下一个 token。
Self-RAG 的训练过程
在模型训练过程中,采取一种创新方法------融入了反思性标记到其词汇库中,使得模型能够产生包含这些符号的文本,这是一种反馈循环的具现。
它的训练在一个特定的语料库中展开,该库中填满了Critic模型所预测的含有反思标记的文章片段。
Critic模型扮演着品质评估者的角色,对它发掘的段落以及任务成果进行质量判定。通过这些标记不断完善训练资料库,并培育模型在推断环节中自主产生这些标记。
在训练Critic模型时,为避免手动打标签的昂贵成本,转而使用GPT-4生成这些标记,随后将这些数据融合到内部的Critic模型中。
每一个反思标记都是通过几个简单示例来明确具体说明。例如,通过检索标记评估是否引入外部资料能够提升输出的品质。
在生成模型的训练中,结合了检索和Critic模型来增强原始输出,以模拟推理过程。
针对每段内容,Critic模型会评估是否有其他段落能改善生成结果。如若可以,就会加上Retrieve=Yes的标记,并寻找最相关的前几段文章。然后Critic模型会评价每一段的相关程度和支持性,并加上恰当的标记。
最终通过引入反思标记来提升结果的内容。
在这个经过改进的训练库上,通过标准的下一个词标准来训练生成模型,以预测目标输出和反思标记。训练期间,已检索到的文本会被遮蔽,词汇库则通过添加Critique和Retrieve等反思性标记而扩展。这种方法在成本效益上优于依赖独立奖励模型的其他方案。Self-RAG模型还集成了特殊标记以控制和评估自身的预测,从而实现更精细化的产出。
Self-RAG 的推理过程
Self-RAG 通过运用反思性标记对自己的输出进行自评,这使得它在推理过程中展现出调整与适应能力。
模型可根据具体任务进行定制化调整,它通过增加检索的文段数量来优化对事实准确性的重视,或是在开放性任务中突出创新能力。此模型能决定何时进行文段的检索,或者依据预设的阈值来启动该过程。
在检索需求出现时,生成器会同时对多段内容进行处理,形成多种可能的输出候选。
通过进行分段级的beam search来挑选出最优序列。每段内容的得分都会根据Critic的评分进行更新,这个评分是各个批评性标记类型的标准化概率加权和。 在推理过程中,可以对这些权重进行调整,以便根据需要定制模型的行为方式。
Self-RAG 无需进一步训练即可进行自我调整与适应。
多向量检索器多模态RAG篇
多向量检索器(Multi-Vector Retriever)核心想法是将文档(用于答案合成)和引用(用于检 索)分离,这样可以针对不同的数据类型生成适合自然语言检索的摘要,同时保留原始的数据内容。它可以与多模态 LLM 结合,实现跨模态的 RAG。
推进文本、表格和图像的多模态RAG扩展
1、对文本和表格数据进行摘要处理,并将摘要内容及原始图像通过多模态嵌入模型转换为向量,存储于综合向量索引系统中。在用户提出查询时,根据查询内容提取相应的文本、表格和图像信息,并输送给多模态LLM以生成回应。
2、首先借助多模态大型模型(如GPT4-V、LLaVA、FUYU-8b)对图像内容进行概要生成。紧接着,对文本、表格和图像的概要进行向量化处理,存入综合向量索引系统。若用于生成回答的多模态大模型不可用时,也可根据查询内容提取原始文本、表格及图像概要。
3、与第二项相似,在用户对话时根据查询提取原始文本、表格和图像资料。综合这些信息,构建完整的激发句,求助于多模态大型模型以产出相应的回答。
在这其中,数据保密性至关重要,可以使用LLaVA-7b模型来提炼图像摘要,借助Chroma作为向量数据库,Nomic的GPT4All作为源模型,结合多向量索引器,再通过Ollama.ai的LLaMA2-13b-chat模型来生成用户询问的答案。
小结
本篇文章介绍了 RAG 的架构优化策略,主要包括利用知识图谱进行上下文增强以及让大模型对召回结果进行筛选的方法。在筛选召回结果方面,引入 Self-RAG 方法,通过自评和反思来智能调整模型输出,提高答案的准确性和相关性。还介绍了多向量检索器和多模态 RAG 的应用、它能有效提升系统的多模态能力和响应效率。
OK,以上就是本次分享,欢迎点赞👍、收藏⭐、评论💬
🔊说到这里,我们不难发现:成长与发展是主旋律!!自荐我和机械工业出版社联合出版的 《程序员成长手记》 一书:全书分为3大模块、8个章节:从入门程序员到程序员自驱成长,回归纸质阅读,相信能给你一个更全局的程序员视野,提供成长帮助。京东搜"程序员成长手记"
🤠关注掘金安东尼 ,陪你一起度过漫长编程岁月
参考