AI 术语表 · 基础 · 语言模型
RAG
RAG(检索增强生成)是一种让 AI 在回答之前先从文档或数据库中查找相关资料,再以查到的内容为依据生成回答的方法。模型没有学过的最新信息或公司内部信息也可以用在回答中。
工作原理
首先,把要参考的文档切分成几百个 token 左右的小块(分块)。再把每个小块转换成承载语义的一串数字,即嵌入,存入向量数据库。用户提问时,系统找出与问题语义最接近的若干小块,粘贴到提示词中。随后,大语言模型(LLM)阅读这些资料并生成回答。也就是说,这是把“查找(检索)”和“撰写(生成)”合并成一个流程的结构。
发展历程
2020 年,Google 研究人员的 REALM 论文让语言模型从预训练阶段起就检索并参考维基百科等大量文档,首次表明即使没有标注答案,也可以同时训练“检索器”。同年,Patrick Lewis 等人的论文为其命名为“检索增强生成(RAG)”。该论文提出了一种将维基百科检索器与文本生成模型相结合的通用训练方法,并报告称,与只用一个生成模型相比,生成的文本更具体、更符合事实。2023 年,Yunfan Gao 等人的综述论文将此后的发展归纳为三类:简单的“朴素 RAG”、提升检索质量的“高级 RAG”,以及可自由组合各组件的“模块化 RAG”。
为什么重要
LLM 不了解训练结束之后的信息,还可能把不知道的内容编造得像模像样,即产生幻觉。使用 RAG 时,不必重新训练模型,只需替换文档就能让知识保持最新,因此成本较低。公司规章或产品说明书等未公开的资料也可以加以利用。由于可以在回答的同时展示参考了哪些文档作为出处,用户也更容易自行核实。
注意事项(局限)
RAG 可以减少幻觉,但无法消除幻觉。即使取回了正确的资料,模型如果误读了上下文,仍可能给出错误答案。2023 年的“Lost in the Middle”论文报告称,长输入中的相关信息位于中间时,模型对它的利用效果不如位于开头或结尾时。因此,附上的检索结果并非越多越好。此外,把文档切得很细会丢失前后文,导致找不到所需的小块,所以通常会配合使用重排序器或混合检索等补充技术。
示例
查询公司内部规章的聊天机器人、依据产品说明书回答问题的客服机器人,都是典型的 RAG 应用案例。Anthropic 于 2024 年 9 月介绍了一种名为“Contextual Retrieval”的方法:在切分文档时,为每个小块附加对原文档上下文的说明,以减少检索失败。该公司表示,这种方法使检索失败减少了 49%,再加上重排序则减少了 67%。在同一篇文章中,该公司还指出,如果参考资料小于约 20 万 token(约 500 页),不使用 RAG、直接把全部资料放进提示词可能更简单。
相关术语
参考资料
- Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (2020)
- REALM: Retrieval-Augmented Language Model Pre-Training (2020)
- Retrieval-Augmented Generation for Large Language Models: A Survey (2023)
- Lost in the Middle: How Language Models Use Long Contexts (2023)
- Retrieval-augmented generation - Wikipedia
- Contextual Retrieval in AI Systems (Anthropic)