原文:百度安全验证
摘要
•帮你速读文章内容
RAG(检索增强生成)是大模型应用的重要方向,它大幅缓解了大模型幻觉、信息更新不及时、专业域或私有域知识匮乏等问题,显著提升了大模型在知识库问答、网页搜索、客服等领域的可信赖度。但我们发现,在实际落地中,RAG 仍存在不少问题,如:文档解析结构丢失、大模型生成幻觉、复杂问题无法解答等等。
本文中,阿里云高级算法专家欧明栋分享了阿里云为什么选择 RAG 作为解决方案,以及在实际应用中如何通过文档结构化、大模型微调和 Agent 技术等手段,提升 RAG 的效果和性能。同时,他还介绍了 RAG 在电商、内容、企业知识库和教育搜题等场景中的实际应用,为同行提供了宝贵的实践参考。
今天想跟大家分享阿里云在过去一年多的时间里,如何利用大模型优化 RAG 的实践。
为什么选择 RAG?
RAG 主要用在知识问答领域,前期我们考虑了三种主流的解决方案。
第一种方案是直接使用大模型回答问题。这种方法简单直接,输入一个问题,模型就会给出答案。然而,这种方法可能会遇到幻觉问题,因为模型的预训练数据中可能不包含足够的领域知识和实时信息,就会导致答案不准确。例如,我们在阿里云文档上测试 GPT-4 时,发现准确率不到 30%。
第二种方案是对大模型进行微调。这种方法可以减少幻觉问题,因为模型会集成一些领域知识。但这种方法也有其挑战,比如领域数据可能不足,或者预训练效果不佳,需要进一步的领域知识调整,这会增加成本。此外,微调后的模型需要单独部署,虽然有技术如 LoRA 可以减少成本,但总体上成本仍然较高。
第三种方案,也就是我们采用的 RAG 方法,它不改变大模型本身,而是通过检索领域知识,然后结合问题和检索到的知识,用大模型生成答案。这种方法的优点在于,它使用的是原始知识,因此幻觉问题较少。同时,由于它基于检索,可以实时更新信息,提供更多的实时数据。此外,由于它不是直接生成答案,而是基于搜索结果,所以可以提供生成答案的依据,解决了可溯源的问题。在成本方面,我们发现大模型直答和 RAG 的成本相对较低,主要成本集中在模型推理上。
RAG 架构
在 RAG 架构中,我们的流程始于用户上传文档集合。上传后,我们首先对文档进行解析,然后进行切片处理。切片的目的是为了与后续的向量模型或索引兼容。目前,向量模型在处理较短文本时效果较好,尽管它们也能处理长文本,但在语义搜索的相似度和区分度上可能不够精确,因此需要通过检索和切片来优化。由于大模型支持的上下文长度有限,我们需要将文档切割成更小的切片,以便大模型能够进行有效总结。这一过程是离线的,最终我们会建立一个基于语义切片的索引库,通常采用向量和文本的混合索引方式。
当用户在线提出问题时,我们会对查询进行改写。查询改写主要分为两个方面:首先,在多轮对话中,我们需要考虑历史信息来进行查询改写,以形成一个语义完整的查询,然后进行搜索;其次,对于复杂的查询,我们会进行改写和拆解,以便更准确地搜索到相关信息。在改写后的查询基础上,我们会找到一些相近的文档切片,然后利用大语言模型来生成答案。这个过程确保了我们能够为用户提供准确和相关的回答。

RAG 的效果问题及归因
虽然 RAG 架构能够解决大部分简单问题,但在处理复杂场景或文档时,会遇到一些挑战。
首先,幻觉问题依然存在。这可能是因为文档在切片过程中出现不完整或解析错误,导致模型在生成答案时出现幻觉。此外,即使在 RAG 场景下,大模型本身也可能产生幻觉,这种幻觉与直接生成的幻觉不同,它是基于检索结果之外的信息进行回答。
其次,拒答现象也较为常见。这主要是因为检索结果不完整或未能检索到相关内容,导致模型无法给出答案。
第三,回答不完整的问题。这可能是因为文档切片本身不完整,或者召回过程中不完整。在处理复杂问题时,如果答案较长,比如步骤类问题,模型可能会遗漏关键信息。
第四,回答内容与问题不相关。这可能是大模型的一个普遍问题,模型倾向于给出较长的答案,而这些答案虽然不是错误的,但可能与问题不相关。
最后,响应速度问题。在服务客户时,我们发现如果需要达到较好的效果,可能需要使用 72B 参数以上的模型,这会导致回答的反


3196

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



