Embedding、Rerank 和LLM大模型:它们在 RAG 里分别干什么?
现在很多 AI 知识库、智能客服、文档问答、代码助手,背后都会提到一个词:RAG。
RAG 的全称是 Retrieval-Augmented Generation,中文一般叫:
检索增强生成
简单说就是:
大模型回答问题之前,先去知识库里找资料,再根据资料生成答案。
而在 RAG 里,最常见的几个模型就是:
这几个模型不是互相替代的关系,而是分工协作。
一、为什么需要 RAG?
大模型本身虽然很强,但它有几个天然问题:
不知道你的私有资料
比如公司的接口文档、内部业务流程、项目代码规范,大模型训练时根本没见过。
知识可能过期
比如某个框架的新版本、新 API、新配置方式,大模型不一定知道。
容易编
如果没有资料约束,大模型可能会根据“看起来合理”的内容生成答案,也就是常说的幻觉。
所以 RAG 的思路是:
不要求大模型死记硬背所有知识,而是让它回答前先查资料。
这就像一个人写文章之前,先去资料库查资料,再整理成答案。
二、Embedding 模型:负责“先找可能相关的资料”
Embedding 模型的作用是:
把文本变成一组数字向量。
但这里的重点不是“文字变数字”,而是:
把文本的语义变成可以计算距离的数字。
比如这几句话:
从字面上看,第一句和第二句用词不同。
但是从语义上看:
汽车和车辆相关保养和维护相关
所以 Embedding 模型会让前两句话的向量距离更近,而让第三句话距离更远。
这就是语义向量的价值。
在 RAG 里,系统会提前把知识库里的文档切成片段,然后用 Embedding 模型转成向量,存到向量数据库里。
用户提问时,也会把问题转成向量,然后去向量数据库里找距离最近的文档片段。
所以 Embedding 模型主要解决的问题是:
从大量资料中,快速找出“可能相关”的内容。
三、为什么向量化也需要模型?
很多人第一次听到 Embedding 会疑惑:
向量化不就是转数字吗?为什么还要模型?
因为普通的转数字不懂语义。
比如 Unicode、ASCII、Hash 这些方式,也能把文本变成数字,但它们只知道字符编号,不知道文字含义。
Embedding 模型之所以需要训练,是因为它要学会大量语言关系:
SSO和单点登录相关Spring Security和认证授权相关ControllerAdvice和统一异常处理相关HandlerThread和后台线程相关AlarmManager和定时任务相关
这些语义关系不是简单规则能写死的,所以需要模型学习。
因此,Embedding 模型不是普通编码器,而是一个“语义压缩器”。
它把文本含义压缩成一个向量坐标,让机器可以计算:
哪些内容和用户问题更接近?
四、Rerank 模型:负责“从候选内容里挑最准确的”
Embedding 模型虽然能快速召回内容,但它通常是“粗排”。
比如用户问:
Spring Security 如何实现单点登录?
Embedding 可能召回这些内容:
这里面有些非常相关,有些只是沾边。
这时候就需要 Rerank 模型。
Rerank 模型会拿“用户问题”和“候选文档”放在一起判断,然后重新打分排序。
它解决的问题是:
从一批可能相关的内容里,挑出真正最适合回答问题的内容。
可以这样理解:
Embedding 负责快,Rerank 负责准。
五、LLM 大模型:负责“根据资料生成答案”
当 Embedding 找到候选资料,Rerank 排好顺序后,系统会取前几段最相关的内容交给大模型。
大模型的任务是:
阅读这些资料,然后组织成自然语言答案。
比如最终给大模型的内容可能包括:
SSO 的基本流程
OAuth2 授权码模式
Spring Security OAuth2 Client 配置
认证中心和业务系统的关系
Token 和本地登录态的处理方式
然后大模型根据这些资料生成一篇完整答案。
注意,这时候大模型不是凭空回答,而是基于检索出来的资料回答。
这也是 RAG 能降低幻觉的原因。
六、完整 RAG 流程
一个典型 RAG 流程大概是这样的:
如果再拆细一点,可以分成两个阶段。
第一阶段:文档入库
第二阶段:用户提问
七、用 Java Web 知识库举个例子
假设你有一个 Java Web 学习知识库,里面有这些内容:
Spring Security 登录认证
OAuth2 授权码模式
Sa-Token 登录体系
JWT Token 认证
Session 共享
Redis 存储登录态
SSO 单点登录方案
Spring Boot 统一异常处理
用户问:
Java Web 项目怎么实现单点登录?
系统不会直接让大模型硬答,而是先走 RAG。
Embedding 先召回可能相关的内容:
然后 Rerank 重新排序:
最后大模型根据这些资料生成答案。
这样回答会更贴合你的知识库,而不是泛泛而谈。
八、Embedding、Rerank、LLM 的区别
一句话总结:
Embedding 负责找资料,Rerank 负责挑资料,LLM 负责写答案。
九、是不是所有 RAG 都需要 Rerank?
不一定。
如果知识库比较小,或者对准确率要求没那么高,可以只用:
Embedding + 向量数据库 + LLM
如果知识库比较大,内容相似度高,或者问题对准确率要求比较高,就建议加 Rerank。
比如这些场景更适合加 Rerank:
企业内部知识库
法律文档问答
医疗资料检索
Java / Android 技术文档问答
大型代码库搜索
客服知识库
多产品、多版本文档检索
因为这些场景里,光靠向量相似度容易召回一些“看起来相关,但不是最合适”的内容。
Rerank 可以明显提升最终答案质量。
十、总结
Embedding、Rerank 和 LLM 是 RAG 系统里的三个关键角色。
如果用一句话理解:
RAG 不是让大模型凭空回答,而是让大模型先查资料,再基于资料回答。
而 Embedding 和 Rerank 的价值就在于:
它们决定了大模型能不能拿到正确的资料。
资料找错了,大模型再强也容易答偏。
资料找准了,大模型的回答质量才会真正稳定。
Embedding、Rerank 和LLM大模型:它们在 RAG 里分别干什么?
https://lautung.com/archives/ecY0yjLc
评论