以下是关于最新的 RAG 进展和业界实践的详细介绍:
RAG 是检索增强生成(Retrieval Augmented Generation)的简称,是当前最火热的企业级 LLM 应用方案。概括来说,它是知识检索与内容生成的结合,就像大模型的开卷考试,谁的资料更全、翻找更快更准,结果往往更好。
Lewis 等人(2021)提出了一个通用的 RAG 微调方法,使用预训练的 seq2seq 作为参数记忆,用维基百科的密集向量索引作为非参数记忆,并通过神经网络预训练的检索器访问。RAG 在 Natural Questions、WebQuestions 和 CuratedTrec 等基准测试中表现出色,用 MS-MARCO 和 Jeopardy 问题进行测试时,生成的答案更符合事实、更具体、更多样,FEVER 事实验证使用 RAG 后也得到了更好的结果,这表明 RAG 是一种可行的方案,能在知识密集型任务中增强语言模型的输出。
目前,大部分公司倾向于使用 RAG 方法进行信息检索,因为相比长文本的使用成本,使用向量数据库的成本更低。在 RAG 应用中,一些公司会使用微调的 Embedding Model 增强检索能力,也有些公司会选择使用知识图谱或者 ES 等非向量数据库的 RAG 方法。一个正常的模型使用 RAG 仍是当前主流。由于大语言模型存在信息滞后和不包含业务知识的特点,常需外挂知识库协助解决问题,此时 Embedding 模型的召回效果直接影响大模型的回答效果,所以很多场景下需要微调 Embedding 模型提高召回效果。
最近,基于检索器的方法越来越流行,常与 ChatGPT 等流行 LLM 结合使用来提高其能力和事实一致性。例如,在 LangChain 文档中可以找到一个使用检索器和 LLM 回答问题并给出知识来源的简单例子。
此外,来自马里兰大学、劳伦斯利弗莫尔国家实验室、纽约大学的研究学者提出了一个大模型微调的方法,在微调时只需要在 Embedding 层上加随机噪声即可大幅度提升微调模型的对话能力,且不会削弱模型的推理能力。用 Alpaca 微调 LLaMA-2-7B 可以在 AlpacaEval 上取得一定表现,而用加了噪声的嵌入则表现更佳,不过该工作只在较小的模型上进行微调。
Lewis等人(2021)提出一个通用的RAG微调方法。这种方法使用预训练的seq2seq作为参数记忆,用维基百科的密集向量索引作为非参数记忆(使通过神经网络预训练的检索器访问)。这种方法工作原理概况如下:图片援引自:[Lewis et el.(2021)(opens in a new tab)](https://arxiv.org/pdf/2005.11401.pdf)RAG在[Natural Questions(opens in a new tab)](https://ai.google.com/research/NaturalQuestions)、[WebQuestions(opens in a new tab)](https://paperswithcode.com/dataset/webquestions)和CuratedTrec等基准测试中表现抢眼。用MS-MARCO和Jeopardy问题进行测试时,RAG生成的答案更符合事实、更具体、更多样。FEVER事实验证使用RAG后也得到了更好的结果。这说明RAG是一种可行的方案,能在知识密集型任务中增强语言模型的输出。最近,基于检索器的方法越来越流行,经常与ChatGPT等流行LLM结合使用来提高其能力和事实一致性。LangChain文档中可以找到[一个使用检索器和LLM回答问题并给出知识来源的简单例子(opens in a new tab)](https://python.langchain.com/docs/use_cases/question_answering/quickstart)。
目前,大部分公司倾向于使用RAG方法进行信息检索,因为相比长文本的使用成本,使用向量数据库的成本更低。而在RAG应用过程中,一些公司会使用微调的Embedding Model,以增强RAG的检索能力;而有些公司会选择使用知识图谱或者ES等非向量数据库的RAG方法。一个正常的模型使用RAG仍然是当前的主流选择。由于大语言模型信息的滞后性以及不包含业务知识的特点,我们经常需要外挂知识库来协助大模型解决一些问题。在外挂知识库的过程中,Embedding模型的召回效果直接影响大模型的回答效果,因此,在许多场景下,我们都需要微调Embedding模型来提高召回效果。来自马里兰大学、劳伦斯利弗莫尔国家实验室、纽约大学的研究学者提出了一个大模型微调的方法;在微调时只需要简单的在Embedding层上加随机噪声即可大幅度提升微调模型的对话能力,而且也不会削弱模型的推理能力。用Alpaca微调LLaMA-2-7B可以在在AlpacaEval上取得29.79%的表现,而用加了噪声的嵌入则提高到64.69%。不过该工作只在较小的模型上进行微调。
RAG是检索增强生成(Retrieval Augmented Generation)的简称,是当前最火热的企业级LLM应用方案。RAG概括起来就是知识检索+内容生成。这么说太抽象,可以理解为大模型的开卷考试,既然是开卷考试,那么谁带的书和资料内容更全,谁翻书翻的更快更准,谁开卷考试的结果就往往更好。下面来看RAG的主要组成,依次是数据提取——embedding(向量化)——创建索引——检索——自动排序(Rerank)——LLM归纳生成。当然这里少了使用环节,我们暂时先忽略。大家知道,开卷考试时,往往大家的参考资料都差不多,在有限的考试时间内如何又快又准的锁定问题在书上的相关内容更为重要。RAG做的好不好也是如此,核心就看能不能将内容检索的又快又准。如果抄错了书上(知识库)内容,往往大模型给出的答案也南辕北辙。