检索增强生成流程
734 字约 2 分钟
domain/aiai/rag
2026-07-24
1. 核心结论
- RAG 流程包含文档处理、检索、增强、生成四个核心阶段
- 每个阶段都有优化空间,整体效果取决于最弱环节
- 查询理解、检索策略、上下文组装、生成控制是关键优化点
- RAG 不是一次性检索,可以迭代优化检索结果
- 评估 RAG 需要分别评估检索质量和生成质量
2. 基础概念
Query:用户的原始问题或请求。
Query Expansion:将原始查询扩展为多个相关查询,提升召回率。
Retrieval:从知识库中检索相关文档片段。
Context Assembly:将检索结果组装为 LLM 可用的上下文格式。
Generation:LLM 基于上下文生成最终回答。
Citation:在回答中标注信息来源。
Feedback Loop:根据用户反馈优化检索和生成策略。
3. 工作原理
完整 RAG 流程:
用户查询
↓
[查询预处理]
- 查询重写
- 查询扩展
- 语言检测
↓
[检索阶段]
- 向量化查询
- 向量检索(Top-K)
- 关键词检索(BM25)
- 结果合并
↓
[后处理阶段]
- 重排序(Rerank)
- 去重
- 过滤
- 上下文组装
↓
[生成阶段]
- 构建 Prompt
- LLM 生成
- 引用标注
- 质量检查
↓
最终回答优化策略:
- 查询优化:
- 多语言翻译
- 同义词扩展
- 子问题分解
- 检索优化:
- 混合检索(向量 + BM25)
- 多路召回
- 元数据过滤
- 上下文优化:
- 相关性排序
- 冗余去除
- 上下文压缩
- 生成优化:
- 结构化 prompt
- 引用要求
- 置信度评估
4. 实战场景
- 智能客服:基于产品文档回答用户问题
- 知识助手:基于企业内部知识库提供咨询
- 研究助手:基于论文库辅助学术研究
- 法律助手:基于法律条文提供法律咨询
- 医疗问答:基于医学文献回答专业问题
- 代码助手:基于代码库回答技术问题
5. 常见误区
- 只做一次检索:复杂问题需要多轮检索
- 不检查检索结果:直接送入 LLM 可能引入噪声
- 上下文过长:超出模型有效注意力范围
- 不处理冲突信息:多个检索结果可能相互矛盾
- 忽视延迟:多阶段处理增加响应时间
6. 进阶方向
- Self-RAG(自我反思检索)
- Corrective RAG(纠正性检索)
- Adaptive RAG(自适应检索)
- Multi-hop RAG(多跳检索)
- Agentic RAG(Agent 驱动的检索)
- 流式 RAG(边检索边生成)
7. 推荐资料
- LangChain RAG - https://docs.langchain.com/rag
- LlamaIndex RAG - https://docs.llamaindex.ai/en/stable/module_guides/querying/
- Haystack RAG - https://docs.haystack.deepset.ai/docs/rag
- Self-RAG Paper - https://arxiv.org/abs/2310.11511
- CRAG Paper - https://arxiv.org/abs/2401.15884