news 2026/4/16 16:06:15

AI大模型系列教程--RAG检索增强

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI大模型系列教程--RAG检索增强

大模型系列教程--RAG检索增强

检索增强生成(Retrieval-Augmented Generation,简称 RAG)是解决大模型 “知识过时”“幻觉输出” 等问题的关键技术,通过将外部知识库与大模型生成能力结合,让模型基于真实、最新的信息输出答案。本教程将从 RAG 基本流程出发,逐步讲解多轮对话优化、各环节改进策略,帮助你掌握 RAG 应用的构建与优化方法。

一、RAG 基本流程:从索引到生成的完整链路

RAG 的核心逻辑是 “先检索、后生成”,整体流程分为建立索引检索生成两大阶段,辅以 “保存与加载索引” 提升效率,具体步骤如下:

(一)建立索引:为知识库 “打造检索地图”

建立索引是 RAG 的基础,目的是将非结构化的文档转化为可快速检索的向量数据,包含 4 个关键步骤:

  1. 文档解析

    将知识库中的原始文档(如 PDF、Word、TXT 等)加载并解析为纯文字形式。例如,将一份包含表格和图片的产品手册,提取其中的文字内容(表格内容需转化为结构化文本,图片需通过 OCR 提取文字),确保大模型能理解文档核心信息,例如,使用PyPDF2库解析 PDF 文件,示例代码如下。

import PyPDF2 def parse_pdf(pdf_path): text = "" with open(pdf_path, 'rb') as file: reader = PyPDF2.PdfReader(file) for page in reader.pages: text += page.extract_text() return text
  1. 文本分段

    对解析后的长文本进行 “切片” 处理。若直接用整文档检索,会导致匹配效率低、无关信息干扰多;若切片过细,又会丢失上下文。常见的切片逻辑包括:按固定字数分割(如每 500 字一段)、按章节 / 段落分割,或结合语义连贯性分割(避免切断完整逻辑),以下是按固定字数分割的 Python 代码示例:

def split_text(text, chunk_size=500): chunks = [] start = 0 while start < len(text): end = min(start + chunk_size, len(text)) chunks.append(text[start:end]) start = end return chunks
  1. 文本向量化

    借助嵌入(Embedding)模型,将每个文本片段和用户问题转化为高维向量(如 768 维、1536 维)。向量的相似度越高,代表文本语义越接近。例如,用Open AI的 Embedding 模型,将 “如何申请年假” 和 “年假申请流程” 转化为向量后,两者的余弦相似度会显著高于与 “薪资计算” 的相似度,如下代码所示,将文字转为向量,将会打印一串整形数字向量:

import openai openai.api_key = "YOUR_API_KEY" def get_embedding(text): response = openai.Embedding.create( input=text, model="text - embedding - ada - 002" ) return response['data'][0]['embedding'] get_embedding('如何申请年假')
  1. 存储索引

    将向量化后的文本片段存储到向量数据库中,形成可高效检索的 “向量索引”。向量数据库能快速计算用户问题向量与库中所有片段向量的相似度,实现毫秒级召回相关内容。

(二)检索生成:基于真实信息输出答案

当用户提出问题时,RAG 通过 “检索相关片段→结合片段生成答案” 的流程,确保输出的准确性,具体步骤如下:

检索阶段

  • 先用 Embedding 模型将用户问题转化为向量;

  • 向量数据库计算该向量与库中所有文本片段向量的相似度,召回最相关的 Top N 个片段(如 Top 5、Top 10);

  • 例如,用户问 “公司年假有多少天”,检索系统会从向量数据库中召回包含 “年假天数”“年假政策” 的文本片段。

生成阶段

将 “用户问题 + 召回的相关片段” 通过提示词模板组合,输入大模型生成最终答案。此时大模型的核心作用是 “总结整合”,而非依赖自身训练数据,从根源减少幻觉。

典型提示词模板如下:

请严格根据以下参考信息回答用户问题,不添加参考信息外的内容: {召回文本段1} {召回文本段2} ... 用户的问题是:{question} 要求:回答简洁、逻辑清晰,直接回应问题核心。

(三)保存与加载索引:提升复用效率

首次建立索引后,可将索引文件(如向量数据库快照、Embedding 结果)保存到本地或云端。后续使用时直接加载索引,无需重新解析、分段、向量化,能将 RAG 响应速度提升 5-10 倍,尤其适合知识库更新频率低的场景(如固定政策文档、历史案例库)。

二、RAG 多轮对话:解决历史信息丢失问题

在多轮对话中(如 “我能申请年假吗?”→“申请需要什么材料?”),若仅用用户当前问题检索,会丢失前序对话信息,导致检索结果偏差。例如,用户第二次问 “申请需要什么材料” 时,系统可能无法判断是 “年假申请” 还是 “报销申请”。

多轮对话的核心解决方案:问题改写

通过大模型将 “当前问题 + 历史对话” 整合,改写为包含完整意图的新查询(New Query),再用新查询执行检索。具体流程如下:

收集历史对话记录(如前 3 轮对话内容);

用提示词引导大模型改写问题:

角色:你是问题改写专家,需结合历史对话,将用户当前问题改写为独立、完整的查询。 历史对话: 用户:我能申请年假吗? 系统:可以,需满足入职满1年的条件。 用户当前问题:申请需要什么材料? 改写要求:新查询需包含“年假申请”的核心意图,无需冗余信息。 改写结果:

大模型输出新查询:“年假申请需要准备什么材料?”;

用新查询执行检索与生成,确保结果准确关联 “年假” 场景。

三、RAG 各环节优化策略:从基础到进阶

RAG 的效果依赖每个环节的细节优化,以下从 “文档准备→解析切片→向量化存储→检索召回→答案生成” 全链路,提供可落地的改进方案。

(一)文档准备阶段:对齐 “意图空间” 与 “知识空间”

RAG 的本质是 “用知识库的知识满足用户意图”,需先明确两个核心空间的关系,再针对性优化:

空间类型

定义

优化策略

意图空间

用户提问背后的真实需求(如 “查年假政策”“问报销流程”)

1. 建立用户意图收集机制(如对话日志分析、用户反馈调研);2. 邀请领域专家标注高频意图(如 HR 场景的 “薪资”“考勤”“福利”)。

知识空间

知识库中可提供答案的知识点(如段落、章节)

1. 补充 “未覆盖的意图空间”:若用户常问 “远程办公政策” 但知识库无相关内容,需新增文档;2. 清理 “未利用的知识空间”:删除与用户意图无关的内容(如过期的旧政策)。

关键原则:优先通过 “补充知识库内容” 优化效果,再考虑算法改进。若知识库本身缺少用户需要的信息,任何检索算法都无法提升准确性。

(二)文档解析与切片阶段:平衡 “信息完整” 与 “噪声减少”

解析和切片直接影响检索片段的质量,常见问题及解决方案如下:

1. 文档解析问题与改进

问题类型

改进策略

场景示例

格式不支持(如 Keynote、CAD)

1. 开发专属解析器;2. 批量转换为支持格式(如 PDF、Markdown)

某企业用 Keynote 存储产品方案,可先将 Keynote 导出为 PDF,再用 PDF 解析器提取文字。

特殊内容无法提取(表格、图片)

1. 表格:转化为 Markdown 表格格式;2. 图片:用 OCR 提取文字 + 标注图片主题

文档中 “员工薪资等级表”,转化为 Markdown 表格后,检索时能精准匹配 “薪资等级” 相关问题。

2. 文本切片优化:选择合适的切片方法

不同切片方法适用于不同场景,需根据文档类型和模型能力选择:

切片方法

原理

适用场景

选择建议

Token 切片

按固定 Token 数分割(如每 256 Token 一段)

模型上下文长度有限(如≤1024 Token)

避免模型输入超限,适合轻量级模型

句子切片

按句子边界分割(保持句子完整)

大多数通用场景(如政策文档、新闻)

新手入门首选,平衡效率与上下文完整性

句子窗口切片

每个切片包含前后 N 个句子作为上下文

长文档(如论文、报告),需关联上下文

检索 “某结论的推导过程” 时,补充前后文片段

语义切片

按语义相关性分割(如 “章节内子主题”)

逻辑性强的文档(如技术手册、教程)

避免切断 “问题 - 解决方案”“原因 - 结果” 等逻辑链

Markdown 切片

按 Markdown 语法分割(如 #标题、## 子标题)

Markdown 格式文档(如 GitHub 文档、笔记)

精准匹配 “某标题下的内容”,提升检索精度

优化案例:某技术手册用 “语义切片” 后,用户问 “如何调试 API 接口”,检索系统能召回 “API 调试步骤”“常见错误解决” 两个关联片段,而非零散的句子。

(三)切片向量化与存储阶段:选择工具提升检索效率

向量化和存储的核心是 “选对模型 + 选对数据库”,直接影响检索速度和准确性。

1. Embedding 模型选择
  • 核心原则:优先选择与大模型同生态、更新时间近的模型。例如,使用阿里云百炼大模型时,搭配百炼 Embedding 模型,语义匹配度更高;

  • 效果差异:新模型(如 Qwen-Embedding-V2)比旧模型(如 BERT-Base)的向量区分度提升 30% 以上,能减少 “相似问题误判”(如 “年假申请” 与 “病假申请”)。

2. 向量数据库选择

根据应用规模选择合适的存储方案,兼顾成本与性能:

存储类型

特点

适用场景

推荐方案(阿里云)

内存向量存储

速度快、无运维成本,但重启后数据丢失

开发测试、临时验证

百炼内置内存向量存储

本地向量数据库

数据持久化、需自行运维

小规模应用(日活≤100)

Milvus 本地版、Chroma

云服务向量存储

自动扩容、监控完善、按量付费

生产环境(高并发、大规模数据)

向量检索服务(DashVector)、PolarDB 向量功能

云服务优势:支持 “向量检索 + 标量过滤” 混合查询(如 “检索‘年假’相关片段,且发布时间≥2024 年”),进一步提升检索精度。

(四)检索召回阶段:精准定位相关片段

检索召回的核心问题是 “如何从海量片段中找到最相关的内容”,可从 “检索前” 和 “检索后” 两个时机优化:

1. 检索前:优化查询,还原真实意图

通过改写、扩写问题,让查询更精准,常见策略如下:

策略

操作方法

示例

问题改写

补充模糊信息,明确意图

“附近有好吃的吗?”→“推荐我公司附近评分≥4.5 的餐厅”

问题扩写

增加相关维度,扩大检索范围

“张伟是哪个部门的?”→“张伟的部门、联系方式、职责是什么?”

基于用户画像扩写

结合用户身份补充上下文

内容工程师问 “工作注意事项”→“内容工程师的工作注意事项”

提取标签过滤

从问题中提取标签,缩小检索范围

“内容工程师注意事项”→标签:{岗位:内容工程师},检索时先过滤标签

2. 检索后:过滤噪声,提升片段质量

召回片段后,通过 “重排序”“补充上下文” 进一步优化:

  • 重排序(ReRank):用文本排序模型(如阿里云百炼 ReRank 模型)对召回的 Top 20 片段重新打分,筛选出 Top 3-5 个最相关片段,减少无关信息干扰;

  • 滑动窗口检索:召回某片段后,补充其前后 N 个片段作为上下文。例如,检索到 “年假申请需提交申请表”,补充前后的 “申请表下载路径”“提交截止时间”,确保信息完整。

(五)生成答案阶段:避免幻觉,提升输出质量

即使检索到相关片段,仍可能出现 “模型捏造答案”“输出不符合要求” 等问题,可从 3 个维度优化:

选择合适的大模型

  • 通用场景(如政策问答):选择平衡速度与准确性的模型(如 Qwen2.5-7B);

  • 专业场景(如法律、医疗):选择专业领域微调模型(如百炼法律大模型),减少专业术语错误。

优化提示词模板

明确 “限制条件” 和 “输出格式”,例如:

请根据以下参考信息回答用户问题,严格遵守规则: 参考信息:{召回片段1}{召回片段2} 用户问题:{question} 规则: 1. 若参考信息中无答案,直接回复“暂无相关信息”,不编造内容; 2. 答案分点列出,每点不超过20字; 3. 必须引用参考信息中的具体表述(如“根据第3条:XXX”)。

调整模型参数

  • 温度(Temperature):设为 0.1-0.3,降低随机性,避免幻觉;

  • 最大生成长度:根据片段长度设置(如片段共 500 字,最大生成长度设为 300 字),避免输出过长或过短。

四、RAG 应用实战:以 “企业 HR 问答系统” 为例

结合上述流程与优化策略,构建一个 “企业 HR 问答系统”,具体步骤如下:

文档准备:收集企业 HR 文档(员工手册、年假政策、薪资计算规则等),补充 “远程办公政策”“新员工入职流程” 等高频意图相关内容;

文档解析与切片:将文档转为 Markdown 格式,用 “Markdown 切片” 按 “# 章节→## 子标题” 分割,每个切片包含 1 个完整子主题(如 “年假申请条件”“年假天数计算”);

向量化与存储:用百炼 Embedding 模型向量化切片,存储到阿里云 DashVector(生产环境);

检索优化

  • 检索前:用户问 “我能休年假吗?”,结合用户画像(入职时间 2 年)改写为 “入职 2 年的员工能否申请年假?”;

  • 检索后:召回 Top 10 片段,用 ReRank 模型筛选 Top 3,补充前后 1 个句子作为上下文;

生成答案:用百炼大模型,搭配优化后的提示词模板,输出分点答案,并引用手册条款。

五、总结

RAG 的核心价值是 “让大模型基于真实信息回答”,其效果优化需贯穿 “文档准备→检索→生成” 全链路。新手入门时,可先按 “句子切片 + 内存向量存储 + 基础提示词” 搭建最小原型,再逐步通过 “问题改写、重排序、知识库补充” 提升效果。在生产环境中,优先选择云服务向量数据库和专业 Embedding 模型,兼顾性能与运维效率。

如何学习AGI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

**

一、2025最新大模型学习路线

一个明确的学习路线可以帮助新人了解从哪里开始,按照什么顺序学习,以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛,没有明确的学习路线可能会导致新人感到迷茫,不知道应该专注于哪些内容。

我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。

L1级别:AI大模型时代的华丽登场

L1阶段:我们会去了解大模型的基础知识,以及大模型在各个行业的应用和分析;学习理解大模型的核心原理,关键技术,以及大模型应用场景;通过理论原理结合多个项目实战,从提示工程基础到提示工程进阶,掌握Prompt提示工程。

L2级别:AI大模型RAG应用开发工程

L2阶段是我们的AI大模型RAG应用开发工程,我们会去学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

L3级别:大模型Agent应用架构进阶实践

L3阶段:大模型Agent应用架构进阶实现,我们会去学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造我们自己的Agent智能体;同时还可以学习到包括Coze、Dify在内的可视化工具的使用。

L4级别:大模型微调与私有化部署

L4阶段:大模型的微调和私有化部署,我们会更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调;并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握;而L3 L4更多的是通过项目实战来掌握大模型的应用开发,针对以上大模型的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。

二、大模型经典PDF书籍

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

三、大模型视频教程

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

四、大模型项目实战

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

五、大模型面试题

面试不仅是技术的较量,更需要充分的准备。

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


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

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

学霸同款 8个一键生成论文工具:MBA毕业论文+开题报告高效写作测评

在当前学术研究日益精细化、数据化的大背景下&#xff0c;MBA学员在撰写毕业论文和开题报告时面临诸多挑战&#xff1a;从选题构思到文献综述&#xff0c;从数据分析到格式规范&#xff0c;每一步都可能成为效率瓶颈。为帮助更多学子高效应对这些难题&#xff0c;我们基于2026年…

作者头像 李华
网站建设 2026/4/16 7:42:08

基于PLC的全自动洗衣机的掌控系统编辑(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于PLC的全自动洗衣机的掌控系统编辑(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相关定制&#xff09;_文章底部可以扫码基于PLC的全自动洗衣机的掌控系统编辑(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相关定制&#xff09;_文章底部可以扫码 摘…

作者头像 李华
网站建设 2026/4/16 13:33:11

Nodejs毕设项目推荐-基于nodejs回忆小书屋管理微信小程序基于nodejs的回忆小书屋小程序【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/16 13:43:45

MySQL之SQL语句执行过程详解

MySQL之SQL语句执行过程详解 概述 MySQL执行一条SQL语句需要经过多个处理阶段&#xff0c;从客户端发送请求到最终返回结果&#xff0c;整个过程涉及多个组件的协同工作。本文将详细介绍MySQL中SQL语句的执行流程。 整体架构 MySQL的架构可以分为三层&#xff1a; 连接层&…

作者头像 李华