RAG(Retrieval Augmented Generation)
一、什么是 RAG?
RAG 全称 Retrieval-Augmented Generation,翻译成中文是检索增强生成。检索指的是检索外部,增强生成指的是将检索到的知识送给大语言模型以此来优化大模型的生成结果,使得大模型在生成更精确、更贴合上下文答案的同时,也能有效减少产生误导性信息的可能。
二、为什么需要 RAG?
之所以需要 RAG,是因为本身存在一些局限性。
1.时效性
模型的训练是基于截至某一时间点之前的数据集完成的。这意味着在该时间点之后发生的任何事件、新发现、新趋势或数据更新都不会反映在模型的知识库中。例如,我的训练数据在 2023 年底截止,之后发生的事情我都无法了解。另外,大型模型的训练涉及巨大的计算资源和时间。这导致频繁更新模型以包括最新信息是不现实的,尤其是在资源有限的情况下。
2.覆盖性
虽然大模型的非常庞大,但仍可能无法涵盖所有领域的知识或特定领域的深度信息。例如,某些专业的医学、法律或技术问题可能只在特定的文献中被详细讨论,而这些文献可能未被包括在模型的训练数据中。另外,对于一些私有数据集,也是没有被包含在训练数据中的。当我们问的问题的答案没有包含在大模型的训练数据集中时,这时候大模型在回答问题时便会出现幻觉,答案也就缺乏可信度。
由于以上的一些局限性,大模型可能会生成虚假信息。为了解决这个问题,需要给大模型外挂一个知识库,这样大模型在回答问题时便可以参考外挂知识库中的知识,也就是 RAG 要做的事情。
三、RAG 的流程
RAG 的中文名称是检索增强生成,从字面意思来理解,包含三个检索、增强和生成三个过程。
检索: 根据用户的查询内容,从外挂知识库获取相关信息。具体来说,就是将用户的查询通过嵌入模型转换成向量,以便与中存储的知识相关的向量进行比对。通过相似性搜索,从向量数据库中找出最匹配的前 K 个数据。
增强: 将用户的查询内容和检索到的相关知识一起嵌入到一个预设的提示词模板中。
生成: 将经过检索增强的提示词内容输入到大语言模型(LLM)中,以此生成所需的输出。 流程图如下所示:
!