跳到主要内容

数据截至 (上游 commit eb980a5c9eea)

模型之外 — 怎么量它、怎么给它查资料、怎么让它动手

这一章讲三件事: 怎么客观地判断一个模型行不行;模型不知道的事怎么让它答对; 以及它只会说不会做的时候,怎么给它接上手脚。 这三件事的共同点是:一行模型参数都不改。 它们改的是模型周围的东西。 这是全书最后一章,也是从「造模型」转向「用模型」的那一步

1. 先看现象:模型训完了,然后呢

第 07、08 章训出来一个能对话的模型。但如果你要真拿它做点什么,立刻会撞上三件事:

撞上什么具体表现
不知道它到底行不行试了十个问题觉得还不错——但这算好还是不好?和别的模型比呢?
它答不上你关心的事问它你们公司的产品参数,它一本正经地编一个
它只会说不会做你让它「查一下现在几点」,它编一个时间给你

这一章三节,分别对着这三件事。

2. 顶层全景:三件事都在模型外面

┌──────────────────────────────────┐
你的问题 → │ ① 检索:先去文档库里捞相关段落 │
│ ② 工具:该调函数就调,拿回结果 │ → 模型 → 回答
└──────────────────────────────────┘

③ 评测:用标准题库量一量,这套东西到底行不行

图说:① 和 ② 都是「在问题送进模型之前,先往里塞点东西」。
模型本身一个参数都没改。

这一点值得先说透: 这三件事之所以是「模型之外」, 是因为它们改的都是输入,不是权重。 这也是它们便宜的原因。

主走查:一个问题,穿过这三件事

三节讲三件事,读者读完只会记住三个名词。所以这一章挑一个问题,从头跟到尾:

「我们公司的退款期限是多久?」 这是一个模型必定答不上来的问题——它训练时没见过你们公司的规章。

后面每一节末尾都有一小段这个问题走到这一步,写出它此刻变成了什么、拿到了哪个数:

第 3 节 评测 → 先量一量:直接问,模型答对了吗?错在哪一类?
第 4 节 检索 → 去文档库里捞出「第三条」那一段,塞进提问里再让它答
第 5 节 工具 → 换一个它同样答不上来的问题(「现在几点」),看它怎么把活派出去

图说:同一个问题,第 3 节量它、第 4 节救它;
第 5 节换一个「查资料也救不了、只能真去跑一下」的问题。

先声明:下面这些小段里的分数、片段编号、相似度都是为演示编的,不是真实数值。 切分默认值(每段 600、重叠 150)和第 4.6 节那段固定格式的提问文字都来自书里。

3. 第一件事:评测

3.1 为什么不能靠感觉

书里给的定义:大模型评测就是通过各种标准化的方法和数据集, 对模型在不同任务上的表现进行量化和比较1

它衡量的不只是准确率,还包括泛化能力、出结果的速度、资源消耗1

为什么必须有2:

理由说明
开发成本高昂涉及大量算力和数据,得先确认这钱花得值
暴露弱点偏见,以及鲁棒(就是:输入稍微变一变——换个说法、加个错别字——结果还稳不稳)方面的问题,不做系统评测发现不了
提供共同标准公平公开的评测让学界和业界能在同一个尺子上比较

3.2 六类评测集

书里按能力维度分了六类3这张表不用背,重要的是看出它们在量什么不同的东西:

量什么代表具体在考什么
通用知识MMLU覆盖历史、数学、物理、生物、法律等各学科的理解能力
工具使用BFCL V2复杂工具任务里多步操作的正确性和效率
数学GSM8K / MATH前者是小学数学应用题(算术、简单方程、数字推理),后者更难(代数、几何)
逻辑推理ARC Challenge / GPQA / HellaSwag分别是科学推理、零样本开放问答、以及在复杂语境下挑出最合逻辑的续写
长文本InfiniteBench / NIH-Multi-needle长文档阅读理解,以及在超长文档里找出多处关键信息
多语言MGSM不同语言下的数学解题能力,考的是跨语言适应性

书里对 GSM8K 有一句很到位的评价:题目看起来简单,但模型必须先理解语义再做正确的运算, 是逻辑推理和语言理解的双重挑战4

判断(我们的,不是书里的):这一节最大的问题是没有给任何出处。 这六类里的每一个名字都是一篇具体的论文,而知道它们各自的设计意图, 比知道名字有用得多。 我们在脚注里补上了核对过的一手来源5,这里只点三条最值得知道的:

  • MMLU 覆盖 57 个学科,论文当年报告的结果是「大多数模型接近随机水平, 只有最大的 GPT-3 平均超出随机约 20 个百分点」——而且它们「常常不知道自己错了」;
  • HellaSwag 是用「对抗过滤」造出来的:专门挑那些人一眼看出荒谬、模型却会上当的选项。 当年人类正确率超过 95%,模型不到 48%;
  • GPQA 只有 448 道题,但号称「防搜索」:有博士学位的领域专家正确率 65%, 而能自由上网的非专家花半小时以上也只有 34%。

为什么这些细节重要: 它们告诉你一个分数意味着什么。 「在 GPQA 上得 60 分」听起来平平,但对照专家的 65% 就完全是另一回事。 如果错,会错在: 如果读者只是想知道有哪些榜单可以看,那这些设计细节确实是多余的。

主走查第 ① 步:先量一量,它到底错在哪一类

直接把主走查那个问题丢给模型:

问: 我们公司的退款期限是多久?
答: 根据公司规定,退款期限一般为 7 个工作日。 ← 编的,听起来还挺像

换成上面那六类去量,这道题落在哪一类?
└ 一类都不落 —— MMLU 考的是公共知识,GSM8K 考的是算术,
没有哪个题库会考「你们公司的规章」

图说:这就是标准题库的边界:它们量的是「模型自己记住了什么」,
而这个问题的答案从来就不在模型里。
所以哪怕它 MMLU 考 85 分(对照:论文当年最大的模型只比蒙的高 20 个百分点左右),
这道题照样答错。
(85 分和「7 个工作日」都是为演示编的,不是真实数值。)

上面这行「一类都不落」,正是下一节存在的理由。

3.3 三个主流榜单

书里列了三个6:

榜单谁办的特点
Open LLM LeaderboardHugging Face汇集开源模型在多个标准化测试集上的成绩,持续更新
Lmsys Chatbot Arenalmsys让真实用户和模型对话来评分,考察生成能力、上下文理解、用户满意度
OpenCompass国内结合中文理解和多语言测试,特别关注中文语境下的准确性和鲁棒性

第二个和另外两个性质完全不同,值得单独说:

标准题库型: 出好题 → 模型答 → 对答案 → 打分
└ 可复现、可对比,但题目会泄漏进训练数据

真人对战型: 真实用户提问 → 两个模型各答一遍 → 用户投票哪个好
└ 题目是活的、不会泄漏,但主观、慢、贵

图说:两种范式各补对方的短板。看榜单时先分清你看的是哪一种。

书里还列了五个垂直领域榜单——就是只考一个行业的专项榜7:

榜单管什么维护方
金融:金融文本处理、预测计算、分析与合规检查同济大学 + 上海人工智能实验室 + 东方财经
安全:公平、安全、数据保护、合法等几个维度的抗性上海人工智能实验室 + 复旦大学
通识对话:日常多轮聊天能不能聊出人的水平上海人工智能实验室
法律:法律问题回答、文书生成、判例分析南京大学
医疗:医学知识问答、安全伦理理解上海人工智能实验室

3.4 书里没讲的那个大问题

书里通篇没有提数据污染——数据污染就是:评测题目本身出现在了模型的训练语料里。 预训练语料是从整个互联网爬的,而这些评测集全都公开在网上。

模型答对了一道 MMLU 的题
├─ 可能是它真的理解了
└─ 也可能是它在训练时背过这道题的答案

图说:两者在分数上完全看不出区别。
这是所有标准题库型评测的共同软肋。

判断(我们的,不是书里的): 这是评测这一节最应该讲、却完全没讲的一条。 它直接决定了榜单分数该怎么读: 一个模型在公开榜单上的高分,和它在你的真实任务上好不好用,可以完全无关。 实用的对策有三条:看真人对战型榜单;看模型发布后才出现的新题库; 或者干脆自己造一份别人看不到的题。 如果错,会错在: 如果某个榜单严格做了污染检测(比如逐字检查题目原文有没有出现在语料里), 那它的分数就可信得多——但这类检测本身很难做彻底,改写过的题目就检不出来。

4. 第二件事:检索增强生成

4.1 它要解决什么

书里给的三个问题8:

问题具体是什么
幻觉生成不准确或误导性的内容(第 05 章讲过)
知识过时训练数据有截止时间,之后的事它不知道
专业领域处理效率低复杂的领域知识它理解不了

「检索增强生成」——英文缩写 RAG(Retrieval-Augmented Generation)——的做法一句话9:

在生成答案之前,先从外部的大规模文档库里检索出相关信息, 把这些信息融进生成过程,以此指导和优化模型的输出。

4.2 为什么这样有效

书里给的机制解释很清楚10:

没有检索: 模型凭「训练时记住的东西」回答 → 记错了、没记过,就编
有了检索: 模型凭「刚捞上来的这几段文档」回答 → 答案建立在真实文档上

图说:它把问题从「模型记得什么」换成了「文档里写了什么」。
因此答案变得可追溯——你能指出这句话是从哪一段来的。

书里的两条收益10:

  • 缓解幻觉——因为生成的内容建立在真实文档的基础上,答案更具可追溯性和可信度;
  • 加快知识更新——引入了最新的信息源,系统能及时反映最新动态。

4.3 五个模块,三步流程

书里搭了一个最小实现,叫 Tiny-RAG,只保留检索和生成两个核心功能11

五个模块12:

模块干什么
文档加载和切分把文档读进来,切成一小段一小段
向量化把每一段文字变成一串数
数据库存放这些片段和它们对应的那串数
检索拿问题去找最相关的几段
大模型拿检索到的段落回答问题

三步流程13:

① 索引:把文档库切成短片段,逐段变成向量,建成索引
② 检索:算问题和每个片段的相似度,挑出最相关的
③ 生成:把挑出来的片段当上下文,让模型据此作答

图说:① 是离线做的(做一次),②③ 是每次提问时做的。

4.4 切分:一个容易做错的细节

书里的做法:设一个最大长度,按这个长度切; 切的时候尽量以句子为单位,并且让相邻片段之间保留一部分重叠内容14

重叠为什么必要:

不重叠: 「……根据第三条,退款期限为」 | 「30 天。超过后不予受理……」
└ 问「退款期限多久」,捞到第一段 ⟹ 答不出来

重叠: 「……根据第三条,退款期限为 30 天。」
「退款期限为 30 天。超过后不予受理……」
└ 无论捞到哪一段,信息都是完整的

图说:重叠是拿存储冗余换检索完整性。书里的默认值是每段 600、重叠 150。

4.5 相似度怎么算:余弦相似度

每个片段变成一串数之后,「相关不相关」就变成了「两串数像不像」。

书里用的是余弦相似度:两个向量夹角的余弦值,范围在 -1 到 1 之间15

和第 02 章的点积什么关系: 余弦相似度就是把两个向量都先缩成长度 1,再做点积 (「缩成长度 1」= 这一串数整体等比例放大或缩小,直到它代表的那根箭头刚好一个单位长)。 好处是它只看方向、不看长短——一段长文档和一句短问题,长度天差地别, 但只要说的是同一件事,方向就接近。

4.6 生成:一段提示词决定了它老不老实

提示词就是你交给模型的那段输入文字;把它写成一个固定格式、中间留空让程序往里填,就叫提示词模板。

这是全节最值得记住的一处。 书里给的模板,翻译过来是16:

使用以上下文来回答用户的问题。如果你不知道答案,就说你不知道。总是使用中文回答。 问题:……;可参考的上下文:……; 如果给定的上下文无法让你做出回答,请回答数据库中没有这个内容,你不知道。

没有最后那句: 检索没捞到 ⟹ 模型退回「凭记忆答」⟹ 幻觉照旧
有了最后那句: 检索没捞到 ⟹ 模型说「不知道」 ⟹ 至少不骗人

图说:检索增强能不能压住幻觉,一半靠检索捞得准,
另一半靠这句话把「捞不到就闭嘴」写进指令里。

这一条值得单独记:检索增强不是一个纯粹的技术方案,它一半是提示工程。

主走查第 ② 步:同一个问题,这次带着文档去问

把上面四小节串成一条线,每一步都写出具体的东西:

① 离线索引(只做一次):
《售后服务条例》全文 3600 字 → 按每段 600、重叠 150 切
└ 切出 8 段:片段 1 覆盖第 1–600 字,片段 2 覆盖第 451–1050 字,依此类推
└ 每段变成一串数(比如 1024 个),存进库里

② 检索(每次提问时做):
「我们公司的退款期限是多久?」也变成一串 1024 个数
和 8 个片段逐个算余弦相似度:
片段 3(讲退换货的那段) 0.82 ← 最高,捞它
片段 5(讲配送时效的) 0.41
片段 1(讲总则的) 0.18
└ 取最高的 1 段送进去

③ 生成:把片段 3 的原文塞进模板,再让模型答
模板里那句「如果给定的上下文无法让你做出回答,请回答数据库中没有这个内容」也一起送

答: 根据《售后服务条例》第三条,退款期限为 30 天,超过后不予受理。
└ 这句话每一个字都能在片段 3 里指出来源

图说:注意第 ② 步那三个数——0.82、0.41、0.18。整套系统的上限就在这三个数上:
要是片段 3 因为措辞不同只拿到 0.30、排在片段 5 后面,
模型拿到的就是「配送时效」那一段,然后照着它编一个退款期限出来。
(3600 字、8 段、1024 个数、三个相似度都是为演示编的,不是真实数值;
600 和 150 是书里的默认值。)

4.7 它的边界:书里没讲的三条

书里对检索增强只有肯定,没有提任何局限。我们补三条:

局限具体是什么
检索错了,答案就错整套系统的上限是检索质量。捞回一段不相关的,模型会照着它编
它压不住模型「顺嘴发挥」的天性即使给了正确文档,模型仍可能加进文档里没有的内容
多跳问题很难「A 的老板的配偶是谁」需要连续检索两次,一次性检索找不到

判断(我们的,不是书里的): 检索增强最常见的误解是把它当成「给模型装个知识库」。 更准确的理解是:它把模型从「知识源」降级成了「文字加工厂」。 知识由文档提供,模型只负责把捞上来的片段组织成一段话。 这个理解会直接改变你在哪儿投入——绝大多数效果问题出在文档切分和检索环节,不在模型。 如果错,会错在: 如果任务需要模型把检索到的多份材料做真正的逻辑推理与综合(而不只是组织), 那模型本身的能力仍然是瓶颈,这个「降级」的说法就过头了。

5. 第三件事:智能体

5.1 它是什么

先说清「智能体」是什么。 书里给的定义可以拆成两半17:

  • 前一半说它由什么搭成: 中间放一个大模型当「大脑」,外面给它配三样东西—— 能自己拆解任务的规划记忆(就是把之前发生的事记下来、下次接着用)、 以及一批能调用的外部工具;
  • 后一半说它和普通聊天有什么不同: 你给它的不再是一句必须立刻回答的话, 它也不再只是被动地接一句答一句,而是拿着一个目标自己往下推进。

英文里管它叫 Agent,你在别处会经常看到这个词,说的是同一样东西。

书里在这个定义之后,又列了五种能力。三样零件怎么变成五种能力,书里没说,这里对一遍:

那三样零件加上大模型本身,一共支撑起五种能力—— 大模型本身管「理解目标」,规划管「自主规划」,记忆管「记忆」,工具管「工具使用」。 第五种叫「反思与迭代」——就是做完一步回头看看结果对不对、再决定下一步怎么走。 它不对应任何一样新零件,它是把前四样接成一个圈。

接完这个圈,「三样」和「五种」就对上了。下面这张表逐条展开17:

能力具体是什么
理解目标接收一个相对复杂或高层次的目标(比如「帮我规划一个周末去北京的行程」)
自主规划把大目标拆成一系列可执行的小步骤
记忆短期记忆(当前任务的上下文)+ 长期记忆(从过去交互或外部知识库学到的)
工具使用调用外部接口、插件或代码执行环境
反思与迭代(就是回头看看自己做得对不对,再改)(更高级的)评估自己的行为和结果,从中学习并调整

书里用一个比喻点出这个差别,很好记18:普通大模型是个「纸上谈兵的图书馆员」—— 你问什么它都答得上来,但它一步也走不出那间图书馆; 智能体则更像个能跑腿的助理:懂得多,而且真的会去把事情办掉。 比喻到此为止,后面一律说「智能体」。

5.2 四种类型

书里按设计理念分了四类19:

类型特点例子
任务导向型专注特定领域、定义明确的任务;有预设流程和固定的工具集订餐厅的聊天机器人、编程助手
规划与推理型(书里的叫法,这里的「推理」是逻辑推理那一义)强调自主拆解复杂任务、制定多步计划,并根据反馈调整整合搜索、计算器、数据库来回答复杂问题的研究型智能体
多智能体(就是同时用好几个智能体)系统多个不同角色的智能体协作,可以通信、协作、辩论甚至竞争模拟软件团队(产品经理、程序员、测试员各一个)
探索与学习型不只执行任务,还能在交互中主动学习新技能、优化策略在未知软件环境里自主摸索怎么操作的智能体

第二类里书提了一个具体的思维框架:ReAct(Reason + Act)—— 让模型先「思考」分析当前情况和所需行动,然后执行「行动」调用工具, 再根据工具返回的结果进行下一轮思考20

补充(不在书里):ReAct 有正式出处——2022 年 10 月的论文。 它的主张是:通过和一个简单的维基百科接口交互, 克服了纯思维链推理里的幻觉和错误传播问题21

这句话把第 05 章的思维链和这一章连起来了: 思维链让模型把中间步骤写出来,但那些步骤仍然是它编的; ReAct 让其中一部分步骤变成「去查一下」——编的那部分就被真实结果替掉了。

5.3 动手:一个最小的智能体

书里基于一个通用接口的工具调用功能,做了一个最小实现22

三个部件23:

部件干什么
工具函数几个普通的函数:取当前时间、数一个字母出现几次、比大小、查维基百科
格式转换把每个函数的名字、要几个参数、每个参数是什么,连同那段说明文字,自动转成模型能读懂的结构化描述
智能体本体管理对话历史、调用模型、处理工具调用请求、执行函数

「函数的文档说明」在这里是关键——书里特意强调: 每个函数都需要有清晰的文档字符串(写在函数开头、专门用来说明它干什么的那段文字), 描述它的功能和参数,因为这将用于自动生成工具的结构化描述23

换句话说:模型是靠读你写的函数说明来决定该不该调它的。 说明写得含糊,模型就选错工具。 这是写工具时最实际的一条经验。

5.4 完整的一轮

书里给的流程24:

① 用户提问
② 模型收到问题 + 所有可用工具的说明
③ 模型判断:要不要调工具?调哪个?参数是什么?
④ 智能体解析这个请求,真的去执行那个函数
⑤ 把函数的返回值交回给模型
⑥ 模型根据结果生成最终回复

图说:第 ③ 步是模型做的决定,第 ④ 步是程序做的执行。
模型从头到尾没有真的运行任何东西——它只是说了「该调这个」。

这一点值得说透:模型不会执行任何东西。 它输出的是一段「我要调用某某函数、参数是这些」的结构化文字, 真正去跑那个函数的是外面的程序。

主走查第 ③ 步:换一个连查资料都救不了的问题

第 4 节那个「退款期限」靠捞文档解决了。但有一类问题,文档库里不可能有:

「现在几点了?」——它不在任何文档里,因为答案每一秒都在变。

这类问题只能真的去跑一下。把这六步走一遍,每一步旁边都写出具体的字串:

① 你打:现在几点了?

② 送进模型的除了这句话,还有一份工具清单(由函数的说明文字自动生成):
{ name: "get_current_datetime",
description: "取当前的日期和时间",
parameters: {} }
{ name: "count_letter_in_string",
description: "数一个字母在一个词里出现几次",
parameters: { string, letter } }

③ 模型不输出答案,输出一段结构化文字:
{ "tool": "get_current_datetime", "arguments": {} }
└ 它是靠读第 ② 步那句 description 决定调这个的 —— 说明写含糊,它就选错

④ 智能体解析这段文字,真的去跑那个函数
⑤ 函数返回一个字串: "2025-04-26 17:01:33"
⑥ 把这个字串接回对话里,模型据此写出:当前的时间是 2025 年 4 月 26 日 17:01:33。

图说:第 ③ 步那段结构化文字是这一整节的枢纽 ——
模型从头到尾只干了一件事:把「该调哪个」这个判断写成一段话。
跑函数的是第 ④ 步的程序,拿到真值的是第 ⑤ 步。
对照第 4 节:那边把「知识」外包给文档,这边把「动作」外包给程序,
外包的都是模型不擅长的那一半。
(那个时间字串是书里第 5.5 节贴出来的真实输出;工具清单的写法是照书里的做法列的。)

5.5 书里贴出的真实对话,信息量很大

书里把实际交互原样贴了出来25。三段特别值得看:

第一段,数字母:

User: strawberry中有几个r?
调用工具: ['count_letter_in_string']
Assistant: 单词 "strawberry" 中有 3 个字母 'r'。

这正是第 07 章第 1 节那个问题的答案。 模型自己数会错,因为它看到的是切碎的片段而不是字母; 但它知道该调那个函数——它不会做,但它知道谁会做。

第二段,比大小:

User: 9.12和9.2哪个更大?
调用工具: ['compare']
Assistant: 9.2 比 9.12 更大。
User: 为什么?
Assistant: (讲了一段小数点后补零的道理,没有调工具)

注意第二问没有调工具——解释道理是它自己会的,算大小才需要工具。 这个分界正是智能体的价值:让模型判断什么该自己做、什么该交出去。

第三段,一个诚实的瑕疵:

User: 好的 你很薄,现在几点了?
调用工具: ['get_current_datetime']
Assistant: 当前的时间是2025年4月26日17:01:33。不过,我注意到您提到"你很薄",
这似乎是一个打字错误……

用户明显是打错了字(可能想打「你很棒」),模型没有装作没看见。 这段书里原样保留了,没有美化。

5.6 书里没讲的边界

书里对智能体也是只讲能力、不讲代价。补三条:

边界具体是什么
成功率是连乘的每一步都有出错概率;十步任务,每步 95% 正确,整体只有约 60%
每一步都要钱智能体的一轮任务可能调用模型十几次,成本是单次对话的十几倍
工具本身会骗它工具返回的内容会被模型当真;如果工具的返回值里混进了「指令」,模型可能照做

判断(我们的,不是书里的):第三条是这一章最该被提出来的风险,书里一个字没提。 智能体的整个设计前提是「模型读到什么就照着办」, 而检索回来的网页、读到的文档、工具的返回值,都是模型「读到的东西」。 一段精心构造的文本混进去,就可能改变模型接下来的行为。 这不是模型的缺陷,是「用文字当接口」这个设计的固有后果。 实用的对策是:让工具的返回值有清晰的边界标记、对能产生副作用的工具加人工确认。 如果错,会错在: 如果某种机制能可靠地区分「数据」和「指令」 (比如把工具返回值放进模型无法当指令解读的通道),这条风险就能被结构性地消除—— 但目前还没有这样的机制被广泛验证。

6. 三件事的关系

这一节把这一章收拢成一张图。

它不知道 → 检索增强:把知识从「模型记得」换成「文档写着」
它不会做 → 工具调用:把动作从「模型说」换成「程序跑」
它到底行不行 → 评测:用别人也能复现的尺子量

图说:前两件事的共同结构是「把模型不擅长的部分,交给擅长的东西」。
这和第 05 章那条「幻觉是固有缺陷」的判断是一脉相承的——
既然根治不了,就绕开它。

而三件事都不改模型参数。 这是它们能被普通团队用起来的全部原因。

7. 作者的判断与证据

说法书里给了什么该怎么看
评测必须标准化给了三条理由成立
六类评测集各考什么给了描述和应用场景描述准确,但没给任何出处,也没讲数据污染
检索增强能缓解幻觉给了机制解释(答案建立在真实文档上)可以采信,但书没讲它的上限受制于检索质量
检索增强加快知识更新给了结论成立
智能体的五种能力给了逐条说明描述清晰,但没有出处、没有代价分析
ReAct 框架一句带过有正式出处和实证结果,书没给;我们补了
工具调用的完整流程给了六步流程和真实交互记录这是这一章最有价值的部分——真实记录比描述可信

判断(我们的,不是书里的): 这一章的性质和前八章明显不同—— 前八章讲的是「已经稳定下来的东西」,这一章讲的是「还在剧烈变化的东西」。 模型结构、训练流程这些,2017 到 2024 年间变化不大; 而应用层的工具链,半年就换一茬。 所以这一章正确的读法是:记住那三个问题(不知道、不会做、不知道行不行)和它们的解法骨架, 别记具体的库和写法。 如果错,会错在: 如果应用层在某个时点稳定下来、形成了事实标准, 那时具体写法就值得记了——但目前还没有。

8. 边界与局限

① 评测那一节缺了方法论

书给的是「有哪些榜单和数据集」,不是「怎么设计一次评测」。 真正的实践问题——怎么防数据污染、怎么造自己的评测集、怎么判断分数差异是不是显著—— 一个都没讲。

② 检索增强的实现是最小版本

书里明说 Tiny-RAG「只保留了核心功能」11没有的东西包括:

缺什么为什么它在实际中重要
重排(就是重新排一次序)检索回来一批之后,再用一个更准的模型排一遍序
混合检索按意思找 + 按字面找(直接对关键词),两条路一起用,互相补短
查询改写先把用户那句口语化的问题改写成更适合检索的形式
多轮检索一次捞不到就换个说法再捞

③ 智能体那一节没有代价分析

见第 5.6 节。成功率连乘、成本倍增、以及工具返回值可以影响模型行为——一条都没提。

④ 时间坐标停在 2024 年年中

这一章讲到的东西,变化最快的部分已经变了:

  • 工具调用从各家自定义,走向了更统一的接口约定;
  • 检索增强出现了大量更成熟的做法(重排、混合检索、图检索);
  • 推理模型的出现改变了「什么时候该用智能体」的判断——有些任务模型自己想清楚就够了。

⑤ 一处用词提醒

书里的「Agent」中译成了「智能体」。 这个词在强化学习里早有固定含义:和环境交互、最大化奖励的那个主体。 书里第 05 章讲强化学习时用的就是那个意思26

两处用的是同一个词、不完全是同一件事。 大模型智能体是它的一种特例,但今天讲智能体时通常不涉及强化学习那套训练机制。

9. 可带走的

  1. 模型训完还差三件事:量一量、给它查资料、给它接手脚;三件都不改模型参数;
  2. 评测是用标准化数据集量化比较,量的不只是准确率,还有泛化、速度、资源消耗;
  3. 六类评测集各量一个维度:通用知识、工具使用、数学、逻辑推理、长文本、多语言;
  4. 榜单分两种:标准题库型(可复现但题会泄漏)和真人对战型(不会泄漏但主观);
  5. 数据污染是标准题库型的共同软肋——答对了可能是理解了,也可能是背过;书里完全没提;
  6. 检索增强把问题从「模型记得什么」换成「文档里写了什么」,所以答案可追溯;
  7. 文档切分要留重叠,不然一句话被切两半,哪一半都答不出来;
  8. 余弦相似度 = 先把两个向量都缩成长度 1,再做点积,只看方向不看长短,所以长短悬殊的文本也能比;
  9. 提示词里必须写「捞不到就说不知道」——检索增强一半是提示工程;
  10. 检索增强的上限是检索质量,绝大多数效果问题出在切分和检索,不在模型;
  11. 智能体 = 大模型当大脑 + 规划 + 记忆 + 工具 + 反思;
  12. 模型不会执行任何东西,它只输出「我要调这个函数」,真正跑的是外面的程序;
  13. 模型靠读你写的函数说明来决定调不调它——说明写含糊,它就选错;
  14. 智能体的成功率是连乘的:十步任务每步 95%,整体只有约 60%;
  15. 工具的返回值会被模型当真——这是「用文字当接口」的固有后果,书里没提;
  16. 这一章记问题和解法骨架,别记具体的库——应用层半年换一茬。

10. 原文地图

主题原书章原文位置
评测的定义与必要性大模型应用text/22-fm.txt:7(搜「什么是⼤模型评测」) · text/22-fm.txt:11(搜「开发成本⾼昂」)
六类评测集大模型应用text/22-fm.txt:22(搜「MMLU」) · text/22-fm.txt:28(搜「BFCL V2」) · text/22-fm.txt:33(搜「GSM8K」) · text/22-fm.txt:41(搜「ARC Challenge」) · text/22-fm.txt:47(搜「HellaSwag」) · text/22-fm.txt:51(搜「InfiniteBench」) · text/22-fm.txt:59(搜「MGSM」)
三个主流榜单大模型应用text/22-fm.txt:73(搜「Open LLM Leaderboard」) · text/22-fm.txt:80(搜「真实」) · text/22-fm.txt:87(搜「OpenCompass」)
五个垂直榜单大模型应用text/22-fm.txt:96(搜「CFBenchmark」) · text/22-fm.txt:99(搜「Flames」) · text/22-fm.txt:105(搜「LawBench」)
检索增强要解决什么大模型应用text/22-fm.txt:115(搜「训练数据可能过时」) · text/22-fm.txt:119(搜「Retrieval-Augmented Generation,RAG」) · text/22-fm.txt:126(搜「可追溯性和可信度」)
五个模块与三步流程大模型应用text/22-fm.txt:131(搜「Tiny-RAG」) · text/22-fm.txt:142(搜「向量化模块」) · text/22-fm.txt:158(搜「构建向量索引」)
切分与重叠大模型应用text/22-fm.txt:186(搜「重叠内容」) · text/22-fm.txt:188(搜「cover_content」)
余弦相似度大模型应用text/22-fm.txt:301(搜「余弦相似度」) · text/22-fm.txt:331(搜「cosine_similarity」)
检索增强的提示词模板大模型应用text/22-fm.txt:449(搜「就说你不知道」) · text/22-fm.txt:455(搜「数据库中没有这个内容」)
智能体的定义与五种能力大模型应用text/22-fm.txt:510(搜「⼤脑」) · text/22-fm.txt:516(搜「⾃主规划」) · text/22-fm.txt:528(搜「纸上谈兵」)
四种类型与 ReAct大模型应用text/22-fm.txt:539(搜「任务导向型Agent」) · text/22-fm.txt:553(搜「ReAct」) · text/22-fm.txt:560(搜「多Agent系统」) · text/22-fm.txt:570(搜「探索与学习型」)
工具函数与格式转换大模型应用text/22-fm.txt:580(搜「tool_calls」) · text/22-fm.txt:606(搜「⽂档字符串」) · text/22-fm.txt:622(搜「count_letter_in_string」)
工具调用的六步流程大模型应用text/22-fm.txt:761(搜「⼯作流程如下」)
真实交互记录大模型应用text/22-fm.txt:811(搜「9.12和9」) · text/22-fm.txt:817(搜「strawberry」) · text/22-fm.txt:824(搜「你很薄」)

Footnotes

  1. 出处:「大模型应用」第 7 段(text/22-fm.txt:7,搜「什么是⼤模型评测」)。原文:评测「不仅包括模型在特定任务上的准确性,还涉及模型的泛化能力、推理速度、资源消耗等多个方面」。 2

  2. 出处:「大模型应用」第 11 段(text/22-fm.txt:11,搜「开发成本⾼昂」)。

  3. 出处:「大模型应用」第 22 段(text/22-fm.txt:22,搜「MMLU」)、第 28 段(text/22-fm.txt:28,搜「BFCL V2」)、第 33 段(text/22-fm.txt:33,搜「GSM8K」)、第 41 段(text/22-fm.txt:41,搜「ARC Challenge」)、第 47 段(text/22-fm.txt:47,搜「HellaSwag」)、第 51 段(text/22-fm.txt:51,搜「InfiniteBench」)、第 59 段(text/22-fm.txt:59,搜「MGSM」)。

  4. 出处:「大模型应用」第 35 段(text/22-fm.txt:35,搜「双重挑战」)。

  5. 补充(不在书里):MMLU 的出处是《Measuring Massive Multitask Language Understanding》,第一作者 Dan Hendrycks,首次公开于 2020 年 9 月 7 日;摘要说它覆盖 57 个学科,当时「最大的 GPT-3 平均比随机水平高出近 20 个百分点」,但模型「表现失衡,而且常常不知道自己错了」。来源:https://arxiv.org/abs/2009.03300(查阅于 2026-08-25)。GSM8K 的出处是《Training Verifiers to Solve Math Word Problems》,第一作者 Karl Cobbe,首次公开于 2021 年 10 月 27 日,数据集是「8500 道高质量、语言多样的小学数学应用题」。来源:https://arxiv.org/abs/2110.14168(查阅于 2026-08-25)。HellaSwag 的出处是《HellaSwag: Can a Machine Really Finish Your Sentence?》,第一作者 Rowan Zellers,首次公开于 2019 年 5 月 19 日;它用「对抗过滤」构造选项,当时「人类正确率超过 95%,而最好的模型不到 48%」。来源:https://arxiv.org/abs/1905.07830(查阅于 2026-08-25)。ARC 的出处是《Think you have Solved Question Answering? Try ARC, the AI2 Reasoning Challenge》,第一作者 Peter Clark,首次公开于 2018 年 3 月 14 日,含 7787 道小学科学题,分成 Challenge 与 Easy 两个子集。来源:https://arxiv.org/abs/1803.05457(查阅于 2026-08-25)。GPQA 的出处是《GPQA: A Graduate-Level Google-Proof Q&A Benchmark》,第一作者 David Rein,首次公开于 2023 年 11 月 20 日,含 448 道题;有博士学位的领域专家正确率 65%,能自由上网的非专家花超过 30 分钟也只有 34%,当时最强的 GPT-4 基线是 39%。来源:https://arxiv.org/abs/2311.12022(查阅于 2026-08-25)。

  6. 出处:「大模型应用」第 73 段(text/22-fm.txt:73,搜「Open LLM Leaderboard」)、第 80 段(text/22-fm.txt:80,搜「真实」)、第 87 段(text/22-fm.txt:87,搜「OpenCompass」)。

  7. 出处:「大模型应用」第 96 段(text/22-fm.txt:96,搜「CFBenchmark」)、第 99 段(text/22-fm.txt:99,搜「Flames」)、第 102 段(text/22-fm.txt:102,搜「BotChat」)、第 105 段(text/22-fm.txt:105,搜「LawBench」)、第 107 段(text/22-fm.txt:107,搜「MedBench」)。

  8. 出处:「大模型应用」第 115 段(text/22-fm.txt:115,搜「训练数据可能过时」)。

  9. 出处:「大模型应用」第 119 段(text/22-fm.txt:119,搜「Retrieval-Augmented Generation,RAG」)。补充(不在书里):检索增强生成的原始出处是《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》,第一作者 Patrick Lewis,首次公开于 2020 年 5 月 22 日。摘要把它拆成两部分记忆:「参数化记忆」是一个预训练的序列到序列模型,「非参数化记忆」是一个用神经检索器访问的维基百科稠密向量索引;它生成的语言「比只依赖参数的基线更具体、更多样、更符合事实」。来源:https://arxiv.org/abs/2005.11401(查阅于 2026-08-25)。

  10. 出处:「大模型应用」第 126 段(text/22-fm.txt:126,搜「可追溯性和可信度」)与第 127 段(text/22-fm.txt:127,搜「加快了知识更新速度」)。 2

  11. 出处:「大模型应用」第 131 段(text/22-fm.txt:131,搜「Tiny-RAG」)。原文:「Tiny-RAG 只保留了 RAG 的核心功能,即检索和生成」。 2

  12. 出处:「大模型应用」第 142 段(text/22-fm.txt:142,搜「向量化模块」)至第 150 段(text/22-fm.txt:150,搜「⼤模型模块」)。

  13. 出处:「大模型应用」第 158 段(text/22-fm.txt:158,搜「构建向量索引」)至第 162 段(text/22-fm.txt:162,搜「⽣成问题的回答」)。

  14. 出处:「大模型应用」第 186 段(text/22-fm.txt:186,搜「重叠内容」)与第 188 段(text/22-fm.txt:188,搜「cover_content」)。这段代码默认用的是最大长度 600、重叠 150。「重叠为什么必要」那个例子是我们补的(补充,不在书里,来自通用知识)。

  15. 出处:「大模型应用」第 301 段(text/22-fm.txt:301,搜「余弦相似度」)与第 331 段(text/22-fm.txt:331,搜「cosine_similarity」)。「余弦相似度就是把两个向量各自缩成长度 1 之后再做点积」这层说明是我们补的(补充,不在书里,来自通用知识)。

  16. 出处:「大模型应用」第 449 段(text/22-fm.txt:449,搜「就说你不知道」)与第 455 段(text/22-fm.txt:455,搜「数据库中没有这个内容」)。

  17. 出处:「大模型应用」第 510 段(text/22-fm.txt:510,搜「⼤脑」)与第 513 段(text/22-fm.txt:513,搜「理解⽬标」)至第 525 段(text/22-fm.txt:525,搜「反思与迭代」)。 2

  18. 出处:「大模型应用」第 528 段(text/22-fm.txt:528,搜「纸上谈兵」)。

  19. 出处:「大模型应用」第 539 段(text/22-fm.txt:539,搜「任务导向型Agent」)、第 549 段(text/22-fm.txt:549,搜「规划与推理型」)、第 560 段(text/22-fm.txt:560,搜「多Agent系统」)、第 570 段(text/22-fm.txt:570,搜「探索与学习型」)。

  20. 出处:「大模型应用」第 553 段(text/22-fm.txt:553,搜「ReAct」)。原文同时提到思维链等提示技术是它推理的基础。

  21. 补充(不在书里):《ReAct: Synergizing Reasoning and Acting in Language Models》,第一作者 Shunyu Yao,首次公开于 2022 年 10 月 6 日。摘要说它让模型「以交错的方式生成推理轨迹和任务相关的动作」,并「通过与一个简单的维基百科接口交互,克服了思维链推理中普遍存在的幻觉与错误传播问题」;在两个交互式环境上分别以 34% 和 10% 的绝对成功率优势胜过对照方法。来源:https://arxiv.org/abs/2210.03629(查阅于 2026-08-25)。

  22. 出处:「大模型应用」第 580 段(text/22-fm.txt:580,搜「tool_calls」)。

  23. 出处:「大模型应用」第 606 段(text/22-fm.txt:606,搜「⽂档字符串」)、第 622 段(text/22-fm.txt:622,搜「count_letter_in_string」)、第 655 段(text/22-fm.txt:655,搜「JSON Schema 格式」)、第 679 段(text/22-fm.txt:679,搜「管理对话历史」)。 2

  24. 出处:「大模型应用」第 761 段(text/22-fm.txt:761,搜「⼯作流程如下」)至第 773 段(text/22-fm.txt:773,搜「最终回复返回给⽤户」)。

  25. 出处:「大模型应用」第 811 段(text/22-fm.txt:811,搜「9.12和9」)、第 817 段(text/22-fm.txt:817,搜「strawberry」)、第 824 段(text/22-fm.txt:824,搜「你很薄」)。

  26. 出处:「第四章 大语言模型」第 477 段(text/10-ch04.txt:477,搜「智能体怎么在复杂」)。那里说的是强化学习里的智能体——在环境中不断行动、根据反馈调整策略以最大化奖励的主体。