资讯详情

RAG从入门到实战(一):一文理解检索增强生成的完整流程

📅 2026/11/3 10:37:53 | 华诺云谱 👁 阅读
RAG从入门到实战(一):一文理解检索增强生成的完整流程
RAG从入门到实战一一文理解检索增强生成的完整流程系列文章目录本系列从 RAG 原理出发逐步介绍知识库构建、检索优化、评估和工程实践。目录会随着文章发布逐步更新。RAG 入门理解检索增强生成的完整流程本文动手搭建第一个 RAG 应用文档解析与文本切分文档侧优化让知识片段更容易被找到Embedding 与向量检索Milvus 入门与实践RAG 查询优化改写、Multi-Query、HyDE 与多跳检索检索策略与混合检索重排序与结果多样性Cross-Encoder 和 MMR检索后的上下文优化压缩、去重、父块扩展与引用自适应检索与纠错证据检查、重试与拒答待更新RAG 评估检索指标、RAGAS 与消融实验待更新RAG 工程化实践权限、更新、监控、成本与安全待更新RAG 进阶拓展层次化索引、知识图谱与 GraphRAG待更新文章目录RAG从入门到实战一一文理解检索增强生成的完整流程系列文章目录前言一、为什么需要 RAG1.1 把所有资料都放进提示词可行吗二、什么是 RAG三、RAG 的完整流程3.1 文档解析3.2 文本切分3.3 文本向量化3.4 存储与建立索引3.5 根据问题检索资料3.6 组装上下文并生成回答四、2-Step RAG 和 Agentic RAG4.1 2-Step RAG先检索再生成4.2 Agentic RAG根据任务决定下一步五、RAG 的优势与局限5.1 RAG 能带来什么5.2 RAG 不能保证什么六、总结前言大语言模型能够回答很多问题但当问题涉及企业内部资料、产品手册或新发布的规定时模型可能没有掌握相关信息。如果仍然要求它直接回答就可能得到看似流畅、却缺少依据的结果。一个自然的想法是能不能让模型先找到相关资料再根据资料回答问题这就是 RAG 的基本思路。本文将通过一个例子介绍 RAG 要解决的问题、完整流程以及它的优势和局限。本文侧重原理不需要配置开发环境。一、为什么需要 RAG假设我们正在为一家保险公司开发智能客服。用户问我有高血压还能投保公司的医疗险吗要回答这个问题需要了解具体产品的投保规则、健康告知要求和适用条件。但公司的产品条款可能属于内部资料即使模型了解一般的保险知识也不能因此确定该产品的具体规则。另一个问题是知识会变化产品可能更新旧条款也可能失效。模型已有的知识不一定反映当前版本。当缺少必要信息时模型有时仍然会给出看似合理、但没有足够依据的回答。这类现象通常被称为幻觉。因此我们需要一种方式让模型在回答时能够参考相关资料。1.1 把所有资料都放进提示词可行吗一种直接的做法是把全部产品文档和用户的问题一起发送给模型。但文档数量增加后这种方式会遇到几个问题全部文档可能超过模型的上下文窗口。即使没有超出窗口大量输入也会增加 Token 消耗、延迟和成本。无关资料过多时模型仍可能忽略关键条件。实际上回答用户的一个问题通常只需要一部分资料。如果先从大量文档中找出相关片段再把这些片段提供给模型就可以减少输入内容并为回答提供依据。二、什么是 RAGRAG 的全称是Retrieval-Augmented Generation即检索增强生成。它把外部知识检索与大模型生成结合起来根据用户的问题从外部资料中检索相关内容。将检索结果和问题一起交给大模型。让大模型参考这些内容生成回答。例如假设知识库中有这样一条虚构的演示资料示例产品 A 要求投保人进行健康告知。是否可以投保需要根据具体告知内容和产品核保规则判断。当用户询问“有高血压能否投保产品 A”时系统可以检索到这条资料再让模型回答根据产品 A 的示例条款需要进行健康告知是否可以投保还要根据具体情况和核保规则判断。这里的重点不是“模型直接知道答案”而是模型拿到了相关依据。上面只是演示 RAG 流程的虚构案例实际保险问题应以真实产品条款和核保结果为准。可以用一句话概括RAG 检索相关资料 基于资料生成回答三、RAG 的完整流程一个典型的 RAG 系统可以分为两个阶段知识库构建阶段 原始文档 → 文档解析 → 文本切分 → 构建向量索引、关键词索引或两者 在线问答阶段 用户问题 → 按需优化查询 → 检索相关片段 → 按需重排序 → 组装上下文 → 生成回答前一个阶段负责把资料变成可检索的知识后一个阶段负责找到与问题相关的内容并生成回答。向量化是稠密向量检索的一种常见准备步骤并非所有 RAG 都必须使用向量关键词检索可以使用倒排索引也可以与向量检索结合。上述流程中的查询优化与重排序按实际需求选用权限过滤应贯穿检索及后续上下文扩展不能等文档进入模型后才处理。3.1 文档解析首先系统需要读取 PDF、Word、网页等资料并提取其中的内容。简单文档可能只需要提取纯文本对于扫描件、复杂表格和多栏排版还需要考虑 OCR 和文档结构解析。如果解析时把表格内容错位或者丢失了条款的适用条件那么后续检索和回答也可能受到影响。解析时通常还会保留一些元数据例如文档名称、章节、页码和版本方便后续过滤和追溯来源。3.2 文本切分一份文档可能很长不适合作为一个整体进行检索。因此系统通常会把它切成多个较小的片段称为Chunk。例如一份产品文档可以按章节拆分产品介绍、投保条件、保障范围和理赔流程。当用户询问“如何理赔”时系统就可以重点检索与理赔流程相关的片段而不必把整份文档发送给模型。不过切分并不是越小越好。例如原文是示例产品 A 需要完成健康告知是否可以投保需根据具体告知内容和核保规则判断。如果把“需要完成健康告知”和“是否可以投保需根据核保规则判断”切到互不相连的片段中单独检索到其中一部分时就可能丢失判断所需的上下文。因此文本切分需要尽量保留语义完整性。具体片段大小和重叠量需要结合文档类型与评测结果调整。3.3 文本向量化接下来可以通过Embedding 模型将每个文本片段转换为向量文本片段 → Embedding 模型 → 向量可以把向量理解为文本的一种数值表示。使用合适的模型时语义相近的文本通常可以通过向量相似度被找到。例如“能否购买医疗险”和“是否符合医疗险投保条件”虽然用词不同但语义可能接近。向量检索能帮助系统发现这类不完全依赖关键词重合的相关内容。需要注意向量相似只是检索信号不代表两个文本的事实完全一致也不保证检索结果一定正确。3.4 存储与建立索引对于向量检索系统会存储文本片段、对应的向量以及文档名称、页码等元数据并建立向量索引。关键词检索则可以为词项建立倒排索引混合检索可以同时利用两种索引。实际项目中可以先使用内存向量库学习基本流程也可以使用 Milvus 等向量数据库管理向量。向量数据库不是 RAG 的全部它主要负责存储和检索而文档解析、权限控制、上下文组织和回答生成等环节仍然需要配合完成。3.5 根据问题检索资料用户提问后系统需要从知识库中找出相关片段。常见的检索方式包括检索方式基本思路常见用途向量检索根据语义相似程度查找问题与原文措辞不同关键词检索根据关键词匹配查找产品型号、专有名词、错误码混合检索结合多种检索结果同时考虑语义与关键词例如用户问“有高血压能不能投保产品 A”系统可能检索到与“产品 A”“健康告知”“投保条件”相关的内容。实际应用中可以按需通过查询改写、混合检索和重排序改善候选结果并在检索各阶段执行权限过滤。这些方法并非越多越好它们的效果需要根据实际文档和问题进行评估后续文章会分别介绍。3.6 组装上下文并生成回答找到相关资料后系统会将资料和用户问题一起组织成模型输入。例如请根据以下资料回答用户问题。 如果资料不足请说明无法确定。 资料 示例产品 A 要求投保人进行健康告知。 是否可以投保需要根据具体告知内容和产品核保规则判断。 问题 我有高血压能投保产品 A 吗模型根据这些信息生成回答。在实际应用中系统还可以附上文档名称、章节或页码让用户核查答案的来源。不过要注意模型收到资料不等于一定会正确理解资料。模型仍可能忽略限定条件、误读文档或者生成资料没有支持的内容。因此引用和回答本身都需要进一步检查。四、2-Step RAG 和 Agentic RAG根据检索和生成的组织方式可以先了解两种常见架构。4.1 2-Step RAG先检索再生成用户问题 → 检索相关资料 → 生成回答例如用户询问如何申请理赔系统先检索理赔流程相关文档再将结果和问题交给模型生成回答。这种方式流程比较固定容易理解、实现和调试适合搭建第一个 RAG 应用。它的局限是对于复杂问题一次检索可能无法获取所有必要证据。4.2 Agentic RAG根据任务决定下一步Agentic RAG 中模型或 Agent 可以根据任务情况决定是否调用检索工具以及是否需要进一步处理。用户问题 → 判断任务 ├─ 不需要检索 → 直接回应 └─ 需要检索 → 调用检索工具 → 检查结果 证据不足时按需再次检索次数有限 证据足够后 → 整理证据并回答对于复杂问题系统可能需要拆分子问题、分别检索、检查资料是否足够必要时再次检索最后汇总证据回答。这种方式更灵活但也可能带来更高的成本、延迟和调试难度。实际系统还应设置工具权限、执行次数等边界。对于初学者建议先理解并跑通2-Step RAG再根据实际问题考虑是否需要 Agent。五、RAG 的优势与局限5.1 RAG 能带来什么接入外部知识可以让模型参考内部文档、产品手册或其他指定资料。支持知识更新更新知识库及索引后系统可以检索到新内容不必仅为此重新训练模型。提供来源系统可以在回答中附带文档名称、章节或其他来源信息方便核查。有助于减少部分无依据回答相关证据能够为生成提供约束但效果取决于具体系统。5.2 RAG 不能保证什么不能保证检索正确正确资料可能没有被召回或者被无关内容淹没。不能保证资料正确知识库可能包含过时、错误或互相冲突的文档。不能保证生成正确模型可能误读证据、遗漏条件或者生成资料中没有的内容。不能仅凭引用保证可信引用存在不代表引用内容真的支持对应结论。不能自动解决权限问题无权访问的资料应在进入模型上下文之前被过滤不能只依靠提示词。因此RAG 的效果需要从数据、检索、生成、评估和安全等多个环节共同保障。六、总结本文从大模型的知识局限出发介绍了 RAG 的基本思想和两阶段流程知识库构建文档 → 解析 → 切分 → 建立向量索引和/或关键词索引 在线问答问题 → 检索 → 按需重排序 → 组装上下文 → 生成回答RAG 的核心不是简单地“连接一个向量数据库”而是让系统能够找到相关资料并让模型正确使用这些资料。后续学习中可以始终围绕三个问题思考资料本身是否正确、完整、最新相关证据是否被成功检索到模型是否正确使用了这些证据下一篇将从一个最小示例入手动手搭建基础 RAG 应用把这些步骤串起来。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑