1.RAG技术背景与挑战
2.RAG的核心概念
3.RAG的工作流程与架构
4.RAG的优化方法
RAG的提出
•Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks是一篇重要的论文(2020年5月)
•REALM: Retrieval-Augmented Language Model Pre-Training (2020)就将BERT预训练模型和一个可微的检索模型 结合起来实现了这一思路,但REALM只探索了抽取式开放域问答。而本文作者面向更难的生成式开放域问答, 提出了 基于seq2seq结构的检索增强生成模型(retrieval-agumented generation, RAG)。
LLM时代的RAG
• LLM难以更新维护知识、不易掌握长尾知识、以及泄露私人训练数据的风险。
• 将 RAG 引入大模型的上下文学习 (In-Context Learning, ICL) 中,可以有效减轻上述问题。
• 在推理过程中, RAG 动态地从外部知识源中检索信息,并利用这些检索到的数据作为组织答案 的参考。这极大地提高了答案的准确性和相关性, 有效地解决了大语言模型中的幻觉式错误问 题。
• RAG(中文为检索增强生成) = 检索技术 + LLM 提示。 巧妙地结合了生成模型的强大功能和检 索模块的灵活性是解决LLM在知识的局限性、幻觉问题、数据安全性的一套有效方案,
RAG的工作流程与架构
RAG 对比微调
• RAG 和微调可以相互补充,而非相互排斥。
• 准确性: RAG 通过关联外部知识来提高答案的准确性,有效减少了语言模型中出现的虚假信息,使得 生成的回答更加准确可信。
• 及时性:使用检索技术能够识别到最新的信息,这使得 RAG 在保持回答的及时性和准确性方面,相 较于只依赖训练数据的传统语言模型有明显优势。
• 信任度:通过引用信息来源,用户可以核实答案的准确性,增强了人们对模型输出结果的信任。
• 个性化:通过索引与特定领域相关的文本语料库, RAG 能够为不同领域提供专业的知识支持。
• 安全性: RAG 通过数据库中设置的角色和安全控制,实现了对数据使用的更好控制。相比之下,经过 微调的模型在管理数据访问权限方面可能不够明确。
• 经济性: RAG 在处理大规模数据集方面更具有扩展性。无需更新所有参数和创建新的训练集。
RAG的工作流程与架构(演变)
RAG的优化路径:
查询重写
RAG优化-分层索引
RAG优化-语句窗口检索器
RAG优化- 自动合并检索器(或父文档检索 器)
混合检索
编码器微调
• 有做过一项测试,对 bge-large-en-v1.5 编码器进行微调,发现对于检索效果提升影
响有限。因为针对搜索优化的最新 Transformer 编码器已经非常高效。
排序器微调
• 如果不完全信任基础编码器,可以使用交叉编码器对检索到的结果进行重排。
• 这个过程是这样的:你把查询和每个前 k 个检索到的文本块一起送入交叉编码器,中 间用 SEP (分隔符) Token 分隔,并对它进行微调,使其对相关的文本块输出 1,对 不相关的输出 0。一个这种微调过程的成功案例可以在这里找到,结果显示通过交叉 编码器微调,成对比较得分提高了 4%。
LLM 微调
• 让模型利用了提供的上下文来生成答案。
RAG2.0的到来
RAG-评估
• 忠诚性:强调回复内容必须忠诚于上下文(指检索得到的内容)
• 答案相关性:答案必须是回答给定问题的。
• 上下文相关性:这里是要求检索到的内容必须足够和问题相关, 强调的是检索模块的能力。
• 抗噪性:检测生成模块对噪音(问题无关) 信息的抵抗能力。
• 无答案拒答:在无答案或者内容不正确的情况下拒绝回答的能力。
• 信息整合能力:考察模型能否集成多个文档的内容来回答复杂问 题的能力。
rageval
https://github.com/CLUEbenchmark/SuperCLUE- RAG
RAG中如何处理文档中的图表
•目前,主要的表格处理技术包含以下几种:
1.利用多模态LLM(如GPT-4V)来识别表格并从每个PDF页面中提取信息;
2.利用专业的表格检测模型(如TableTransformer),来辨别表格结构;
3.使用开源框架(如unstructured或者目标检测模型。这些框架可以对整个文档进行全面的解析,并
从解析的结果中提取与表相关的内容;
4.使用Nougat、Donut等端到端模型(不需要OCR)来解析整个文档并提取与表相关的内容,允许容易地
检索表标题。
表格内容如何索引
•为了尽可能保留表格内的信息,表格的索引技术大多使用@文档摘要索引结构。
•小块的内容可以是来自表的每一行的信息或表的摘要。
•大块的内容可以是图像格式、纯文本格式或LaTeX格式的表。
•当前最主流的解决方案是:
- 1.表格解析:使用Nougat,它的表格检测比unstructured的更有效,此外, Nougat可以很好地提取表格标题,非常方便与表格关联
- 2.文档摘要索引结构:小块的内容包括表格摘要大块的内容包括LaTeX格式的相应表格和文本格式的表格标题。
- 3.表格摘要获取方法:将表格和表格标题发送给LLM进行摘要。这种方法的优点是,它可以有效地解析表,同时综合考虑表摘要和表之间的关系,而且还不需要多模型LLM的需求,
- 从而节省了成本。
• Open RAG