字节三面被问RAG原理,5分钟就出来了…
来源:互联网
时间:2026-08-25 14:32:49
图 1:RAG 技术在 QA 问题中的案例
一个简单的例子就能说清楚。想象一下,你问ChatGPT关于OpenAI CEO Sam Altman在几天内突然被解雇又复职的这档子事儿。因为模型训练的数据是有时间限制的,它很可能对此一无所知,只能无奈地告诉你“无法回答”。那么RAG是怎么做的呢?它先跑到外部的知识库里,把关于这个事件的新闻报道全部“扒”下来,然后把这些新闻和你最初的问题捏在一起,变成一个信息量很足的提示,再交给模型去生成一个有根有据的回答。这就是RAG的典型玩法。02
RAG 技术范式发展
特别是GPT-4发布以后,RAG的玩法经历了一次大变革。研究的重心开始偏向于将RAG和微调策略结合起来,同时也没有放弃继续优化预训练的方法。
图 2:RAG 技术发展的科技树
从技术范式的角度来梳理,可以把RAG的发展总结为这么几个阶段: **1. 朴素RAG** 前面那个案例,就是最经典的RAG流程,我们叫它“朴素RAG”。它主要由三个步骤构成: * **索引**:把文档库切分成一个个短小的“块”,然后通过编码器把这些“块”转成向量索引。 * **检索**:根据用户提出的问题,计算问题和这些“块”的相似度,找到最相关的那些文档片段。 * **生成**:以检索到的上下文信息为基础,来生成问题的答案。 **2. 进阶RAG** 朴素RAG在实际操作中会遇到不少麻烦,比如检索质量不高、生成的答案不够靠谱、整个流程还能再优化。于是,“进阶RAG”应运而生。它在数据索引、检索前和检索后都加了额外的处理。比如,通过更精细的数据清洗、重新设计文档结构、添加元数据等方式,来提升文本的质量和检索效率。在检索前,可以对问题做重写、路由或扩充,来弥合问题和文档块之间的语义鸿沟。在检索后,则可以通过对检索结果进行重排序,来避免出现“在中间迷失”的现象;或者通过上下文筛选与压缩,来缩短处理窗口的长度。 **3. 模块化RAG** 随着RAG技术越玩越花,一些新的思路开始突破传统的“检索-生成”框架。我们将这一类统称为“模块化RAG”。它在结构上更自由、更灵活,可以加入更多特定的功能模块,比如查询搜索引擎、融合多个答案等等。技术上,它把检索和微调、强化学习等方法融合在一起。在流程上,RAG模块之间的设计和编排也出现了多种模式。当然,这三个范式并不是割裂的,而是继承与发展关系。进阶RAG可以看作是模块化RAG的一种特例,朴素RAG又是进阶RAG的一种特例。图 3:RAG 范式对比图
03
如何进行检索增强?
图 4:RAG 核心组件的分类体系
04
RAG 和微调应该如何选择?
图 5:RAG 与其他大模型微调技术对比
05
如何评价 RAG?

06
未来 RAG 还有哪些发展前景?

图 6:RAG 的生态系统概览
更多详细内容,请参考原论文:
- 论文原文:https://arxiv.org/abs/2312.10997
- 官方仓库:https://github.com/Tongji-KGLLM/RAG-Survey
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名