了解哪些更复杂的 RAG 范式
P1 · rag
🏷 标签:rag, advanced-paradigms, self-rag, graph-rag, agentic-rag
1️⃣ 考察意图
面试官想考察你对 RAG 前沿范式的广度与深度,而非仅仅背诵“检索+生成”的流水线。刁钻点在于:能否清晰区分不同范式的核心假设(如 Self-RAG 的反思机制 vs Agentic RAG 的工具调用),并给出工程取舍(如延迟 vs 准确性)。答好了能展示你对 RAG 从“工具”到“系统”的认知升级,以及根据业务场景选型的能力。
2️⃣ 标准答
RAG 从朴素版(Naive RAG:检索+拼接+生成)演进到多个复杂范式,核心差异在于是否引入反思、工具调用或结构化知识。以下按复杂度递增列举:
- **Self-RAG(自反思 RAG)**核心:在生成阶段引入“反思 token”(如
[Retrieve],[NoRetrieve],[Relevant],[Support]),让模型自我判断是否需要检索、检索结果是否相关、生成是否被支持。工程取舍:需要微调一个带反思能力的生成模型(如基于 Llama 2 的 Self-RAG 模型),训练成本高,但推理时可通过阈值控制检索频率,减少无效调用。实际坑:反思 token 的粒度难调——太细导致生成卡顿(每句话都反思),太粗则漏检。解法:在训练时用强化学习(如 GRPO)优化反思策略,而非硬编码规则。 - **Corrective RAG(修正型 RAG)**核心:在检索后增加一个“修正器”(如 reranker 或 LLM 评判),对检索结果进行质量打分,低分结果触发重新检索或丢弃。工程取舍:修正器增加一次 LLM 调用(延迟 200-500ms),但能过滤掉 30-50% 的噪声段落(【通用知识】)。实际坑:修正器可能误判,导致高相关段落被丢弃。解法:使用多轮修正(如先 rerank 再 LLM 评判),或引入置信度阈值(如 BM25 得分 < 0.3 才触发修正)。
- **Agentic RAG(智能体 RAG)**核心:将 RAG 封装为 LLM 可调用的工具(如
search_database,query_knowledge_graph),由 Agent 自主规划多步推理(如先检索 A,再根据结果检索 B)。工程取舍:灵活性极高(可处理多跳问题),但延迟爆炸(每步调用 LLM 决策,典型 3-5 步需 3-5 秒)。实际坑:Agent 容易陷入循环(如反复检索同一关键词)。解法:设置最大步数(如 5 步)和去重缓存(用 HNSW 索引存储已检索结果)。 - **Graph RAG(图增强 RAG)**核心:将知识组织为图结构(如实体-关系图),检索时从问题实体出发,沿边进行多跳遍历(如用 Cypher 查询 Neo4j)。工程取舍:适合多跳推理(如“A 的老板的公司的 CEO 是谁”),但建图成本高(需要 NER+关系抽取,且图规模大时遍历慢)。实际坑:图结构可能稀疏(如冷门实体无关联边)。解法:结合向量检索做“图+文本”混合检索(如先用 DPR 找相关实体,再在图内扩展)。
- **HyDE(假设文档嵌入)**核心:用 LLM 生成一个“假设文档”(即问题的理想答案),然后用该文档的 embedding 去检索真实文档。工程取舍:无需微调,但假设文档可能偏离真实分布(如生成“猫是哺乳动物”,但实际文档讲“猫的进化史”)。实际坑:假设文档质量依赖 LLM 能力。解法:生成多个假设文档(如 3 个),取 embedding 均值或投票。
总结:选型时,Self-RAG 适合事实性要求高的场景(如医疗问答),Agentic RAG 适合复杂推理(如法律案件分析),Graph RAG 适合结构化知识(如企业知识图谱)。
3️⃣ 答题模板(30 秒电梯版)
“这个问题我从三个层面回答:第一,列举主流范式——Self-RAG、Corrective RAG、Agentic RAG、Graph RAG、HyDE,核心差异在于反思、工具调用和结构化知识。第二,工程取舍——Self-RAG 需微调但减少无效检索,Agentic RAG 灵活但延迟高,Graph RAG 适合多跳但建图成本大。第三,选型建议——事实性场景用 Self-RAG,复杂推理用 Agentic RAG,结构化知识用 Graph RAG。总结一句:没有银弹,根据业务场景的延迟、准确率和知识类型选型。”
4️⃣ 高频追问 & 应对
追问 1:Self-RAG 和 Corrective RAG 在实现上有什么区别?哪个更实用?
Self-RAG 在生成阶段内嵌反思(模型自己判断是否检索),需要微调模型;Corrective RAG 在检索后外挂修正器(如 reranker),无需微调。实用角度:如果团队有微调能力(如用 LoRA 微调 Llama 3),Self-RAG 效果更好(准确率提升 10-15%);否则用 Corrective RAG 更轻量(只需加一个 reranker 调用)。注意:Self-RAG 的反思 token 训练需要大量标注数据,成本高。
追问 2:Agentic RAG 如何避免 Agent 陷入死循环?
三个策略:1)设置最大步数(如 5 步),超时强制返回当前结果;2)去重缓存:用 HNSW 索引存储已检索结果,每次检索前先查缓存;3)引入“终止条件”:如 Agent 发现检索结果与问题无关(用 LLM 打分 < 0.5),则直接生成答案而非继续检索。实际工程中,还会记录 Agent 的推理路径,用于事后调试。
追问 3:Graph RAG 和向量 RAG 如何结合?给个具体例子。
典型方案是“图+向量”混合检索:先用 DPR 或 ColBERT 做向量检索,找到 top-10 相关文档;然后从这些文档中提取实体(用 NER 模型),在图数据库中查询这些实体的关联实体(如“A 的老板”);最后将关联实体的文档与向量结果合并,输入 LLM。例如,在医疗场景中,向量检索找到“糖尿病”相关文档,图检索找到“胰岛素”和“并发症”的关联文档,合并后生成更全面的答案。
5️⃣ 避坑 · 常见错误答法
- ❌ 只列举范式名称,不解释核心差异(如“有 Self-RAG、Graph RAG 等”) → ✅ 必须给出每个范式的核心假设和工程取舍(如“Self-RAG 通过反思 token 控制检索频率,Graph RAG 通过图遍历增强多跳推理”)
- ❌ 认为 Agentic RAG 一定比 Self-RAG 好 → ✅ 指出适用场景不同:Agentic RAG 适合复杂推理但延迟高,Self-RAG 适合事实性场景但需微调
- ❌ 忽略实现复杂度(如“直接上 Agentic RAG”) → ✅ 强调选型需考虑团队能力(如微调 vs 无微调)和业务约束(如延迟 < 1 秒)
6️⃣ 简历呼应
- 如果你有 RAG 项目:从“我在项目中对比了 Self-RAG 和 Corrective RAG”切入,展示你如何根据准确率(提升 12%)和延迟(增加 200ms)做选型,并提到用 GRPO 优化反思策略。
- 如果你只做过传统 NLP:用“信息检索 vs 知识图谱”类比迁移,比如“传统 QA 用 BM25 检索,Graph RAG 相当于在知识图谱上做多跳推理”,并强调你理解图数据库(如 Neo4j)和向量数据库(如 Milvus)的差异。
- 如果你是校招无项目:聚焦论文复现,比如“我复现了 Self-RAG 论文中的反思 token 机制,在 HotpotQA 上对比了标准 RAG,发现准确率提升 8%”,并提到你了解 ColBERT 的延迟-召回率权衡。
- Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection (ICLR 2024)
- Corrective RAG: Corrective Retrieval Augmented Generation (arXiv 2024)
- Agentic RAG: ReAct: Synergizing Reasoning and Acting in Language Models (ICLR 2023)
- Graph RAG: Graph-based Retrieval Augmented Generation (Microsoft Research 2024)
- HyDE: Precise Zero-Shot Dense Retrieval without Relevance Labels (ACL 2023)