AI认知篇4:RAG技术全流程

前言

这是我的agent系列文章的第4篇,该系列分为三部分:

  • AI认知篇:详细讲解相关基础概念
  • AI实践篇:分享诸如skills怎么写、怎么ai coding、怎么写好prompt等的最佳实践
  • AI八股篇:分享我自己整理的应付大模型应用开发岗位必备的八股笔记

如果觉得有帮助,欢迎关注我并期待后续文章!预期是日更哦!当天没更可能是因为太累了,周末会弥补的。

在大模型应用落地的浪潮中,我们常常面临一个核心矛盾:大模型博学但“失忆”,且容易“胡编乱造”。它不知道我们公司昨天的会议纪要,也不了解最新的内部产品文档。为了解决这个问题,检索增强生成(RAG, Retrieval-Augmented Generation) 成为了当前构建私有知识库、智能客服系统的标准答案。

很多人以为RAG就是“调个API、存个向量库”那么简单,但实际落地时往往发现检索不准、回答混乱。今天,我想结合最近的实战经验,和大家深入拆解一个高质量RAG系统背后的完整技术链路,聊聊那些决定成败的关键细节。

一、核心逻辑:为什么是RAG?

在RAG出现之前,想让大模型懂私有数据,主要靠微调(Fine-tuning)。但微调成本高、周期长,且难以实时更新数据。一旦业务文档变了,模型就得重新训练。

RAG提供了一种更优雅的“开卷考试”模式:

  1. 不修改模型参数:保留大模型通用的推理能力。
  2. 外挂知识库:将私有数据转化为向量索引。
  3. 实时检索:用户提问时,先去知识库里找相关片段,再连同问题一起喂给大模型。

这样,模型就能基于最新的事实依据回答问题,大幅减少幻觉,且数据更新只需刷新索引,无需重训模型。

二、离线阶段:打造高质量的“知识索引”

RAG的效果上限,其实在数据预处理阶段就已经决定了。如果灌进去的数据是垃圾,检索出来的必然是垃圾(Garbage In, Garbage Out)。

1. 数据加载与清洗(Data Loading & Cleaning)

这一步的目标是将非结构化数据(PDF、Word、Markdown、网页等)转化为纯净的文本。

  • 多格式解析:需要针对不同文件格式使用专门的解析器。例如,PDF中的表格、页眉页脚往往是噪音,需要特殊处理;代码文件则需要保留缩进和结构。
  • 噪声过滤:去除无关的特殊字符、乱码、重复的版权声明等,确保进入后续流程的是高纯度文本。

2. 文本分块(Chunking):最关键的策略

直接将整篇文档向量化是不可行的,因为大模型的上下文窗口有限,且长文本会稀释关键信息的权重。如何切分是RAG中最具艺术感的环节。

  • 固定长度切分:最简单的方法,按字符数或Token数切分。但容易切断句子语义,导致检索到的片段“没头没尾”。
  • 语义分块:更高级的策略。利用段落标记、标题层级或递归字符分割(Recursive Character Text Splitter),尽量保持语义单元的完整性。
  • 重叠窗口(Overlap):这是必选动作。相邻的两个块之间必须保留一部分重叠内容(如10%-20%),防止关键信息正好被切在边界上。
  • 粒度选择:块太大,包含噪音多,影响相似度计算;块太小,丢失上下文。通常200-500 Token是一个经验上的甜蜜点,具体需根据业务文档类型调整。

3. 向量化(Embedding)

计算机不懂文字,只懂数字。我们需要通过**嵌入模型(Embedding Model)**将每个文本块转化为一串高维向量。

  • 语义映射:这个向量空间非常神奇,语义相似的文本(如“如何重置密码”和“忘记密码怎么办”),其向量距离会非常近。

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

内容包含: 1.后端八股大全:多一句没有少一句不行的最精简八股整理,完全可以应付校招八股拷打! 2.速成项目话术:目前有魔改苍穹外卖项目话术(额外扩展了很多技术亮点),能速成拿去面试,后面会更新agent开发等等热门高质量项目话术 3.智力题超详细题解汇总; 4.面试时非技术问题话术整理,绝对震惊面试官一年; 5.算法lc hot100全题系列题解:绝对通俗易懂。 欢迎订阅!

全部评论

相关推荐

先交代个人bg:26届北大计算机硕士,后端开发,已拿MiniMax转正Offer。闲来刷牛客发现了MiniMax的话题,也来凑个热闹,分享几点真实体验。关于技术成长:新人也能啃硬骨头入职第二周,mentor给我派了个活:海螺AI的流式输出在高峰期有延迟抖动,目标是P99延迟再降50ms。说实话当时有点懵,心想这不应该是他们干的活么?结果mentor直接拉我看Grafana大盘,拆解M2.5模型推理架构,让我自己找切入点。那一周基本在读代码、看论文、和infra团队过方案。后来我提了个想法:在网关层加自适应批处理策略,根据实时流量动态调整batch大小。mentor看完说思路可行,直接让我写代码上线试试。最后优化上线,高峰期P99延迟降了60ms。怎么说呢,工作确实很硬核,之前实习的时候这种活儿大概率轮不到新人碰。这边倒好,只要方案有数据支撑,没人会因为你是实习生就拦着。关于mentor:教的是怎么思考问题记得有次遇到状态同步的坑,mentor没直接给答案,而是从分布式系统的一致性模型开始推,让我自己琢磨结论。他的原话:不只是会写代码,要成为能设计系统的人。听起来比较简单,但对于校招生来说并没有这些意识,很多时候需要有这样的引路人指引方向,这可能比敲2000行代码都管用。团队里学习氛围也很好,算法专家、infra大牛都有,中午吃饭聊的都是最新论文、模型边界。这种环境待三个月,比自己闷头学一年来得快。关于地理位置还有个挺实际的,公司在海淀区蓟门一号,骑车十分钟到公司。中午甚至能溜回学校吃顿饭,下午再骑回来写代码。对于还在学校想找实习的同学来说,这种通勤体验确实香。大概就分享这么多吧,如果说对MiniMax观望的学弟学妹总结的话,我觉得是这样,如果你想找个地方写写CRUD混个实习经历,那这边可能不太合适,但如果你想碰点真东西、做的东西真能上线跑、愿意被推着往前走,这里确实是个还不错的选择。
MiniMax成长空间 42人发布
点赞 评论 收藏
分享
评论
5
13
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务