一文搞懂 RAG,手把手搭智能问答助手
接下来内容可能有点多毕竟既要先讲解what’s RAG又要使用RAG搭建一个智能问答助手。当然如果你坚持把整篇文章看完我坚信你必有收获let’s start.一、讲解RAG1为什么要RAG从 60% 到 90% 的价值跃迁简而言之只靠LLM回答问题准确率不高容易一本正经地胡说八道。LLMRAG就像给大模型配了个专业领域“随身图书馆”回答前先去查权威资料然后再基于查到的内容生成答案。这个时候有人要问了为什么给大模型配上RAG就像给大模型配了个 “随身图书馆”回答前先去查一查权威资料然后再基于查到的内容生成答案。那在RAG之前大模型是怎么生成用户需要的内容的回答RAG 之前大模型其实是 “凭记忆硬答”在没有 RAG 的时候大模型生成内容的方式说穿了就是 “闭卷考试”—— 全靠自己脑子里的 “老底” 硬拼。它的整个工作过程就两步先有 “超强大脑”在被开发出来时工程师会让它 “吃” 下海量的数据。但它不会像我们一样把原文存起来而是把这些知识嚼碎了变成无数个复杂的数学参数存在自己的模型里。这就像一个人背下了几千万本书但记住的是 “模糊的印象”不是精准的原文。再 “回忆着拼答案”当你提问题时它没法去翻书查资料只能立刻在自己的 “参数记忆库” 里翻找。它会根据问题从记忆里挑出最相关的知识点再按照语言逻辑算出 “下一个词该说什么最通顺”一步步拼出完整答案。2RAG流程模块讲解分片顾名思义就是把拿到的全部数据进行分片分成一片一片的。事例原句这款药对大多数人有效但孕妇和严重肝肾功能不全者禁用。错误分片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书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF3. 大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。4. 2026行业报告行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。5. 大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。6. 大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。7. 资料领取全套内容免费抱走学 AI 不用再找第二份不管你是 0 基础想入门 AI 大模型还是有基础想冲刺大厂、了解行业趋势这份资料都能满足你现在只需按照提示操作就能免费领取扫码免费领取全部内容