Agent & RAG 测试工程笔记15:生成层到底在干嘛?从“两个输入搞不清”到彻底理顺
一、前言
在把 RAG 前面几层(解析、切分、检索、门控)都梳理完之后,卡主一个点:
生成层到底在干嘛?
有两个疑问:
疑问1:
前面都已经把内容找出来了,那还要 LLM 干嘛?
疑问2:
系统有两个输入:
-
教学资料(PDF)
-
用户输入的一句话
这两个怎么一起作用的?
二、生成层只做一件事
生成层不是“找答案”,是“把答案说出来”
前面几层已经做完了:
-
内容在哪里(解析 + 切分)
-
哪些内容相关(检索)
-
能不能回答(门控)
到生成层,只剩一件事:
把这些内容组织成用户能直接用的一段话
举个例子:
原始资料
发动机舱检查流程:
- 检查机油液位
- 检查冷却液
- 检查皮带状态
- 检查电瓶接线
注意:发动机高温时不要打开水箱盖
不用LLM
系统返回的就是这段原文。
用户要自己理解、自己组织语言,才能讲给学生听。
用LLM
系统输出会变成这样:
这一部分就是发动机舱的基础检查流程。
检查顺序很简单。先看机油液位,再看冷却液,然后检查皮带状态,最后看电瓶接线是否牢固。
有一个点要提醒,发动机高温的时候不要直接打开水箱盖,这个是有安全风险的。
差别就在这里:
前者是资料,后者是可以直接讲的内容。
三、误区:两个输入一起进模型?
一开始我脑子里的模型是这样的:
教学资料 + 用户问题 → 一起给 LLM
这是错的。
四、真实流程
系统是这样跑的:
① 上传教学资料(PDF)
↓
② 解析 + 切分 → chunks(知识库)
(此时还没有LLM)
--------------------------------
③ 用户输入一句话(指令)
↓
④ 检索 → 找到 top-3 chunks
↓
⑤ 门控 → 判断能不能回答
↓
⑥ 构造 Prompt
↓
⑦ 调用 LLM 输出
五、两个输入的本质分工
现在再看就清楚了:
教学资料
提供“有什么内容”(静态)
用户指令
决定“怎么用这些内容”(动态)
举个例子:
同一份资料:
-
说“生成讲义” → 输出偏结构化
-
说“帮我讲一下” → 输出偏口语讲解
内容没变,变的是表达方式
六、最关键一层:Prompt到底是什么
这里是我一开始模糊的地方。
我原来的理解是:
模型自己理解上下文,然后生成
实际上不是。
七、真实情况:Prompt是“拼出来的”
可以这么理解:
Prompt = 模板 + chunk + 用户指令
结构拆开是这样:
1️⃣ 角色 + 任务
你是一个教学助手
请基于教学资料生成讲解内容
2️⃣ 上下文(来自检索层)
以下是相关教学资料:
[chunk1]
[chunk2]
[chunk3]
这里非常关键:
内容不是模型生成的,是检索层给的
3️⃣ 用户指令
用户要求:
生成一段课堂讲解
4️⃣ 规则(约束输出)
要求:
- 只基于提供内容
- 不要编造
- 表达自然
- 使用短句
八、完整 Prompt 长这样
你是一个教学助手
请基于提供的教学资料生成讲解内容
以下是相关资料:
[chunk1]
[chunk2]
[chunk3]
用户要求:
生成一段课堂讲解
要求:
- 只基于提供内容
- 不要编造
- 表达自然
- 使用短句
九、现在再回答最开始的两个问题
问题1:LLM有没有用?
有用,但只在最后一步
它的作用是:
把“检索结果”变成“可读内容”
问题2:两个输入怎么处理?
教学资料 → 提前处理成 chunks
用户指令 → 每次触发检索 + 生成
不是一起进模型,而是分阶段参与。
十、一个关键的认知
LLM不是在“找知识”,而是在“整理知识”
所以:
-
chunk错 → 输出一定错
-
chunk不全 → 输出不完整
-
prompt写不好 → 输出像AI
十一、这一层真正会出什么问题
生成层的问题,已经不是“能不能找到”,是:
1. 幻觉问题
资料里没有,但模型说了
2. 表达问题
一堆“然后、接着”,一看就是AI
3. 格式问题
有时候长,有时候短,不稳定
4. 接口问题
超时、异常、返回失败
小结
生成层可以用一句话总结:
把“找出来的内容”,变成“用户能直接用的表达”
两点:
-
说对(基于资料)
-
说得像人(表达自然)
下一篇
生成层怎么测(不仅是对不对,还有好不好用)
更多推荐



所有评论(0)