跳到正文

RAG 局限性怎么破?

检索增强生成的主要挑战与改进思路,含重排优化

原题:请分析RAG(检索增强生成)技术存在的主要局限性、挑战以及相应的改进思路

重排与优化 · 小红书真题

30 秒回答

  1. 识别RAG在检索质量、生成整合、知识边界三方面的核心局限
  2. 能分析检索噪声、语义鸿沟、上下文窗口等具体挑战
  3. 提出至少3类改进方向(如混合检索、重排序、Agent化RAG)
  4. 体现对RAG与Fine-tuning、Agent关系的辩证理解

回答与解析

答案要点

  • 识别RAG在检索质量、生成整合、知识边界三方面的核心局限
  • 能分析检索噪声、语义鸿沟、上下文窗口等具体挑战
  • 提出至少3类改进方向(如混合检索、重排序、Agent化RAG)
  • 体现对RAG与Fine-tuning、Agent关系的辩证理解

RAG的核心局限可归纳为检索失效生成割裂能力边界三类:

一、主要局限与挑战

维度 核心问题 具体表现
检索质量 语义鸿沟 query与文档embedding不对齐,关键词匹配失败
检索噪声 Top-K混入无关文档,稀释有效信息
覆盖不足 多跳推理、跨文档关联难以捕获
生成整合 上下文爆炸 检索文档过长,淹没关键信息
忠实性缺陷 模型"幻觉"编造或过度综合检索内容
引用困难 难以精准溯源,答案可信度存疑
知识边界 实时性瓶颈 索引更新滞后,新知识无法即时生效
结构化缺失 表格、图谱等非文本知识利用不足

二、改进思路

1. 检索层优化

  • 混合检索:BM25 + 向量检索 + 稀疏编码(如SPLADE)互补
  • 查询改写:HyDE(假设文档嵌入)、Query2Doc扩展语义
  • 重排序精排:Cross-encoder精筛Top-K,过滤噪声

2. 生成层优化

  • 上下文压缩:RAG-Fusion多查询聚合、LongLLMLingua关键句提取
  • 引用生成:训练模型输出[source_id],实现可验证回答
  • Self-RAG:让模型自主判断"是否需要检索"及"是否引用"

3. 架构演进

  • GraphRAG:构建知识图谱,支持多跳推理与全局摘要
  • Agentic RAG:ReAct循环(检索→推理→再检索),动态决策检索时机与工具
  • RAG + Fine-tuning:领域embedding微调 + 生成模型SFT,打通语义空间

关键权衡:RAG并非万能,与Fine-tuning是互补关系——RAG解决"知识更新",Fine-tuning解决"知识内化";复杂推理场景需走向Agent化,而非堆砌检索次数。

口语版讲法(约4分钟)

  • 一句话定位:RAG的本质是低成本知识外挂
  • 检索质量的坑与混合检索改进
  • 生成阶段的割裂与Self-RAG方案
  • 边界划分:RAG vs 微调 vs Agent
  • 落地风险与工程师取舍

这道题我觉得它问的不是RAG的原理,它本质是在问:怎么让大模型在不知道的情况下不要瞎编,同时还要高效、可信。RAG是个好办法,但落地时有很多坑,我主要从检索、生成和边界这三个角度来讲。

先说检索。最理想的情况是用户问什么,数据库里就有最匹配的文档。但实际往往有语义鸿沟,比如用户说“退款流程”,库里存的可能是“售后政策”,Embedding 没对齐就匹配不上。更糟的是检索噪声,Top-K里混进一堆无关文档,把关键信息稀释了。举个例子,电商客服场景,用户问“满减优惠和店铺券能不能叠加”,如果检索只靠向量相似度,可能捞出一堆满减规则,却漏了店铺券的条款。改进思路很简单:别只依赖一种检索方式。我会用 Hybrid Search,把 BM25 的关键词匹配和向量检索结合起来,再做个 重排,用 Cross-Encoder 把候选文档精排,把噪声过滤掉。这里的风险是,重排本身有延迟,如果QPS高,得控制候选数量,不然响应时间会崩。

然后是生成阶段。文档捞回来了,但可能太长,关键信息被淹没,模型反而开始“自由发挥”,也就是 Hallucination。比如客服回答里,模型把两个政策混在一起编了个新规则。我的做法是引入 Self-RAG,让模型在生成时自己判断:这个片段要不要引用?引用哪个来源?如果模型不确定,就再检索一次。同时我会做上下文压缩,把长文档里不重要的句子剪掉,只保留和query最相关的段落。这个得配合 In-Context Learning 来设计,不然压缩会丢失上下文。

这里有个关键边界:RAG不是万能的。它适合知识频繁更新的场景,比如政策变更、实时数据;而 Fine-tuning 更适合把领域知识内化到模型参数里,比如专业术语、固定规则。真正落地往往是RAG加微调一起上,embedding层微调一下,生成模型做少量 SFT,这样检索和生成在语义空间上更对齐。

另外,复杂推理场景,比如多跳问题“某订单异常,先查该订单关联的满减活动,再查该活动的生效时间”,RAG一次检索搞不定。这时候我倾向走 Agentic RAG,用 ReAct 循环,让模型自己决定:先搜订单,拿到活动ID再搜活动表,最后推理出答案。但Agent化有风险,循环次数多了延迟会很高,而且模型可能跑偏。所以我会限定最大步数,并给每个工具加清晰的描述,让模型知道什么情况下该调用什么。

所以我的总结是:RAG是个好工具,但不是 silver bullet。我更倾向把它看成知识外挂,需要和微调、Agent配合使用。上线前我会特别关注检索的召回率和生成的事实一致性,用 RAGAS 这类框架做评估,不达标的场景宁可降级也不让模型瞎答。

关键一句:复杂多跳推理场景下,RAG一次检索不够,需要Agent化,但Agent化有延迟和可控性风险。

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设你在做一个电商客服机器人,用户问‘上次那款红色羽绒服多少钱’,系统去知识库检索,可能只找到一堆类似但无关的商品,或者干脆返回一个过时的价格。你遇到过这种检索不准导致的回答翻车吗?实际中你觉得RAG在哪些环节最容易出问题?

  2. 问法 2 · 层层追问

    你觉得RAG相比纯生成模型有什么优势?……那它的短板主要在哪儿呢?检索结果如果包含噪声,或者上下文太长把关键信息淹没了,你怎么处理?……再深入一点,如果用户问的问题需要多步推理,比如‘北京那个客户昨天下的订单今天发货了吗’,RAG能搞定吗?

  3. 问法 3 · 直球架构

    请系统性地分析RAG技术的主要局限性,从检索质量、生成整合、知识边界三个维度讲,每个维度列举具体挑战,然后给出至少三种改进思路,比如混合检索、重排序、Agent化这些,最后谈一下RAG和微调的关系。

同模块相关题目