接下来内容可能有点多,毕竟既要先讲解what’s RAG,又要使用RAG搭建一个智能问答助手。
当然,如果你坚持把整篇文章看完,我坚信你必有收获!
let’s start.
一、讲解RAG


(1)为什么要RAG?从 60% 到 90% 的价值跃迁

- 简而言之,只靠LLM回答问题,准确率不高,容易"一本正经地胡说八道"。
- LLM+RAG:就像给大模型配了个专业领域“随身图书馆”,回答前先去查权威资料,然后再基于查到的内容生成答案。
- 这个时候,有人要问了?
- 为什么给大模型配上RAG,就像给大模型配了个 “随身图书馆”,回答前先去查一查权威资料,然后再基于查到的内容生成答案。
那在RAG之前,大模型是怎么生成用户需要的内容的?
- 回答:
在没有 RAG 的时候,大模型生成内容的方式,说穿了就是 “闭卷考试”—— 全靠自己脑子里的 “老底” 硬拼。
它的整个工作过程就两步:
- 先有 “超强大脑”
在被开发出来时,工程师会让它 “吃” 下海量的数据。但它不会像我们一样把原文存起来,而是把这些知识嚼碎了,变成无数个复杂的数学参数,存在自己的模型里。这就像一个人背下了几千万本书,但记住的是 “模糊的印象”,不是精准的原文。
- 再 “回忆着拼答案”
当你提问题时,它没法去翻书查资料,只能立刻在自己的 “参数记忆库” 里翻找。它会根据问题,从记忆里挑出最相关的知识点,再按照语言逻辑,算出 “下一个词该说什么最通顺”,一步步拼出完整答案。
(2)RAG流程模块讲解

- 分片:
顾名思义,就是把拿到的全部数据进行分片,分成一片一片的。

事例:
原句:这款药对大多数人有效,但孕妇和严重肝肾功能不全者禁用。
错误分片:
- Chunk 1:这款药对大多数人有效,
- Chunk 2:但孕妇和严重肝肾功能不全者禁用。
当用户问 “这款药孕妇能用吗?”,如果检索只命中了 Chunk 1,大模型就会基于 “这款药对大多数人有效” 生成 “可以使用” 的错误结论,完全忽略了 “禁用” 的关键限制。
由此可见,一句话里的转折、否定等关键信息,一旦被分片切断,就会让大模型只看到片面信息,从而生成完全错误的回答。
这就引起了一个问题:如何分片才是最好呢?

固定大小分块
根据预设的字符数、词数或 token 数,将文本均匀分割成等长片段。

由于直接切分会打断语义流。实现起来很简单。此外,由于所有块大小相同,也便于批处理。但有一个大问题:这通常会把句子从中间截断。因此,重要信息很可能会被分散到多个分块中。
语义分块

- 根据有意义的单元(如句子、段落或主题部分)对文档进行分块。
- 接下来,为每个分块创建嵌入向量。
- 假设我从第一个分块及其嵌入向量开始。
- 如果第一个片段的嵌入与第二个片段的嵌入具有高度的余弦相似性,那么这两个片段就组成一个块。
- 这个过程一直持续到余弦相似性显著下降为止。
- 一旦下降,我们就开始一个新的块,并重复这个过程。
以下是输出示例:

与固定大小的分块不同,这种方式保持了语言的自然流畅性,并保留了完整的思想。由于每个分块信息更丰富,它提高了检索准确性,进而让 LLM 产生更连贯、更相关的响应。一个小问题是,它依赖一个阈值来判断余弦相似度是否显著下降,而这个阈值在不同文档间可能不同。
递归分块

首先,根据段落、章节等固有分隔符进行分块。
接下来,如果某个块的大小超过了预定义的块大小限制,就将该块再次拆分;若该块已符合块大小限制,则不再进一步拆分。(就是先分段落,再分大小)
以下是输出示例:

如上所示:
- 首先,我们定义两个分块(紫色显示的两段文字)。
- 接下来,段落 1 被进一步拆分成更小的块。
与固定大小的块不同,这种方法还能保持语言的自然流畅,并保留完整的思想。
不过,这会在实现和计算复杂度方面带来一些额外开销。
基于文档结构的分块

它利用文档的固有结构(如标题、章节或段落)来定义分块边界。
这样,它通过与文档的逻辑部分对齐来保持结构的完整性。
以下是输出示例:

话虽如此,这种方法假设文档具有清晰的结构,而事实未必如此。此外,块的大小可能各不相同,甚至可能超出模型的 token 限制。
基于 向量 / Embedding分块
- 先用专门的 Embedding 模型(如 BGE、text-embedding-ada)把文本转成向量,然后计算相邻句子 / 段落的向量相似度。当相似度突然大幅下降时,就判定这里是语义边界,进行切割。
- 本质
算法驱动,靠的是 “数学上的相似度阈值”。它能识别 “这两句话意思不一样”,但理解深度有限,更像一个 “语义测量仪”。
基于 LLM 的分块

既然每种方法都有优缺点,何不直接让 LLM 来生成分块?
我们可以通过提示让 LLM 生成语义独立且有意义的块。
显而易见,这种方法能保证很高的语义准确性,因为 LLM 能超越前四种方法中使用的简单启发式规则,真正理解上下文与含义。
唯一的问题是,它是本文讨论的五种分块技术中计算开销最高的一种。
此外,由于 LLMs 通常具有有限的上下文窗口,这也是需要注意的一点。
- 索引:
步骤:


如下图所示,我们将片段文本转为向量在坐标轴上的投影

- 召回:
简言之,就是搜索与用户问题相关的片段

当我们问:“马克喜欢吃什么?”如下投影图所示,会进行相似度计算,看跟哪几个向量接近就先提取出哪几个答案。以备后用!
这就又引起了一个问题:如何进行相似度计算呢?
- 向量相似度计算方法:余弦相似度、欧氏距离、点积
余弦相似度(夹角越小相似度越高)

欧氏距离(直接计算A-B的距离大小)

点积(使用点积公式计算)

上面我们通过相似度计算,得出10个与用户问题最相似的答案。那接下来我们该如何进一步确定最终的答案呢? 这就引出了 ” 重排 “。
- 重排:
简言之,就是:召回先在1000个片段中选择10个相似片段,然后重排再继续从10个相似片段中选择最终答案。

这个时候,有人就问了,那直接在召回阶段选择最终答案不就好了,为什么要多此一举再选一次呢?
回答:
召回阶段使用向量相似度计算,特点是成本低、速度快但准确率较低,适合初步筛选;重排阶段使用 cross encoder 模型计算相似度,成本高、耗时长但准确率高,适合精细筛选。
类比公司招聘,召回相当于简历初筛,重排相当于面试精选。
- 生成:
我们通过以上的所有操作后,得到了最终答案,我们将它输入给大模型,然后设置prompt,按格式输出答案。

回顾:


这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!
👇👇扫码免费领取全部内容👇👇

1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。

2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)

3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。

4. 2026行业报告
行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

5. 大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

6. 大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

7. 资料领取:全套内容免费抱走,学 AI 不用再找第二份
不管你是 0 基础想入门 AI 大模型,还是有基础想冲刺大厂、了解行业趋势,这份资料都能满足你!
现在只需按照提示操作,就能免费领取:
👇👇扫码免费领取全部内容👇👇

1万+



被折叠的 条评论
为什么被折叠?



