《AI不是魔法》

写给软件工程师的AI工程课

第四堂:RAG到底是什么?

这一篇适合谁:

如果你听说过RAG、想知道它为什么突然这么火、以及它到底解决了什么问题——那么这一篇值得看完。

上一堂课,我们知道:

AI不是因为理解语言才预测Token,而是在不断预测Token的过程中,看起来像理解了语言。

这一堂课,我们继续回答:

为什么最聪明的AI,对自己公司的事情一无所知?

去年有家公司上线了一个客服机器人。第一天就收到了投诉。

客户问:

“我的退款什么时候到账?”

AI回答:

“一般七个工作日。”

但实际上,这家公司的退款政策刚刚更新,已经改成了24小时到账

结果:客户投诉,客服重新解释,企业赔礼道歉。

AI说错了吗?没有。它只是回答了“它知道的”。

但它不知道的是:公司政策已经变了。

后来,一个朋友问我:

“我们公司的产品说明书有两千多页。为什么不能直接扔给ChatGPT?”

他说:

“ChatGPT不是很聪明吗?为什么还要搞什么RAG?”

我问他一句:

“ChatGPT知道你们公司的数据库吗?”

他说:

“不知道。”

我又问:

“它知道昨天刚更新的接口文档吗?”

他说:

“不知道。”

我说:

问题从来不是AI不会回答。问题是,它回答之前,从来没有看过正确的资料。

这就是企业为什么需要RAG。

一、AI的天然缺陷

第三篇我们说过:LLM的知识截止于训练数据。

它知道莎士比亚,知道量子力学,知道Python语法。

但它不知道:

  • 你公司昨天的销售额

  • 客户刚刚提交的工单状态

  • 今天早上发布的内部文档

  • 数据库里最新的用户信息

为什么?因为这些内容不在它的训练数据里。

AI训练结束的那一刻,它的知识就被冻结了。

昨天发生的事情,它不知道。公司的内部文档,它不知道。数据库里的实时数据,它不知道。

所以,企业面临一个尴尬的局面:最聪明的AI,对自己公司的事情一无所知。

二、RAG的核心思想:开卷考试

传统的LLM回答问题,就像闭卷考试

学生(AI)只能凭记忆作答。记对了就答对,记错了就答错,没学过就只能瞎编。

RAG的做法,是把它变成开卷考试

学生(AI)可以翻阅参考资料(知识库),找到相关的内容,再据此作答。

整个过程可以用一张图来表示:

以前(闭卷考试):
用户提问 → AI凭记忆回答


现在(开卷考试):
用户提问
    ↓
搜索公司知识库 → 找到相关内容
    ↓
AI基于检索结果组织答案
    ↓
回答

RAG没有改变LLM。它只是改变了LLM回答问题之前看到的内容。

对于LLM来说,知识库里的内容和Prompt里的内容,本质上都会变成它当前的Context。

这就是第四篇的核心观点。

三、为什么RAG有效?

要理解RAG为什么有效,我们需要回到第二篇的核心认知:上下文决定AI的回答质量。

Prompt是在问题里构建上下文。你给AI一段详细的背景信息,它就能给出更精准的回答。

RAG是在回答前补充上下文。AI不知道公司政策?没关系,先把员工手册放进它的上下文里。

Prompt告诉AI应该怎么回答。RAG告诉AI应该依据什么回答。

两者最终做的,都是同一件事:丰富LLM当前的Context。

没有RAG时,AI只能凭“记忆”回答:

用户:我们公司的支付接口怎么调?
AI的上下文:只有用户的问题
AI的回答:(凭训练数据中的通用支付接口知识猜测)

有RAG时,AI先查资料再回答:

用户:我们公司的支付接口怎么调?
AI的上下文:用户的问题 + 公司最新的OpenAPI文档
AI的回答:(基于真实的接口定义)

RAG不是让AI变聪明,而是让AI学会查资料。

它把“凭记忆回答”变成了“有依据回答”。

四、一个真实的工程案例

一个开发团队用AI辅助接口对接。开发同学问:

请帮我生成调用支付接口的示例代码。

AI回答了一段看起来非常标准的代码,参数齐全,注释完整。

开发同学照着代码接入,结果接口一直报 404。

排查发现:AI回答的是通用的支付接口示例,而他们公司的支付接口是自定义的,参数名和签名方式完全不同。

后来,他们把公司最新的OpenAPI文档接入RAG,再问同样的问题。AI这次基于真实的接口文档生成了代码,一次就跑通了。

AI写代码的能力没有变。变的是,它终于知道应该依据哪一份接口文档写代码。

一个一分钟实验

打开AI对话工具,先问它一个问题:

我们公司员工有多少人?

AI大概率会回答:我不知道,或者给出一个通用答案。

然后,你把一段员工手册复制进去,再问同样的问题:

根据上面的员工手册,我们公司员工有多少人?

AI这次能够根据你提供的资料回答。

这个实验让你亲身体验:AI不是变聪明了,而是你给了它参考资料。

工程师容易踩的坑

🚫 错误做法:
把RAG当成“把文档丢给AI就行了”,什么资料都往里塞。

为什么错:
没有正确的资料,RAG也无能为力。如果知识库里都是过时、错误、矛盾的文档,AI给出的答案只会更混乱。

✅ 正确做法:
保证知识库的质量。先确保资料是正确的,再让AI基于它回答。

今天记住这一句话

RAG不是让AI变聪明,而是让AI学会查资料。

如果今天只带走一个观点,那就是:企业真正交付的,从来不是一个LLM。而是一个知道什么时候查资料、什么时候回答的LLM。

下一篇预告:

RAG让AI学会了查资料。

但还有一个问题:AI知道了知识,但它能采取行动吗?

比如,它知道客户的订单延迟了,但它能自动发起退款吗?

下一篇,我们聊Function Calling。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐