RAG 检索增强生成:现状、挑战与优化思路
一、RAG 简介
大语言模型(LLM)相较于传统的语言模型具备更强大的能力,但在实际应用中,如准确性、知识更新速度和答案透明度方面仍存在显著问题,典型表现包括幻觉现象。因此,检索增强生成(Retrieval-Augmented Generation, RAG)成为大模型应用开发的一种新范式。
RAG 的核心思想是在利用大语言模型回答问题之前,先从外部知识库检索相关信息,然后让模型根据这些信息进行总结归纳。这种方式能确保模型回答有据可依,减少胡说八道的情况。
尽管大模型发展迅速,但仍存在以下局限性:
- 准确性:LLM 是自回归模型,基于前一个词推测下一个词,概率机制不可避免会产生错误信息。
- 知识更新速度:LLM 训练数据有限,导致知识更新滞后,可能产生过时回答。
- 答案透明度:LLM 生成的内容往往缺乏明确的信息来源,影响可信度。
- 领域专业知识能力欠缺:预训练数据分布均匀,特定领域专业知识处理效果不佳。
二、RAG 与微调效果对比
| 性能对比 | RAG | 微调 |
|---|---|---|
| 知识更新速度 | 直接更新知识库内容即可,无需重新训练,成本低 | 需重新训练以保持更新,成本高 |
| 专业性 | 取决于知识库数据,无明显倾向 | 针对领域数据微调后具备专业性 |
| 可解释性 | 可追溯数据来源,可解释性好 | 相对较低,取决于预训练数据质量 |
| 计算资源 | 需额外资源支持检索和数据库维护 | 要求较高,取决于微调数据量 |
| 推理延迟 | 增加向量化和检索步骤耗时 | 普通 LLM 推理耗时 |
| 降低幻觉 | 通过真实信息生成,降低幻觉概率 | 有助于减少幻觉,但未见输入仍可能出现 |
三、RAG 的工作流程
公认一般包含检索阶段和生成阶段两个核心部分。
1. 检索阶段
根据用户输入,使用向量模型将查询内容转换为向量,计算查询向量与知识库中文档块向量之间的相似性。根据相似度水平选出最相关的前 K 个文档块作为当前问题的补充信息。
在此过程中,分块(Chunking)策略至关重要。常见的策略包括按字符数固定分块、按语义段落分块等。合理的分块能保证检索的颗粒度适中。
2. 生成阶段
将给定的问题与检索到的补充信息合并,构造出一个新的 Prompt,让大模型根据提供的信息来回答任务。
Prompt 的设计直接影响最终效果,通常采用系统指令 + 上下文 + 用户问题的结构。
四、RAG 的局限性
1. 检索过程
RAG 的检索质量受多个指标影响:
- 精确率(Precision):检索到的文档块中有些与查询不直接相关,可能导致生成不准确信息。
- 召回率(Recall):未能检索到所有相关文档块,限制模型获取足够背景信息。
- 数据过时性:知识库更新频率高时,可能存在大量过时信息,误导模型。


