news 2026/6/27 10:27:02

模块一-RAG概述

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
模块一-RAG概述

模块一-RAG概述

系列导航:本文是 RAG 技术教程 的第一篇。本系列基于吴恩达 RAG 课程整理,面向有基础知识的开发者。

前置知识:无,本篇是系列起点。

版权声明:本系列基于 DeepLearning.AI 课程Building and Evaluating Advanced RAG Applications(讲师 An Hassan)整理,为学习笔记性质的二次创作。原始课程版权归 DeepLearning.AI 及讲师所有。

1. RAG 入门:从"模型不知道的事"到检索增强生成

1.1 1. LLM 的知识盲区

大语言模型训练时读遍了互联网上的公开数据,但它仍然回答不了很多问题。

原因很具体:训练数据有截止日期,之后发生的事它不知道;公司内部的文档、客户手册、产品规格从未出现在训练集里;专业领域的病例、判例、行业报告也不是公开互联网能覆盖的。要求一个模型精通所有领域本身就不现实。

更麻烦的是,LLM 不会老实说"我不知道"——它会生成听起来合理但实际不正确的回答,这叫幻觉。当用户问了一个模型训练时没见过的信息,它可能编造一个看似可信的答案,而用户很难分辨真假。

解决办法不复杂:如果模型不知道,就把信息放到它的提示里。这就是 RAG 的出发点。

1.2 2. RAG 的核心思想

RAG 的全称是 Retrieval-Augmented Generation,检索增强生成。名字有点长,但做的事情很直接——在用户的问题发送给 LLM 之前,先从知识库中检索相关信息,把这些信息拼进提示中,让模型基于真实数据生成回答。

人类回答问题本来就是两步走:先收集信息,再推理回答。问"周末酒店为什么贵"靠常识就行,不需要查资料;问"温哥华这周末酒店为什么暴涨"就得搜一下,结果发现是泰勒·斯威夫特在开演唱会;问"温哥华为什么市中心酒店容量不足"可能需要查城市规划历史。问题越专业、越有时效性,就越需要检索外部信息。

RAG 就是把第一步自动化了。

工作流程用 mermaid 表示:

用户提问

检索器查询知识库

返回相关文档

构建增强提示

LLM 生成回答

增强提示的构建方式很朴素,就是字符串拼接:

defrag_query(question):# 1. 检索相关文档documents=retriever.search(question)# 2. 拼接增强提示prompt=f"""请回答以下问题:{question}以下是可能有帮助的参考资料:{documents}"""# 3. LLM 基于增强提示生成回答answer=llm.generate(prompt)returnanswer

没有复杂的魔法,就是把检索到的内容塞进提示里。RAG 能工作的根本原因在于 LLM 的上下文理解能力——即使信息不在训练数据中,只要在提示里提供了,模型就能理解并将其融入回答。

1.3 3. RAG 系统架构

一个 RAG 系统由三个核心组件构成:LLM、检索器、知识库。

相关文档

原始问题

回答

用户

检索器

知识库

增强提示

LLM

  • LLM负责理解上下文并生成回答
  • 检索器负责从知识库中找到与问题最相关的文档
  • 知识库存储 LLM 训练数据中没有的信息

这三者的分工很清晰:检索器从海量信息中筛选关键内容,LLM 专注于文本生成,每个组件做自己最擅长的事。检索器不需要会写文章,LLM 不需要会查资料,各司其职。

RAG 相比直接用 LLM 有四个明显优势:

优势说明
访问私有信息使 LLM 能获取训练数据之外的专有或最新信息
降低幻觉通过提供相关事实"锚定"LLM 的回答,减少编造
便于信息更新只需更新知识库,无需重新训练模型
支持来源引用可在回答中包含引用,便于读者验证

“锚定"这个词用得挺形象——就像给 AI 一根绳子拴住,让它不要天马行空地编造,而是基于提供的事实回答。模型没有经历心理发作,它只是在生成"可能的文本”,而 RAG 确保这些"可能的文本"更接近"真实的文本"。

1.4 4. LLM 基础速览

要理解 RAG,需要对 LLM 的工作原理有基本认识。

1.4.1 词元(Token)

LLM 处理文字的最小单位是词元,不完全等于"单词"。英文中 “programmatically” 可能被拆成 “program” + “matic” + “ally” 三个词元,标点符号各自是一个词元。中文里"人工智能"可能是一个词元,也可能拆成"人工" + “智能”,不同模型的分词方式不同。大多数模型的词汇量在数万到十万个词元之间。

1.4.2 自回归生成

LLM 每次只生成一个词元。生成过程:拿到当前所有文本 → 遍历词汇表中每个词元 → 计算每个词元作为下一个出现的概率 → 从概率分布中采样一个 → 追加到文本末尾 → 重复。这意味着早期的随机选择会影响后续方向,同一提示多次运行可能产生不同结果。

1.4.3 幻觉

LLM 设计的目标是生成"可能的"文本序列,而非"真实的"文本。当模型缺乏相关信息时,它会基于训练数据中的模式生成听起来合理但实际不正确的内容。幻觉从轻微(把折扣说成 5% 实际是 10%)到严重(虚构公司从未提供的信息)不等。

幻觉级别表现示例
轻微准确描述但细节错误折扣 5% vs 10%
中等错误声称存在实际不存在的信息声称某功能已上线
严重完全虚构信息虚构不存在的客户折扣

RAG 解决幻觉的原理:不是改变模型本身,而是改变模型能看到的信息。在提示中注入相关事实,让模型的回答锚定在真实数据上。

1.4.4 上下文窗口

LLM 有上下文窗口限制——一次能处理的最大词元数量。添加的检索信息会占用这个窗口,所以需要控制检索结果的数量和长度。旧模型的窗口可能只有几千词元,新模型可以处理数百万,但成本随窗口使用量线性增长。

1.5 5. 检索器的角色

检索器的工作可以用图书馆来类比:知识库是藏书,文档索引是按主题分类排列的书籍,查询处理是能理解你问题并帮你找到相关书籍的图书管理员。

检索器有三大组件:

  1. 文档知识库:所有可用文档的集合
  2. 文档索引:将文档按某种结构组织,便于快速搜索
  3. 查询处理:理解用户问题的含义,利用索引搜索并返回最相关的文档

返回文档数量是个需要权衡的问题。返回太多,信息会被淹没在无关内容中,提示成本增加,甚至耗尽上下文窗口;返回太少,可能遗漏重要信息。理想情况是检索器完美排序并返回恰到好处的数量,但现实中检索器有时会把相关文档排得太低,或把无关文档排得太靠前。

检索器可以用两种方式实现:向量数据库擅长"找意思相近的内容"(语义搜索),传统关系型数据库擅长"找精确匹配的内容"(关键词搜索)。实际生产中通常将两者结合使用,形成混合搜索。

1.6 6. 实际应用场景

RAG 的应用比想象中广泛:

场景说明
代码生成以代码库为知识库,LLM 生成符合项目风格的代码
企业客服了解产品详情、库存状态、故障排除步骤
内部助手回答公司政策、流程指引,引导至相关文档
医疗法律高精准度要求的专业场景,涉及大量私密信息
AI 搜索搜索引擎的 AI 摘要本质上就是以互联网为知识库的 RAG
个人助手短信、邮件、日历中的个性化协助,知识库虽小但富含上下文

只要拥有未用于训练的额外信息,就有构建 RAG 应用的潜力。

1.7 7. RAG 的演进路径

RAG 不是一成不变的技术,经历了三个阶段:

阶段特点
基础 RAG人工编写规则,决定文档分割、检索策略、上下文数量
高级 RAG更复杂的检索策略和优化技术(混合搜索、重排序)
Agentic RAG多个 LLM 各司其职,AI 代理自主决定何时检索、用什么关键词、是否需要二次检索

吴恩达认为 RAG 不会被淘汰——随着语言模型技术提升,语言模型将持续受益于高质量的相关数据。RAG 常成为复杂多步骤工作流中的一个组件,比如在某个企业任务的第五步或第七步发挥作用。


来源:吴恩达 RAG 课程模块一(讲1-讲8),讲师 An Hassan。


1.8 思考题

  1. 如果你的公司有一份 100 页的产品手册,你会如何设计 RAG 系统来回答客户关于产品功能的问题?需要考虑哪些组件?
  2. RAG 能完全消除 LLM 的幻觉吗?为什么?
  3. 除了文中列出的场景,你还能想到哪些 RAG 的应用场景?

下一篇:模块二:信息检索与搜索基础

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/27 10:22:33

Windows三指拖拽终极指南:如何在Windows上实现macOS级触控体验

Windows三指拖拽终极指南:如何在Windows上实现macOS级触控体验 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeFinge…

作者头像 李华
网站建设 2026/6/27 10:17:58

记录一次接口访问超时问题定位

问题描述 提示:这里描述项目中遇到的问题: 项目用的GO语言,会启动一个耗时大概十几分钟的扫描任务,会将一个很大的压缩文件,不断地解压,读取。 读取出来的数据会存入缓存中,然后代码中会访问数据…

作者头像 李华
网站建设 2026/6/27 10:17:17

三指拖拽神器:如何在Windows上实现macOS级触控体验的终极指南

三指拖拽神器:如何在Windows上实现macOS级触控体验的终极指南 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeFinger…

作者头像 李华
网站建设 2026/6/27 10:17:08

ArchivePasswordTestTool:基于7zip引擎的高效并行密码测试架构深度解析

ArchivePasswordTestTool:基于7zip引擎的高效并行密码测试架构深度解析 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 在数据安…

作者头像 李华
网站建设 2026/6/27 10:13:22

Windows三指拖拽终极指南:免费实现macOS般流畅触控体验

Windows三指拖拽终极指南:免费实现macOS般流畅触控体验 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeFingersDragO…

作者头像 李华