为何用 RAG 改进 LLM?示例解析
为更好地说明 RAG 是什么以及其工作方式,我们来看一个当今许多企业都面临的场景。
设想您是一家销售智能手机和笔记本电脑等设备的电子公司高管。您希望为公司打造一个客户支持聊天机器人,用于回答与产品规格、故障排查、保修信息等相关的用户咨询。
您想用 LLM 为聊天机器人提供动力。然而,正如我之前所提示的,大型语言模型存在一些重要限制,导致客户体验效率低下:
缺乏特定信息
语言模型受限于其训练数据,往往给出通用回答。若用户提出与您销售的软件相关的特定问题,或询问如何进行深入的故障排查,传统 LLM 可能无法提供准确答案。
原因在于它们并未在您组织的特定数据上训练。此外,这些模型的训练数据有截止日期,限制了其提供最新回答的能力。
幻觉
LLM 可能会“产生幻觉”,即基于想象的事实自信地生成错误回答。如果无法准确回答用户问题,这些算法也可能给出跑题的回答,从而带来糟糕的客户体验。
回答泛化
语言模型常常提供未针对具体情境定制的通用回答。在客户支持场景中,这可能是一个主要缺点,因为往往需要考虑个体用户偏好以实现个性化体验。
RAG 能有效弥合这些差距:它将 LLM 的通用知识与访问特定信息(如产品数据库与用户手册中的数据)的能力结合起来。这种方法可提供高度准确、可靠且契合您组织需求的回答。
RAG 如何工作?
典型的 RAG 流水线包含两个阶段:离线索引阶段(准备数据)与实时推理阶段(回答查询)。关键步骤如下。
步骤 1:数据收集
首先需收集应用所需的全部数据。以电子公司客户支持聊天机器人为例,数据可包括用户手册、产品数据库与常见问题列表。
步骤 2:数据分块
数据分块是将数据拆分为更小、更易管理片段的过程。比如,若您有一份 100 页的冗长用户手册,可以将其拆分为不同章节,每章可能对应回答不同的客户问题。
这样,每个数据块聚焦于一个特定主题。从源数据集中检索信息时,更可能直接适用于用户提问,因为我们避免了整篇文档中无关信息的干扰。
这也提升了效率,系统可快速获取最相关的信息片段,而非处理整份文档。
步骤 3:文档嵌入
在将源数据拆分为更小部分后,需要将其转换为向量表示。这涉及将文本数据转换为嵌入,即能捕捉文本语义的数值表示。
文档嵌入使系统能基于语义而非精确词汇匹配来将用户查询与相关信息对应。关于“修复我的笔记本屏幕”的查询,即便措辞不同,也能匹配到“显示问题排查”的相关数据块。
若您希望进一步了解文本数据如何转换为向量表示,欢迎查阅我们的OpenAI API 文本嵌入教程。
步骤 4:处理用户查询
当用户查询进入系统时,也必须将其转换为嵌入或向量表示。文档与查询嵌入需使用同一模型,以确保两者的一致性。
一旦将查询转换为嵌入,系统会将其与文档嵌入进行比较,使用余弦相似度、欧氏距离等度量,识别并检索与查询嵌入最相似的数据块。
这些数据块被视为与用户查询最相关。
步骤 5:使用 LLM 生成回答
检索到的文本块会与初始用户查询一并输入语言模型。算法将利用这些信息通过聊天界面生成连贯的回答。
下面是一张简化流程图,总结了 RAG 的工作方式:

在实践中,您可以使用 LlamaIndex 或 LangChain 等框架来构建该流水线。
这两种框架可处理分块、嵌入、检索与提示构建的编排工作,使您能够专注于数据与用例本身,而非底层管道。
RAG 的实际应用
除了上文的客户支持聊天机器人示例外,RAG 还有多种实用场景:
文本摘要
RAG 可利用外部来源内容生成准确摘要,从而大幅节省时间。例如,管理者和高层通常没有时间筛读冗长报告。
借助 RAG 驱动的应用,他们可以快速获取文本数据中的关键信息,更高效地进行决策,而无需通读长篇文档。
个性化推荐
RAG 系统可分析客户数据(如过往购买与评价)以生成产品推荐。这将提升用户整体体验,并最终为组织带来更多营收。
例如,RAG 应用可根据用户的观看历史与评分推荐更合适的流媒体影片;也可用于分析电商平台上的文字评价。
由于 LLM 善于理解文本数据的语义,RAG 系统可提供较传统推荐系统更细致入微的个性化建议。
商业智能
组织会通过追踪报告、财务报表与研究文档中的竞争对手行为与市场趋势来做出商业决策。
RAG 应用可按需提炼这些文档中的相关发现,减少分析师在数百页材料上花费的时间。
实施 RAG 系统的挑战与最佳实践
基础的“检索-生成”模式在简单用例中表现良好,但在生产环境的每个流水线阶段都会引入工程挑战。
集成复杂性
将检索系统与 LLM 集成可能很困难。当存在多种格式各异的外部数据源时,这一复杂性会进一步增加。输入 RAG 系统的数据必须一致,且生成的嵌入需要在所有数据源间保持统一。
为应对这一挑战,可设计独立模块分别处理不同数据源。再对各模块内的数据进行预处理以实现一致性,并使用标准化模型确保嵌入格式统一。
可扩展性
随着数据量增长,维持 RAG 系统效率愈发困难。需要执行许多复杂操作——如生成嵌入、比较不同文本片段的语义、以及实时检索数据。
这些任务计算密集,随着源数据规模扩大,可能拖慢系统。
为解决这一问题,您可以将计算负载分布到不同服务器,并投入稳健的硬件基础设施。为提升响应速度,也可缓存高频查询。
向量数据库(如 Pinecone、ChromaDB、FAISS 和 Weaviate)正是为此类问题而生。它们存储嵌入并执行快速的近似最近邻(ANN)搜索,即使跨越数百万文档,也能在毫秒级返回最相关的数据块。
如需实践演练,请参阅我们的Pinecone 向量数据库教程,或了解如何使用 LangChain 与 FastAPI 构建完整 RAG 系统。
数据质量
RAG 系统的有效性高度依赖于输入数据的质量。若应用访问的源内容质量欠佳,生成的回答也会不准确。
组织必须在严谨的内容策划与微调流程上投入精力。需要对数据源进行打磨以提升质量。对于商业应用,邀请领域专家在将数据集用于 RAG 系统前进行审阅并补充信息空白会更为有益。
高级 RAG 技术
基础的 RAG 流水线可行,但也存在已知失效模式:检索不相关、长文档中上下文丢失、以及无法跨多来源进行推理。为弥补这些缺口,出现了多种技术。
- Agentic RAG:使用 AI 代理决定何时检索、检索什么、以及如何重写查询,并将多次检索步骤串联。当一次检索不足以解题时尤其有用。
- GraphRAG:将知识组织为图而非平面数据块,保留实体间关系。对于需要在多文档间关联事实的问题表现出色。
- Self-RAG:模型自行判断是否需要检索,并对自身输出进行事实校验,减少不必要的检索调用。
- Corrective RAG(CRAG):在将文档传给生成器前评估其相关性,过滤噪声。
- 多模态 RAG:将检索扩展到文本之外,涵盖图像、表格与其他媒介类型。
- 上下文检索:在嵌入前为每个数据块加入文档级上下文,使检索器理解每个块在整份文档中的位置。

若需更广泛的优化策略概览,请参阅我们的指南:如何提升 RAG 性能。
RAG 与微调
一个常见问题是,应使用 RAG 还是微调来定制 LLM。简短回答:二者解决不同问题,许多生产系统同时采用。详细对比请参阅我们的指南:RAG vs. 微调。
| 评估标准 | RAG | 微调 |
|---|---|---|
| 知识更新 | 替换文档即可,无需再训练 | 需要在新数据上重新训练 |
| 成本 | 较低(无需 GPU 训练) | 较高(GPU 小时 + 数据准备) |
| 幻觉控制 | 强(回答基于检索文档) | 中等(取决于训练数据) |
| 领域适配 | 擅长事实回忆 | 更适合风格、语气与推理模式 |
| 时延 | 更高(检索步骤增加时间) | 更低(无检索开销) |
| 最佳适用 | 动态知识、FAQ 机器人、文档问答 | 专业化任务、稳定输出格式 |
结语
RAG 仍是将 LLM 输出建立在外部知识之上的最广泛采用技术。它直接针对语言模型的核心限制——训练数据陈旧、幻觉、缺乏领域特异性——而无需承担微调的成本与复杂度。
话虽如此,RAG 的效果取决于您提供的数据。源文档若质量不佳或过时,无论 LLM 多强,产出也会不佳。尤其在高风险应用中,仍需要人工监督。
良好的数据策划与领域专长,正是优秀 RAG 系统与“自信地给出错误答案”的系统之间的分水岭。
若想亲手实践 RAG,我推荐我们的RAG 与 LangChain 课程,从零搭建完整检索流水线。若需深入了解 LLM 基础,请查看LLM 概念课程。
检索增强生成(RAG)常见问答
什么是检索增强生成(RAG)?
RAG 是一种将预训练大型语言模型(LLM)的能力与外部数据源相结合的技术,使 AI 能提供更细致、准确的回答。
为什么 RAG 对提升 LLM 的功能很重要?
RAG 解决了 LLM 的关键局限,如倾向于提供通用答案、生成错误回答(幻觉)以及缺乏特定信息。通过将 LLM 与特定外部数据集成,RAG 能提供更精确、可靠且与情境相关的回答。
RAG 如何工作?其实施包含哪些步骤?
RAG 包含多个步骤:数据收集、数据分块、文档嵌入、处理用户查询,以及使用 LLM 生成回答。此流程确保系统能将用户查询与外部数据源中的相关信息准确匹配。
实施 RAG 系统有哪些挑战,如何应对?
挑战包括集成复杂性、可扩展性与数据质量。应对方案包括为不同数据源创建独立模块、投入稳健的基础设施,并确保严谨的内容策划与微调。
RAG 能与不同类型的语言模型集成吗?
可以。只要具备成熟的语言理解与生成能力,RAG 就能与不同类型的语言模型集成。具体效果取决于各模型的优势。
RAG 与传统搜索引擎或数据库有何不同?
RAG 将搜索引擎的检索能力与语言模型的细致理解与生成能力相结合,提供具备上下文意识、细节充分的回答,而不仅仅是返回文档。
Natassha 是一名在数据科学与营销交汇处工作的数据顾问。她相信,明智地使用数据,能够为个人和组织带来巨大的增长。作为一名自学成才的数据从业者,Natassha 热衷于撰写文章,帮助有志于数据科学的人士进入该行业。她在个人博客以及外部平台发表的文章,平均每月获得 20 万次浏览。

大型语言模型(LLM)带来了显著进步,但也存在局限:知识过时、产生幻觉,以及回答泛化。RAG 通过以检索增强生成(RAG)为基础来校准模型输出,从而解决这些问题。
在这篇博客中,我将拆解 RAG 的工作机制、它为何对生产级 AI 系统至关重要,以及当下组织如何使用它。
要点速览
什么是 RAG?
检索增强生成(RAG)将 LLM 连接到外部数据源,使其回答建立在最新且特定领域的信息之上。不再仅依赖训练数据,RAG 系统会在查询时检索相关文档,并与用户问题一并传给模型,从而生成更准确、与语境更贴合的答案。
LLM 功能强大,但具有内在局限:
RAG 通过让模型从结构化与非结构化数据源(如数据库、文档与 API)检索最新且特定领域的信息,来缓解这些问题。