开头
小李是电商客服主管,手下20个客服每天回答上千条咨询。
60%的时间都在回答重复问题:"怎么退货"、"发货多久到"...
老板说:"用大模型啊!"
小李试了试,发现ChatGPT要么胡说八道,要么说不知道。
它不知道公司的私有知识。
那怎么办?这就是今天要讲的——RAG(检索增强生成)。
01 RAG是什么
RAG,全称Retrieval-Augmented Generation,翻译过来就是检索增强生成。
怎么理解?用开卷考试来类比:
传统大模型就像一个记忆力超群的学生,但他只记得训练时学过的知识。你问他公司内部的文档,他没见过,自然答不上来。
RAG就是给这个学生配了一本"开卷考试"的资料书。每次回答问题前,他先去资料书里查相关内容,再基于这些内容回答。
所以RAG的核心就两步:先检索,再生成。
① 用户提问
② 系统从知识库里检索相关内容
③ 把问题和检索到的内容一起发给大模型
④ 大模型基于这些内容生成答案
就这么简单。
02 为什么需要RAG
先说大模型的三个硬伤:
幻觉
大模型会一本正经地胡说八道,因为它本质上是概率生成,不是事实查询。
知识滞后
大模型的知识是训练时"冷冻"的,之后的新政策、新产品它都不知道。
黑盒
你不知道它为什么这么回答,也没法验证答案的真实性。
那有没有其他方案?
方案1:上下文注入
每次提问都把文档传给大模型。
问题是:文档太长会超出上下文窗口,而且每次都传太浪费token。
方案2:微调
把私有知识训练进大模型。
问题是:成本高、时间长,而且知识一旦进入模型就变成黑盒,没法溯源。
所以RAG是更好的选择:
✓ 不需要改造大模型,只需要建一个知识库
✓ 知识可以随时更新
✓ 答案可以溯源到原文档
✓ 成本低,所有公司都用得起
03 RAG的完整流程
RAG的流程分两部分:知识库构建(提问前)和检索生成(提问后)。
继续用开卷考试来类比。
🔶 3.1 知识库构建(提问前)
想象你要参加一场开卷考试,需要做三件事:
第一步:分片(Chunking)
你不能把整本教材搬进考场。你要把重点内容整理成笔记卡片,每张卡片讲一个知识点。
RAG也是一样。文档太长,大模型处理不了。所以要把文档切成一个个知识片段(Chunk)。
切分方式有很多:按字数切、按段落切、按章节切...关键是保证每个片段逻辑完整,不能断章取义。
第二步:Embedding向量化
你怎么快速找到需要的笔记?靠标签或关键词。RAG怎么知道哪个片段讲什么?靠向量。
什么是向量?
向量就是一个数字数组,比如 [1.0, 2.3, 5.76, -3.6]。每个向量都有维度,维度就是数组里数字的个数。
你可以把向量理解成"文本的坐标"。意思相近的文本,它们的向量在空间上的距离也近。
比如"苹果怎么吃"和"苹果的营养价值",这两个问题意思相近,它们对应的向量在空间上就会靠得很近。
什么是Embedding?
Embedding就是把文本转换成向量的过程。这个过程由Embedding模型完成。就像翻译官把中文翻译成英文,Embedding模型把文本"翻译"成向量。
什么是向量数据库?
向量数据库就是专门存储和查询向量的数据库。它存两样东西:
• 原始文本(比如"苹果怎么吃")
• 对应的向量(比如 [0.2, 0.8, 0.5, ...])
为什么要存原始文本?因为向量只是中间结果,最终还是要用原始文本来回答问题。
第三步:入库
把所有知识片段都Embedding成向量,存进向量数据库。你的"开卷考试小抄"就准备好了。
🔶 34.2 检索与生成(提问后)
现在你坐在考场上,看到考题了。
第一步:Query向量化
你先把考题"翻译"成向量,才能去数据库里找相似的内容。
用户提问后,系统用同一个Embedding模型把问题转换成向量。
注意:必须用同一个模型。如果知识库用模型A向量化,查询用模型B,就像一个人用GPS坐标,另一个人用北斗坐标,没法比较。
第二步:召回(Retrieval)
召回就是搜索与用户问题相关片段的过程。
你拿着问题的向量,去向量数据库里找最相似的Top-K个片段。
比如K=10,就找出最相似的10个片段。
怎么判断相似?靠向量相似度计算。
三种相似度计算方法:
① 余弦相似度
计算两个向量之间夹角的cos值。夹角越小,相似度越高。
公式:cos(θ) = (A·B) / (|A| × |B|)
余弦相似度只看方向,不看长度。适合文本相似度计算。
② 欧式距离
计算两个向量之间的直线距离。距离越小,相似度越高。
公式:d = √(Σ(Ai - Bi)²)
欧式距离既看方向也看长度。
③ 点积
计算两个向量的点积。点积越大,相似度越高。
公式:A·B = Σ(Ai × Bi)
点积既考虑方向也考虑长度。如果两个向量方向一致,它们越长,点积越大。
召回追求的是"快和全"——宁可错杀一千,不可放过一个。返回的结果可能不都精准回答用户问题,但相关内容都在里面。
第三步:重排(Reranking)
召回了10个片段,但它们的排序是基于向量距离的,不一定最优。
重排模型(Reranker)会用更精细的方式重新打分排序,选出最相关的Top-3。
召回是从所有片段里挑10个,重排是从这10个里再挑3个最相关的。
为什么不直接在召回阶段挑3个?因为召回要快,重排要准。召回用轻量级方法快速筛选,重排用更复杂的模型精细排序。
第四步:生成
把考题和重排后的Top-3片段,一起发给大模型。大模型基于这些内容生成答案。
提示词里要明确告诉大模型:只允许基于给定的信息回答,不要自由发挥。这样大模型就相当于有了"开卷考试"的资料,答案的准确性和可靠性就有了保障。
04 什么场景用RAG
RAG适合两类场景:对内和对外。
🔸 对内场景
① 企业知识库/智能问答
• 新员工入职助手:回答公司政策、HR制度、IT流程
• 产品知识问答:销售查产品参数、功能对比
• IT支持助手:员工查技术文档、故障排查指南
② 专业领域辅助
• 法律文档检索:律师查案例、法条
• 医疗信息查询:医生查药品、诊疗指南
• 金融研报分析:分析师查行业数据、公司财报
🔸 对外场景
① 智能客服
• 7x24小时在线答疑:基于产品手册回答客户问题
• 售后支持:基于用户手册提供故障排查向导
② 电商导购
• 个性化商品推荐:基于用户需求推荐商品
• 产品对比:多款产品参数对比分析
核心判断标准:
如果你的业务有私有知识需要让AI理解,或者知识更新频繁大模型跟不上,就用RAG。
总结
回顾一下今天的内容:
① RAG是什么?
先检索,再生成。给大模型配一本"开卷考试"的资料书。
② 为什么需要RAG?
大模型有幻觉、知识滞后、黑盒三个硬伤。RAG低成本、可溯源、易更新。
③ RAG怎么实现?
• 知识库构建:分片 → Embedding向量化 → 存入向量数据库
• 检索生成:Query向量化 → 召回 → 重排 → 生成
④ 什么场景用?
有私有知识、需要准确答案、知识更新频繁的场景。
你能带走什么?
下次老板再问你"怎么让大模型读懂我们的文档",你知道:
• 不能直接问,要建一个RAG知识库
• 核心流程是分片、向量化、检索、生成
• 关键是保证检索质量,让大模型拿到正确的"开卷资料"
我是立红,一个致力于将复杂AI技术转化为产品价值的产品经理。
如果你对Agent、AI工作流或更多AI落地场景感兴趣,欢迎关注我,下一篇文章再见。