近期在密集实践 RAG(检索增强生成)项目,踩坑越多,思考越深。
越实践,我越发现:与 AI 对话的本质,其实就是“指导”AI 交付令我们满意的结果。
这个结果可能是一段 Python 代码、一篇营销文案、一张图片,或者一段视频。
只不过,在指导 AI 的过程中,大部分人的直观感受是:“这个 AI 怎么这么笨?”
在我不理解 AI 的底层运行模式前,我也有同样的感受。我也曾怀疑是不是模型参数不够大?是不是需要微调?
但真的是这样吗?
不是的。在我真正理解了 AI 的运行模式之后,我发现一个扎心的真相:
不是 AI 不聪明,而是“你不理解 AI 是如何运行的”。
01 唯一的接口:Prompt
我们要重新审视一下我们和 AI 的关系。
无论你的 RAG 系统架构图画得多么复杂——用什么向量库、什么 Agent 框架、挂什么知识库——在系统运行的最后一毫秒,所有复杂的逻辑都会坍缩成一个动作:
把一堆文字拼接起来,塞进 AI 的输入框(Context Window)里。
这就是 Prompt(提示词)。它是我们与大模型沟通的唯一接口。
大模型就像一个函数。
是模型本身(比如 GPT-5、Claude-4.5、DeepSeek-v3.2),它的智商是固定的,我们很难改变。如果输出的质量很差,而(模型智商)又是目前顶尖的,那问题一定出在输入上。
很多时候,RAG 系统的表现糟糕,是因为我们把一堆切分得支离破碎、含混不清、甚至自相矛盾的文本块(Chunk),一股脑地塞进了里。
这就好比你请了一位米其林三星主厨(GPT-4),然后扔给他一篮子烂菜叶和混着泥沙的土豆。
主厨看着这堆食材,也很绝望。他做出来的,只能是一盘难以下咽的“黑暗料理”。
这就是 AI 领域的铁律:Garbage In, Garbage Out(垃圾进,垃圾出)。
想要 AI 变聪明,我们首先得学会“洗菜”。
02 别信用户的嘴,得信他的心
我们在做 RAG 时,最容易犯的错误就是:直接拿用户的问题去检索。
用户是懒惰的,也是不专业的。
用户问:“保修多久?”
如果不加处理,直接拿着这四个字去知识库搜,你可能会搜到:
这些乱七八糟的信息一拼进去,AI 也就晕了。
怎么解决?“翻译”一下。
在检索之前,我们要加一道工序:Query Rewrite(查询改写)。
我们用一个便宜的小模型,把用户的口语,翻译成机器听得懂的、精准的检索语言。
系统翻译后:“请检索 iPhone 15 Pro Max 国行版本的官方保修时长及延保政策。”别让 AI 猜谜语,把问题问清楚,答案自然就准了。
03 别信“长得像”,得信“相关性”
现在的 RAG 系统大多用“向量检索”。这玩意儿有个毛病:它看重的是“长得像不像”(语义相似度),而不是“逻辑对不对”。
这就像海选演员,向量检索帮你找来了 50 个“长得像主角”的人,但其中混杂了大量的“群演”。
如果你把这 50 段内容直接丢给大模型,它的注意力(Attention)会被稀释,这就是为什么它会忽略关键信息。
怎么解决?“重排序”。
一定要引入一个 Re-ranker(重排序模型)。
这是一个专门的“评分员”。它会对初筛出来的 50 个片段进行精细的逻辑打分,把那些滥竽充数的去掉,只留下最核心、最相关的 Top 3。
实践证明,加上这一步,AI 的智商仿佛瞬间提高了 20%。不是它变强了,是干扰它的噪音变少了。
04 给信息贴上“身份证”
最后,当我们把洗干净的食材交给 AI 时,还得告诉它这些食材的“身份”。
很多时候 AI 产生“幻觉”,是因为信息冲突。
AI 不知道谁对谁错,只好瞎编。
我们需要在 Prompt 里注入元数据(Metadata):
[来源: 2024年最新售后规定] [可信度: 高] 内容...
[来源: 2020年旧版手册] [可信度: 低] 内容...
甚至直接告诉 AI:“如果信息有冲突,以年份最新的为准。”
只有当我们把输入的信息结构化、清晰化,AI 才能发挥出它应有的推理能力。
写在最后
回到最开始的话题。
当我们觉得“AI 不聪明”的时候,不妨先停下来看看我们喂给它的 Prompt:
指导 AI,其实就是一场精密的工程管理。
把“食材”洗干净,只是第一步。
下一篇,我们聊聊怎么“摆盘”——如何通过结构化提示词和思维链(CoT),给 AI 装上更强的“脑回路”。