想做智能客服或知识库?
这项技术你必须了解!


如果你想做一個智能客服或者搭建一個能回答问题的知识库,那你就一定绕不开一个技术——RAG

它的全称是 Retrieval Augmented Generation,翻译过来就是检索增强生成

听起来挺高大上,但说白了也就这么两件事:

先从资料库里检索相关内容,再基于这些内容来生成答案。

也就是说,它先检索再生成,所以叫做检索增强生成。

RAG 是最常用的 AI 问答方案之一,很多企业内的知识助手、智能客服用的都是这项技术。


一、RAG 要解决什么问题?

假设你想做一个智能客服,这个智能客服可以回答各种关于你们公司产品的问题。

应该怎么实现呢?

首先,这个客服的内部一定要有个模型,比如 GPT-4 这种的。不过光有个模型可不够,因为模型可不知道你们公司的产品信息。

你一想,这个问题好办——在给模型发送问题的时候,我把产品手册一起发给模型不就行了?

没错,这确实是一个解决方案。

但如果产品手册的字数特别多,比如有个上百页乃至上千页的话,问题就来了:

问题一:模型可能无法读取所有内容

每个模型都只能存储一定量的信息,我们通常称这个量为上下文窗口大小。如果产品手册字数超过了上下文窗口大小,模型就会读了后面忘了前面,回答的准确率无法得到保障。

问题二:推理成本很高

输入越多,成本越高。每次回答问题都要带上一本厚厚的手册,成本可想可知,不可能少了。

问题三:响应速度受影响

输入越多,模型需要消化的内容就越多,模型的输出就会越慢。

一本上百页的 A4 手册扔进来,大概率会对模型的推理速度产生严重影响。

看来直接把文档丢给模型是行不通的。那我们是不是可以考虑只把文档中相关的内容发给模型呢?

可以,这就需要 RAG登场了。


二、RAG 是如何解决问题的?

RAG 会先把文档切为多个片段。当用户提出问题后,我们就用这个问题在所有的片段中寻找相关内容。

比如在一份上百页的产品手册中,可能只有三个片段真正与用户的问题相关。我们就把这三个片段单独挑出来,把它们和用户的问题一起发给大模型。

这样,模型就只会感知三个相关的片段,而不是整个文档。

之前的问题也就迎刃而解了。

RAG,就是这样。是不是很简单?


三、RAG 的完整流程

不过话收回来,这只是一个过度简化的链路,我隐藏了很多实现细节。比如:

  • 如何分片?
  • 如何选择相关片段?

里面的学问都不少。

下面我们把整个 RAG 的流程具体拆分一下。通常来说,RAG 的整体流程包含两个部分:

部分一:数据准备部分

发生在用户提问前。我们要在这一部分把相关文档都准备好,并完成向量化预处理。

它一共包含分片向量化两个环节。

部分二:回答部分

发生在用户提问之后。在用户问题之后,我们便会触发回答问题的各个环节。

分别是:召回 → 重排 → 生成

接下来我们就逐步拆解这五个环节,看看它们分别是如何工作的。


四、环节一:分片

分片,顾名思义就是把文档切成多个片段。

分片的方式有很多种:

  • 按照字数来分:比如 1000 个字一个片段
  • 按照段落来分:比如一个段落一个片段
  • 按照章节分
  • 按照标题分

除此之外还有很多签分方式。但不管怎么做,我们最后都需要把一片文档切为多份。

切好之后,这个环节就结束了。然后我们就要进入下一个环节——向量化。


五、环节二:向量化

向量化就是通过 embedding 将每个片段文本转换为向量,然后再将片段文本和对应向量都存储在向量数据库的过程。

这个过程一共就包含两步:

  1. embedding

    :将文本转换为向量
    2 存储:把向量存入向量数据库

不过这两个步骤所包含的信息量其实是巨大的。什么是 embedding?什么是向量数据库?可能什么是你也记不清楚了。

别急,我们先把三个概念解释清楚,然后再回来看向量化这个流程,相信你就会清楚很多。

什么是向量?

向量是数学里面的一个概念。从概念上来讲,它代表一个有大小有方向的量。在通常情况下,我们可以用一个数组来表示它。每个向量都有维度,维度的大小等于数组中数字的个数。

对于低维度的向量,我们可以直接把它们在坐标轴里面画出来。比如:

  • 一维向量:可以放置在一个一维坐标轴上
  • 二维向量:需要使用一个二维坐标轴
  • 三维向量:需要放置在一个三维坐标轴里

当然维度再大类的话就没法给你演示它在坐标轴里面的位置了,毕竟我们生活在一个三维世界里。但无法可视化并不代表就不存在。实际上,我们在 RAG 里面用到的向量维度通常情况下都会比较大,比如是几百甚至几千。

一般来说,维度越大,每个向量所包含的信息也就会越丰富,用这些向量做各种工作的可靠性也就越强。

什么是 Embedding?

Embedding 就是把文本转换为向量的过程

举个例子。假设我们以二维向量为例:

  • “马克喜欢吃水果” 对应的向量是 (1,2)
  • “马克爱吃水果” 对应的向量是 (1,1)
  • “天气真好” 对应的向量是 (-3,-1)

你会发现前两个句子的向量非常接近,而“天气真好”则距离比较远。这说明前两个句子的语义是相近的,而后者完全不相关。

这正是 embedding 的目的:语义相近的文本在经历了 embedding 之后,它们对应的向量也是相近的。

因为这样的话,当用户询问“马克喜欢吃什么”的时候,我们就可以先把这个问题的 embedding 做成向量,然后再根据向量相似度把与这个问题相关的文本也找出来。

什么是向量数据库?

向量数据库就是用来存储和查询向量的数据库。它为存储向量做了很多优化,并且还提供了计算向量相似度等相关函数,方便我们使用。

embedding 后的向量就可以放在向量数据库里面方便后续查询了。

我们最终需要的是原始的文本,向量呢只是一个中间结果。所以一般的向量数据库表格里面至少都会有原始文本和向量两列内容。


六、环节三:召回

召回就是搜索与用户问题相关片段的过程。

这个环节从用户问题开始:

  1. 用户的发送给 embedding 模型
  2. 模型会将其转换为向量
  3. 我们把它发送给向量数据库,让它查询用户问题最为相关的 10 个片段内容

召回的结果呢,就是 10 个与用户问题相关的片段。

10 这个数字并不是固定的,你也可以选择 15、20 等。具体是多少不是很重要,只要数量不是很多都可以。

那向量数据库是怎么知道哪些片段与用户问题最相关的呢?这就要计算向量相似度了。

向量相似度计算方法

目前比较流行的方案包括:余弦相似度欧式距离点积

  • 余弦相似度:主要算两个向量之间夹角的 cos 值,夹角越小相似度越高
  • 欧式距离:主要算两个向量之间的距离,距离越小相似度越高
  • 点积:不仅考虑两个向量之间的方向关系,也要考虑它们的长度

我们只需要按照向量相似度排个序,取前 10 个最大的就好了。

记住这个结论,因为这 10 个片段会发送到重排阶段继续处理。


七、环节四:重排

**重排(Reranking)**做的事情其实跟召回是一样的。

前面我们说过,召回是从所有的片段里面挑 10 份与用户问题最相似的。而重排呢,则是从召回的这 10 份里面再挑 3 份与用户问题最相似的,作为重排的结果。

你可能会想:那直接在这个阶段挑 3 个不就好了?同样地事情搞两遍干什么呢?

一次挑出 3 个当然是可以的,但这样做地效果没有召回+重排的方案好。

因为召回与重排阶段使用的文本相似度计算逻辑不一样。

召回阶段

使用的是向量相似度。无论使用哪一种方法,它们的特点都是:成本低、耗 时短、准确率低。所以适合做初步的筛选,也就是在短时间内把上千条片段的相似度数值都计算出来,从挑出 10 个最高的。

重排阶段

一般使用一种叫 cross encoder 的模型计算每个片段与用户问题的相似度。相比之下,cross encoder 的成本会比较高,耗时呢也会比较长。但为什么用它呢?因为 cross encoder 的准确率会高很多

所以它很适合做精挑细选。

你可以把它类比成公司筛选人才。众所周知,公司面试一共分为两个环节:简历筛选加面试。召回有点像简历筛选——候选人太多,公司只能用一些粗略的方法从成千上万份简历里面挑出 10 个看起来最优秀的。而重排就很像面试了,公司对这 10 个人进行面试,仔细挑选,尽可能保证从中挑出最优秀的 3 个人。


八、环节五:生成

现在我们有了用户问题,也有了与用户问题相关的 3 个片段。我们就可以把这两部分一起发给大模型,让它根据片段内容来回答用户问题。

到此,整个流程就结束了。


九、完整流程回顾

最后呢,我们把所有流程给串联一下,整体讲一遍。

提问前的准备部分

  1. 首先我们把相关资料做个分片
  2. 然后把所有的片段都扔给 embedding 模型,让它给每个片段都产出对应的向量
  3. 最后把向量存入向量数据库

到这里提问前的准备流程就结束了。这相当于我们的知识库构建已经完毕了,就等用户来用了。

用户提问之后

  1. 用户的会给到 embedding 模型,模型呢会把用户的问题转换为一个向量
  2. 然后我们会把这个向量传给向量数据库,让它给我们找到 10 个与用户问题最相近的片段
  3. 找到之后,我们再把这 10 个片段送给 cross encoder 模型,让它做个重排,从 10 个里面再筛选出 3 个相关程度最高的
  4. 然后呢,我们把这三个与用户问题相关程度最高的片段外加用户的问题一起发给大模型
  5. 大模型呢就可以给我们产出最终答案了

到这里所有的流程就算是结束了。


总结

RAG 核心要点

  • RAG = 检索 + 生成:先从资料库检索相关内容,再基于内容生成答案
  • 五大环节:分片 → 向量化 → 召回 → 重排 → 生成
  • 召回:用向量相似度从上千条中选出 10 条(低成本、高效率)
  • 重排:用 cross encoder 从 10 条中精选 3 条(高成本、高精度)
  • 生成:把精选的 3 条内容+问题发给大模型,生成最终答案

AI行业迎来前所未有的爆发式增长:从DeepSeek百万年薪招聘AI研究员,到百度、阿里、腾讯等大厂疯狂布局AI Agent,再到国家政策大力扶持数字经济和AI人才培养,所有信号都在告诉我们:AI的黄金十年,真的来了!

在行业火爆之下,AI人才争夺战也日趋白热化,其就业前景一片蓝海!

我给大家准备了一份全套的《AI大模型零基础入门+进阶学习资源包》,包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。😝有需要的小伙伴,可以VX扫描下方二维码免费领取🆓

在这里插入图片描述

人才缺口巨大

人力资源社会保障部有关报告显示,据测算,当前,****我国人工智能人才缺口超过500万,****供求比例达1∶10。脉脉最新数据也显示:AI新发岗位量较去年初暴增29倍,超1000家AI企业释放7.2万+岗位……

单拿今年的秋招来说,各互联网大厂释放出来的招聘信息中,我们就能感受到AI浪潮,比如百度90%的技术岗都与AI相关!
图片

就业薪资超高

在旺盛的市场需求下,AI岗位不仅招聘量大,薪资待遇更是“一骑绝尘”。企业为抢AI核心人才,薪资给的非常慷慨,过去一年,懂AI的人才普遍涨薪40%+!

脉脉高聘发布的《2025年度人才迁徙报告》显示,在2025年1月-10月的高薪岗位Top20排行中,AI相关岗位占了绝大多数,并且平均薪资月薪都超过6w!

在去年的秋招中,小红书给算法相关岗位的薪资为50k起,字节开出228万元的超高年薪,据《2025年秋季校园招聘白皮书》,AI算法类平均年薪达36.9万,遥遥领先其他行业!

图片

总结来说,当前人工智能岗位需求多,薪资高,前景好。在职场里,选对赛道就能赢在起跑线。抓住AI风口,轻松实现高薪就业!

但现实却是,仍有很多同学不知道如何抓住AI机遇,会遇到很多就业难题,比如:

❌ 技术过时:只会CRUD的开发者,在AI浪潮中沦为“职场裸奔者”;

❌ 薪资停滞:初级岗位内卷到白菜价,传统开发3年经验薪资涨幅不足15%;

❌ 转型无门:想学AI却找不到系统路径,83%自学党中途放弃。

他们的就业难题解决问题的关键在于:不仅要选对赛道,更要跟对老师!

我给大家准备了一份全套的《AI大模型零基础入门+进阶学习资源包》,包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。😝有需要的小伙伴,可以VX扫描下方二维码免费领取🆓

在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐