跳到主要内容

五种打分办法 — 从人眼看到让另一个模型来判

这一章讲三件事: 一个回答该从几个角度打分;主观题怎么变成能自动判的题; 以及回答之外那一半(取块取得准不准)怎么评。

它在全书链条里的位置: 这是第 01 章那张八步图里第 ⑥ 步「验证迭代」的后半。 第 10 章解决「怎么改」,这一章解决「改了到底有没有变好」。

本章主走查:一个问题——「应该如何使用南瓜书?」,以及它的一份回答。 这一个输入会在第 2 节被人打七个分、在第 5 节被另一个模型打七个分, 再在第 7 节被拿去判一次「取块取得准不准」。 第 3 节和第 4 节各另起一个问题,因为那两种办法要求换题——原因在那两节里说。 除了第 7 节那五个凑数用的问题(那五个是我们编的,当场也标了), 下面全部分数都是原书里真实跑出来的。

1. 例子攒多了,一个一个看就不动了

这一节把第 10 章那笔账接过来。

第 10 章末尾那个乘法是:改动次数 × 例子数。书对这个过程的描述是: 随着我们不断寻找到坏例子并做出针对性改进,可以把这些坏例子逐步加入验证集, 从而形成一个有一定样例数的验证集;针对这种验证集,一个一个进行评估就是不切实际的了1

所以要的东西很具体:一个能代表整体的数。 书的说法是:我们需要一种自动评估方法,实现对该验证集上性能的整体评估1

但这件事比听起来难,难在生成任务没有标准答案。 书把这个难点说得很清楚: 客观题评估判别很简单,主观题评估判别则很困难2这一章五种办法,本质上都是在绕开这个难点。

2. 人工打分:两条准则,七个维度

这一节是主走查的第 1 步,也是后面四种办法的参照系。

准则一是量化——就是给每个回答打一个具体的分,而不是只说「好」或「不好」。 书的理由讲得很实在:不打分就只能说「A 比 B 好」, 而一旦两个版本各有胜负,你就无法判断哪个更好,只能去找一个在所有案例上都更优的版本—— 这很明显是非常困难且不利于迭代的3

书举的例子只有四个数,但足够说明问题4:

案例① 南瓜书和西瓜书什么关系 案例② 应该如何使用南瓜书
版本 A 4 分 2 分 → 平均 3 分
版本 B 3 分 5 分 → 平均 4 分

图说:A 在案例①更好,B 在案例②更好。
不打分,你什么结论都得不出;打了分,结论是 B 优于 A。
(量纲用 0~5 还是 0~100 都行,书说按业务实际定。)

准则二是多维。 理由是:一个好回答要同时满足好几件事—— 充分使用知识库内容、答案与问题一致、答案真实有效、回答语句通顺5

书为这个项目设计了七个维度,前四个围绕正确性、后三个围绕像不像人话6:

维度评什么量纲
① 知识查找正确性看中间结果:取回的那几块能不能回答这个问题0 或 1
② 回答一致性有没有偏题、有没有理解错题意0~1
③ 回答幻觉比例综合回答与取回的块,看它编了多少0~1(1 = 没编)
④ 回答正确性答对了没有、答全了没有0~1
⑤ 逻辑性有没有前后冲突0 或 1
⑥ 通顺性读起来顺不顺、句子有没有毛病0~1
⑦ 智能性像不像人答的0~1

第 ① 个维度是唯一需要看中间结果的——它要你打开第 07 章那个 return_source_documents 拿回来的块,而不是只看最终那段话。

现在跑走查。 问题是「应该如何使用南瓜书?」,回答是一段一百多字的介绍, 从「当西瓜书的补充」讲到「初学者先简单过一下第 1、2 章」, 最后还带上了「在 GitHub 的 Issues 中提交反馈,通常会在 24 小时内得到回复」7

先看取回的四块。 书把它们打印了出来,四块的来源全是同一份南瓜书 PDF, 页码分别是 1、1、0、18:

第几块内容页码
第 1 块使用说明:以西瓜书为主线、第 1、2 章不建议深究、反馈渠道1
第 2 块在线阅读地址、最新版下载地址、编委会、致谢、版权声明1
第 3 块封面页:版本号 1.9.9、发布日期 2023.030
第 4 块前言:南瓜书是干什么的1

这正是第 07 章欠下的那笔账的兑现处:那个参数拿回来的就是这四张卡片。 注意第 3 块——一张封面,几乎没有信息量。四块里有一块是废的。

七个分是这样打的9:

① 知识查找正确性 —— 1
② 回答一致性 —— 0.8 (解答了问题,但类似「反馈」的话题偏题了)
③ 回答幻觉比例 —— 1
④ 回答正确性 —— 0.8 (理由同上)
⑤ 逻辑性 —— 0.7 (后续内容与前面逻辑连贯性不强)
⑥ 通顺性 —— 0.6 (最后总结啰嗦且无效)
⑦ 智能性 —— 0.5 (具有 AI 回答的显著风格)

图说:注意 ② 和 ④ 扣的是同一个理由,⑤⑥⑦ 一路走低。
这七个数合起来说的是:内容对,但话说得不像人。

现在算这一套要花多少人力。 书自己算了10:

10 个验证案例 × 2 个版本 × 7 个维度 = 140 次评估

而书接着说:一个成熟系统的验证集应该至少在几百的体量,
迭代改进版本至少有数十个 —— 于是总次数会达到上万次。

图说:这就是「越全面、具体的评估,其评估难度、评估成本就越大」。
140 次一个人一下午还能扛;上万次就必须换办法。

下面三节就是三种换法。

3. 换法一:把主观题改造成选择题

这一节是本章第一处另起走查。它必须换题,原因马上就清楚。

为什么不能继续用「应该如何使用南瓜书?」: 这个问题没有唯一正确答案, 你没法拿它和一个标准答案比对。 书的思路是: 在牺牲一定评估准确性的情况下,把复杂的没有标准答案的主观题转化成有标准答案的问题11

于是换一个有确定答案的问题12:

原来的问答题:南瓜书的作者是谁?

改造成多项选择题:
南瓜书的作者是谁? A 周志明 B 谢文睿 C 秦州 D 贾彬彬
标准答案:BCD (A 是干扰项——周志明不是南瓜书的作者)

提示词里还加了两句:请仅返回选择的选项;如果你无法做出选择,请返回空。

但模型不一定听话。 书提醒:即使要求只给选项,系统也可能返回一大堆文字详细解释为什么这么选, 所以要把选项从模型回答里抽出来13

打分函数第一版的策略是:全选得 1 分、漏选得 0.5 分、错选或不选不得分13。 拿四个回答试一遍14:

模型的回答v1 得分
B C0.5(漏选了 D)
西瓜书的作者是 A 周志华0(选到了错误项 A)
应该选择 B C D1(全选对)
我不知道0(没选)

书紧接着发现了一个问题,而这个发现是这一节最值钱的地方15:

我们要求模型在不能回答的情况下不做选择,而不是随便选。 但在我们的打分策略中,错选和不选均为 0 分,这样其实鼓励了模型的幻觉回答

说白了:如果乱猜和说「我不知道」都是 0 分,那乱猜是免费的—— 而乱猜有可能蒙对,说不知道一定得 0。这条打分规则在诱导它编。

第二版只改一处:错选扣 1 分16:

模型的回答v1v2
B C0.50.5
西瓜书的作者是 A 周志华0-1
应该选择 B C D11
我不知道00

现在「我不知道」比乱猜好了。 这是一个通用教训: 打分规则本身就是一种激励,它会塑造被评的那个东西的行为。

这种办法的边界书也说了:不是所有案例都能构造成客观题, 有些题改成选择之后难度会骤降——那时候就得用下一种11

4. 换法二:和一份标准答案算相似度

这一节是本章第二处另起走查,而且它里面有一处代码错误。

同样必须换题。 这次要的是一个有公认说法、但答案是一段话而不是一个选项的问题17:

问题:南瓜书的目标是什么?

人工写的标准答案(节选自南瓜书前言):
周志华老师的《机器学习》(西瓜书)是机器学习领域的经典入门教材之一,
周老师为了使尽可能多的读者通过西瓜书对机器学习有所了解,
所以在书中对部分公式的推导细节没有详述……本书旨在对西瓜书里比较难理解的公式加以解析,
以及对部分公式补充具体的推导细节。

做法是算模型回答和这份标准答案有多像。 书用的量法叫 BLEU, 它原本是给机器翻译打分用的,量的是两段文字重合的词有多少; 书说对不想深究算法原理的同学,可以简单理解为主题相似度18

然后书跑了两个答案,结果非常奇怪19:

答案一(与标准答案一字不差) 得分:1.2705543769116016e-231
答案二(南瓜书前言里另一段完全不同的话) 得分:1.1935398790363042e-231

图说:e-231 是 10 的负 231 次方——两个分都趋近于 0。
更要命的是:一字不差的那个只比完全不同的那个高约 6%,
而它本该拿满分。这个量法在这里等于失效了。

书对这两个分的评语是「答案与标准答案一致性越高,则评估打分就越高」19—— 这句话在数值方向上成立,但它掩盖了一件事:两个分都近乎为零,区分度约等于没有。

原因在那段代码里。 书写的打分函数是这样的20:

def bleu_score(true_answer, generate_answer):
true_answers = list(jieba.cut(true_answer)) # ← 切成一个词表
generate_answers = list(jieba.cut(generate_answer))
bleu_score = sentence_bleu(true_answers, generate_answers)
return bleu_score

错在第一个位置传进去的东西的类型。 sentence_bleu 的第一个位置要的是**「一组参考答案」——也就是一个「列表的列表」**。

而这里传进去的是一个词的列表(把标准答案切碎后的那一维)。 于是它把每一个词各当成了一份完整的参考答案,再去和整段回答比—— 当然谁都对不上,分数只能趋近于零。

正确的传法是把切好的那一串词再套一层列表:sentence_bleu([true_answers], generate_answers)

说清楚这一点很重要,因为它决定你该记住什么: 书这一节的教学意图(拿相似度当自动分)是成立的;它印出来的那两个数是错的,别拿去当参照。

书自己还列了这种办法的四条局限,这四条与代码错误无关,都成立21:

局限具体是什么
① 要人工写标准答案垂直领域里这件事本身就很难
② 高度相似也可能完全错只有关键几处相反,分照样很高
③ 惩罚更好的回答模型答得比标准答案还好,分反而更低
④ 评不了智能性与流畅性把标准答案里的关键词拼起来,分也会高

5. 换法三:让另一个更强的模型来判

这一节回到主走查:同一个问题、同一份回答、同样七个维度,换成模型来打分。

书的动机是把前两者的优点合起来:人工评估准确度高、全面性强,但成本高; 自动评估成本低、速度快,但准确性不足、不够全面22

做法是构造一段提示词,让模型充当评估员。 那段提示词把第 2 节那七个维度逐条抄了进去,并且给了明确的量纲说明; 末尾还加了一句很关键的话:你应该是比较严苛的评估员,很少给出满分的高评估23。 最后要求它返回一个可直接解析的字典,不要输出任何其他内容23

同一个问题、同一份回答,GPT-4 给出的七个分是24:

知识查找正确性 1 回答一致性 0.9 回答幻觉比例 0.9 回答正确性 0.9
逻辑性 0.9 通顺性 0.9 智能性 0.8

对照第 2 节人打的: 1 / 0.8 / 1 / 0.8 / 0.7 / 0.6 / 0.5

图说:两列的排序几乎一致(都是前面高、后面低),
但模型给的分整体偏高——尤其是通顺性和智能性,人给 0.6 / 0.5,模型给 0.9 / 0.8。
换句话说:那句「你应该是比较严苛的评估员」没起到多大作用。

书对这种办法列了两条注意事项,第一条是硬约束25:

第一,裁判必须比被评的强。 原话是:我们的目标是改进提示词以提升模型表现, 因此所选用的评估模型需要有优于我们所使用的模型基座的性能—— 所以推荐用当时最强的 GPT-4 来评。这条不满足,评估就是自证。

第二,裁判也有能力边界。 如果问题与回答太复杂、知识片段太长、评估维度太多, 即使是 GPT-4 也会出现错误评估、错误格式、无法理解指令的情况25。 书给了五条对策25:

对策什么时候用
改进评估用的提示词按第 03 章那两条原则重写一遍
拆分维度维度太多导致返回格式坏掉时,一个维度调一次
合并维度维度太细导致它理解不了时,比如把逻辑性、通顺性、智能性并成一个
给出详细的评估规范没有规范它就乱给
给少量示例就是第 03 章那个少样本

6. 五种办法怎么分派:按维度,不按喜好

这一节给出书的结论,它比「挑一种」更实用。

书的判断是:这些评估方法都不是孤立、对立的,相较于独立地使用某一种, 更推荐把多种混合起来,对于每一种维度选取其适合的评估方法26

它为这个项目给的分派表是这样的26:

要评什么用哪种办法为什么
客观正确性(有固定答案的题)构造客观题能直接对答案
主观正确性(没有固定答案的题)裁判模型只有它能判「全不全面」
智能性少量抽样人工评与问题弱相关、与模型和提示词强相关,而且模型判这一项的能力较弱
知识查找正确性裁判模型让它判「给定的这几块够不够回答这个问题」

最后一行还带出了一条书给的巧妙推论,值得单独记住26:

该维度评估结果结合主观正确性可以计算幻觉情况—— 如果主观回答正确但知识查找不正确,则说明产生了模型幻觉。

读一遍就懂:答案对,但取回的块里根本没有这个答案 → 那这个答案是它自己编的,只是碰巧编对了。 这是本章唯一一处能自动检出幻觉的做法,而且它不需要人工再去写一份标准答案。

书在这一节末尾很坦白:限于时间与人力,此处就不具体展示了26—— 也就是说这套混合评估在书里从未真正跑过一次。

7. 还有一半没评:取块取得准不准

这一节转向另一半,而书认为这一半更要紧。

书的判断很重:检索这一半取得准不准、全不全,其实更大程度影响了应用的整体性能, 因为只有当检索部分能根据用户提问检索到正确的答案文档时,生成结果才可能是正确的27

它给的口径最直观的那个是这样的28:

给定 N 个问题,并且保证每一个问题的正确答案都确实存在于知识库中。
对每个问题,系统取回 K 块。
正确答案在这 K 块之一 → 这一次算检索成功
不在 → 这一次算检索失败
设成功的次数为 M,则:

准确率 = M / N

图说:注意那句「保证正确答案确实存在于知识库中」——这是这个口径成立的前提。
书写明:如果正确答案本就不存在,那这个坏例子应该归因到知识库构建部分,
说明知识库构建的广度和处理精度还有待提升。

光看符号记不住,所以在这里当场判一次。 拿第 2 节那个现成的例子: 问题是「应该如何使用南瓜书?」,取回 4 块,内容就是第 2 节那张表里的那四块。 照上面的口径逐块看:

问题:应该如何使用南瓜书? K = 4

第 1 块 使用说明:以西瓜书为主线、第 1、2 章不建议深究 ← 答案就在这里
第 2 块 在线阅读地址、编委会、致谢、版权声明 ← 不是
第 3 块 封面页(版本号 1.9.9) ← 不是,而且是一块废的
第 4 块 前言:南瓜书是干什么的 ← 半个答案(说清了它该配着西瓜书读)

判定:答案落在第 1、4 块里 → 这一次算检索成功。

图说:注意判的是「4 块里有没有」,不是「排第几」——
就算答案排在第 4 位,这一次照样算成功。
也正因如此,第 3 块那种废块不扣分:这个口径不看取回了多少无用的东西。

一次只得到一个「成功 / 失败」,凑不出一个数。 要有 M/N,得攒一批问题, 而且每个问题各跑一次检索、各自取回自己的 4 块——不是拿同一批块去回答五个问题。

下面这五个问题,除第一行外都是我们为演示编的,判定结果也是我们设想的; 书从头到尾没有跑过一次 M/N:

问题这一次自己取回的 4 块里有答案吗记什么
应该如何使用南瓜书?(这一行是真的)有,在第 1、4 块成功
南瓜书和西瓜书是什么关系?(编的)有,取回的块里会有那段前言成功
南瓜书的编委会有哪些人?(编的)有,编委会名单和使用说明在同一页成功
南瓜书现在是第几版?(编的)有,封面那一块印着 1.9.9成功
西瓜书第 3 章那条公式是怎么推的?(编的)没有,取回的仍是前几页那几块,一条公式都没有失败

于是 N = 5、M = 4,准确率 = 4 / 5 = 0.8。

两点要说清。 第一,第 4 行那块封面,第 2 节刚说过它「是废的」—— 那是对「应该如何使用南瓜书」这个问题说的;换成「第几版」它就是唯一有答案的一块。 「废不废」是相对提问说的,不是块本身的属性。

第二,最后那一条的归因不能记错: 公式推导确实印在南瓜书里、也确实进了库(口径的前提成立), 所以这一次失败该记在检索头上,不记在知识库头上——它正是下一节第 ① 类那种「块切得不对路」。

书自己承认这个口径很粗,并列了三个它答不了的问题29:

它答不了的为什么要紧
有的问题要联合好几块才能回答这种情况下「在不在其中一块里」这个判据就不成立
取回的几块彼此的顺序会影响生成这个口径完全不看顺序
取回了错误的、误导性的这个口径只看有没有取到对的,不看有没有取到错的

书说这三个问题都不存在标准答案,要按业务实际和评估成本综合考虑29

8. 检索出问题时的四类归因

这一节是这一章最能直接拿去用的部分:书把检索的坏例子分成四类,每类配一条治法。

第几类现象书给的治法
① 知识片段被割裂导致答案丢失问题的答案确实在库里,但取回的块把正确答案分割开了,拼不成完整答案;在需要较长回答的问题上尤其常见改文本切割方式:按格式统一的文档定制切分规则;格式混乱的考虑人工切;甚至训练一个专门做语义切分的模型30
② 问题需要跨很长的上下文概括要跨越多块才能综合回答,而模型的窗口装不下那么多块改建库方式:预先用模型对长文档做概括总结,或预设提问让模型作答,把答案预先填进知识库作为单独一块31
③ 关键词误导取回的块里有很多与问题强相关的词,但那些块本身并不是在回答这个问题;根源是次要关键词的匹配效果压过了主要关键词改写用户的问题:先用一次模型把问题改写成合理形式,去掉次要关键词、修掉错字漏字32
④ 匹配关系不合理匹配到的强相关块里根本没有答案换向量模型或建倒排索引——就是第 06 章第 7 节那条「配对不是因果」33

第 ① 类正是第 05 章埋下的那笔账。 那一章说过: 书自己承认怎么切决定了检索系统的下限,而它只做了最简单的一种(按长度切)。 这里就是那个下限显形的地方。

(顺带钉一个词:分块就是第 05 章那个把整份资料剪成一小段一小段的动作, 书里和外面的文档都常这么叫。)

第 ③ 类那个「先改写问题」和第 08 章那个「先用历史补全代词」形状完全一样: 都是在检索之前先花一次模型调用,把问题变成更好检索的样子。

9. 边界:书把另一半推给了搜索领域,以及它欠着的那份目录

这一节交代这一章缺什么。

第一,有一个词书只提了名字、没有教:召回率就是「库里所有该被取回的块, 这一次实际取回了几成」——和第 7 节那个准确率是两个不同的角度: 一个问「取回的这几块里对不对」,一个问「对的有没有被取全」。

书是这么带过它的:我们的检索任务和搜索任务很像,只不过相对更强调召回而非排序; 于是可以引入搜索这一行里那些经典的评判与改进思路;紧接着一句「这部分就不再赘述了」34

所以本组拆解也不教它——书没给定义、没给例子、没给公式, 上面那句大白话是我们补的,不是书里的。这一章真正教了的口径,只有第 7 节那个 M/N。

顺带澄清一个容易误会的地方:重排——就是先粗粗取回一批, 再用另一套更细的办法给它们重新排一次序——这个词在书里只在上面那一句里顺带出现过, 它不是第二部分许诺的项目之一。

第二,书许诺的第二部分至今只有目录。 第 01 章第 8 节说过这件事,这里把那份目录原样列出来,让你知道它欠着什么35

(表里反复出现一个词:对齐指的是让两样东西在含义上对得上, 比如让用户随口问的那句话和资料里的正式说法对得上。)

(还有一个:在这一行里,优化就是「往更好的方向改」的统称,不特指某种具体技术。)

第二部分的大类下面列的项
一、背景架构概览、存在的问题、解决方法
二、数据处理多类型文档处理、分块优化、向量模型的选择、微调向量模型(进阶)
三、索引层面索引结构、混合检索、假设性问题
四、检索阶段query 过滤、对齐 query 和文档、对齐检索和 LLM
五、生成阶段后处理、微调 LLM(进阶)、参考引用
六、增强阶段上下文增强、增强流程
RAG 工程化评估

把这张表和本章第 8 节那四类归因对一下,你会看到它们高度重合—— 「分块优化」对第 ① 类,「对齐 query 和文档」对第 ③ 类, 「向量模型的选择 / 微调向量模型」对第 ④ 类,「混合检索」对第 06 章那个混合搜索。 换句话说:书在这一章把病都诊断出来了,药方留在了那个没写出来的第二部分。

判断(我们的,不是书里的): 这一章五种办法里,最该先做的是第 7 节那个 M/N, 而不是那七个维度。理由是分工:检索不对,后面怎么打分都是在评一个注定错的答案; 而 M/N 只需要你给每个问题标一句「答案在哪一块」,标一次可以复用无数版。 七维打分反过来——每换一版就要全部重打。 如果错,会错在: 如果你的知识库很小、检索几乎不出错(比如只有几十条常见问题), 那么 M/N 恒等于 1,这个口径提供不了任何信息,该直接上生成侧的评估。

10. 可带走的

  1. 例子攒多了就必须有一个数代表整体——难点是生成任务没有标准答案;
  2. 人工打分两条准则:量化(不打分就比不出胜负)、多维(一个好回答要同时满足好几件事);
  3. 七个维度:知识查找正确性、回答一致性、幻觉比例、回答正确性、逻辑性、通顺性、智能性;
  4. 第一个维度要看中间结果——打开第 07 章那个参数拿回的块;走查那次四块里有一块是封面,是废的;
  5. 走查那次的七个分是 1 / 0.8 / 1 / 0.8 / 0.7 / 0.6 / 0.5:内容对,但话说得不像人;
  6. 人工评的成本是乘出来的:10 个案例 × 2 版 × 7 维 = 140 次;几百案例、几十版就是上万次;
  7. 换法一:改造成选择题;打分规则第一版让「乱猜」和「说不知道」同分,等于在鼓励它编;第二版给错选扣 1 分;
  8. 打分规则本身就是激励,它会塑造被评者的行为——这是这一章最通用的一条;
  9. 换法二:和标准答案算相似度;书那段代码把参考答案传错了类型,导致两个分都掉到 1e-231、几乎没差别;正确写法是再套一层列表;
  10. 这种办法书自己列了四条局限,其中最狠的一条:模型答得比标准答案好,分反而更低;
  11. 换法三:让另一个更强的模型当裁判;同一份回答它给 1 / 0.9 / 0.9 / 0.9 / 0.9 / 0.9 / 0.8,整体比人给的高;
  12. 裁判必须比被评的强,否则是自证;裁判也有边界,书给了五条对策;
  13. 别挑一种,按维度分派:有固定答案的用选择题,没有的用裁判模型,智能性抽样人工评;
  14. 一条能自动检出幻觉的推论:答案对但取回的块里没有这个答案 → 它编对了;
  15. 回答之外还有一半:检索准不准;口径是 N 个问题里有 M 个的答案落在取回的 K 块里,准确率 = M/N;判的是「在不在这几块里」,不看排第几、也不扣废块的分;第 7 节那次演示是 4/5 = 0.8(那五个问题是我们编的);
  16. 这个口径的前提是「答案确实在库里」;不在,就该归因到知识库构建;
  17. 检索坏例子有四类:切割割裂答案、需要跨长上下文概括、关键词误导、匹配关系不合理;
  18. 召回率书只提了名字没有教;「重排」也只是顺带一提,不是第二部分的许诺项。

11. 原文地图

主题原书章原文位置
验证集变大、需要自动评估如何评估 LLM 应用text/06-p101-120.txt:559(搜「⼀个⼀个进⾏评估就是不切实际的了」)
主观题难判大模型评估方法text/07-p121-140.txt:590(搜「客观题评估判别很简单」)
准则一:量化大模型评估方法text/07-p121-140.txt:347(搜「准则⼀ 量化评估」) · text/07-p121-140.txt:450(搜「版本 A 的平均得分为3分」)
准则二:多维、七个维度大模型评估方法text/07-p121-140.txt:453(搜「准则⼆ 多维评估」) · text/07-p121-140.txt:466(搜「知识查找正确性。该维度需要查看系统从向量数据库查找相关知识片段」) · text/07-p121-140.txt:485(搜「智能性。该维度评估系统回答是否拟」)
走查那次的回答与四块大模型评估方法text/07-p121-140.txt:500(搜「应该将南瓜书作为") · text/07-p121-140.txt:509(搜「source_documents」) · text/07-p121-140.txt:523(搜「page': 1」)
七个分大模型评估方法text/07-p121-140.txt:565(搜「知识查找正确性」) · text/07-p121-140.txt:576(搜「智能性——0.5」)
140 次那笔账大模型评估方法text/07-p121-140.txt:582(搜「越全⾯、具体的评估,其评估难度」) · text/07-p121-140.txt:584(搜「140」)
构造客观题大模型评估方法text/07-p121-140.txt:595(搜「构造客观题」) · text/07-p121-140.txt:604(搜「周志明 B 谢文睿 C 秦州 D 贾彬彬」) · text/07-p121-140.txt:622(搜「全选1分,漏选0.5分」)
鼓励幻觉与第二版打分大模型评估方法text/07-p121-140.txt:678(搜「⿎励了模型的幻觉回答」) · text/07-p121-140.txt:721(搜「得分: -1」)
BLEU 与那两个分大模型评估方法text/07-p121-140.txt:739(搜「标是什么」) · text/07-p121-140.txt:750(搜「知乎
BLEU 的四条局限大模型评估方法text/07-p121-140.txt:804(搜「需要⼈⼯构造标准答案」)
裁判模型大模型评估方法text/07-p121-140.txt:819(搜「让⼤模型充当⼀个评估者」) · text/07-p121-140.txt:825(搜「个模型回答评估员」) · text/07-p121-140.txt:850(搜「比较严苛的评估员」) · text/08-p141-160.txt:9(搜「智能性: 0.8」)
裁判的两条注意与五条对策大模型评估方法text/08-p141-160.txt:14(搜「GPT-4 来进」) · text/08-p141-160.txt:23(搜「拆分评估维度」)
混合评估的分派表大模型评估方法text/08-p141-160.txt:42(搜「客观正确性」) · text/08-p141-160.txt:53(搜「则说明产⽣了模型幻觉」) · text/08-p141-160.txt:55(搜「限于时间与⼈⼒」)
检索准确率 M/N评估并优化检索部分text/08-p141-160.txt:64(搜「更⼤程度影响了应⽤的整体性能」) · text/08-p141-160.txt:87(搜「M 是成功检索的 query 数」) · text/08-p141-160.txt:92(搜「归因到知识库构建部分」)
三个它答不了的问题评估并优化检索部分text/08-p141-160.txt:97(搜「联合多个知识片段」)
四类归因与治法评估并优化检索部分text/08-p141-160.txt:121(搜「知识片段被割裂导致答案丢失」) · text/08-p141-160.txt:133(搜「query 提问需要」) · text/08-p141-160.txt:144(搜「关键词误导」) · text/08-p141-160.txt:155(搜「匹配关系不合理」)
召回率与重排只提了名字评估并优化检索部分text/08-p141-160.txt:109(搜「相对更强调召回」)
第二部分目录项目简介text/01-p1-20.txt:127(搜「架构概览」) · text/01-p1-20.txt:150(搜「程化评估」)

Footnotes

  1. 出处:「如何评估 LLM 应用」第 559 至 560 段(text/06-p101-120.txt:559,搜「⼀个⼀个进⾏评估就是不切实际的了」)。原文这一段紧接在第 10 章那套「先调一两个例子」之后。 2

  2. 出处:「大模型评估方法」第 590 段(text/07-p121-140.txt:590,搜「客观题评估判别很简单」)。原文说这正是大模型评估复杂的一个重要原因。

  3. 出处:「大模型评估方法」第 347 至 354 段(text/07-p121-140.txt:347,搜「准则⼀ 量化评估」)。原文还有一句本章没引的:量化后的评估指标应当有一定的评估规范,以保证不同评估员之间评估的相对一致。

  4. 出处:「大模型评估方法」第 444 至 451 段(text/07-p121-140.txt:450,搜「版本 A 的平均得分为3分」)。书没有给这四个数配一张表,原文是一段散文;表是我们排的。两个案例的原题分别是「南瓜书和西瓜书有什么关系?」(text/07-p121-140.txt:384,搜「瓜书有什么关系」)和「应该如何使用南瓜书?」。

  5. 出处:「大模型评估方法」第 453 至 462 段(text/07-p121-140.txt:453,搜「准则⼆ 多维评估」)。

  6. 出处:「大模型评估方法」第 464 至 486 段(第一个维度见 text/07-p121-140.txt:466,搜「知识查找正确性。该维度需要查看系统从向量数据库查找相关知识片段」;最后一个见 text/07-p121-140.txt:485,搜「智能性。该维度评估系统回答是否拟」)。原文把七个维度分成两组:前四个围绕知识与回答的正确性、与问题高度相关;后三个围绕拟人性与语法正确性、与问题相关性较小。

  7. 出处:「大模型评估方法」第 490 至 505 段(text/07-p121-140.txt:500,搜「应该将南瓜书作为」)。这份回答用的是第 10 章那个 v2 版提示词。

  8. 出处:「大模型评估方法」第 509 至 561 段(text/07-p121-140.txt:509,搜「source_documents」;页码字段见第 523 段(text/07-p121-140.txt:523,搜「page': 1」)、第 536 段(text/07-p121-140.txt:536,搜「page': 1」)与第 559 段(text/07-p121-140.txt:559,搜「page': 1」))。四块的顺序与内容是我们从原文那一大坨打印结果里读出来的;原文没有把它们排成表。「四块里有一块是废的」是我们的观察,书没有评论过这四块的质量。

  9. 出处:「大模型评估方法」第 565 至 576 段(text/07-p121-140.txt:565,搜「知识查找正确性」;末项见 text/07-p121-140.txt:576,搜「智能性——0.5」)。括号里那几句理由全部照录原文。图说里那两句归纳是我们的。

  10. 出处:「大模型评估方法」第 582 至 586 段(text/07-p121-140.txt:582,搜「越全⾯、具体的评估,其评估难度」;那个乘式见 text/07-p121-140.txt:584,搜「140」)。原文的原话是:如果我们有两个版本的系统,验证集中有 10 个验证案例,那么我们每一次评估就需要 10 × 2 × 7 = 140 次。

  11. 出处:「大模型评估方法」第 591 至 598 段与第 728 至 729 段(text/07-p121-140.txt:595,搜「构造客观题」;边界见 text/07-p121-140.txt:728,搜「构造为客观题会导致题⽬难度骤降」)。 2

  12. 出处:「大模型评估方法」第 600 至 619 段(text/07-p121-140.txt:604,搜「周志明 B 谢文睿 C 秦州 D 贾彬彬」)。标准答案 BCD 是书给的。A 那个「周志明」和西瓜书作者「周志华」只差一个字——这是一个设计得很好的干扰项,书没有点出这一点。

  13. 出处:「大模型评估方法」第 620 至 650 段(打分策略见 text/07-p121-140.txt:622,搜「全选1分,漏选0.5分」)。 2

  14. 出处:「大模型评估方法」第 662 至 675 段(text/07-p121-140.txt:672,搜「答案⼀得分: 0.5」)。四个回答与四个分全部照录。

  15. 出处:「大模型评估方法」第 677 至 678 段(text/07-p121-140.txt:678,搜「⿎励了模型的幻觉回答」)。「乱猜是免费的」这句翻译是我们的,原文只说「这样其实鼓励了模型的幻觉回答」。

  16. 出处:「大模型评估方法」第 680 至 723 段(第二版的四个分见 text/07-p121-140.txt:721,搜「得分: -1」)。两版打分函数只差一行:错选时返回 0 还是返回 -1。

  17. 出处:「大模型评估方法」第 737 至 746 段(text/07-p121-140.txt:739,搜「标是什么」)。那份标准答案原文更长,本章节选了首尾。

  18. 出处:「大模型评估方法」第 750 至 751 段(text/07-p121-140.txt:750,搜「知乎|BLEU详解」)。「原本是给机器翻译打分用的」这半句是我们补的;书只说「不管是机器翻译、自动文摘等任务,其实都需要评估生成答案的质量」,没有说 BLEU 的出身。

  19. 出处:「大模型评估方法」第 775 至 801 段(两个分见 text/07-p121-140.txt:795,搜「1.2705543769116016e-231」与 text/07-p121-140.txt:799,搜「1.1935398790363042e-231」;书的评语见 text/07-p121-140.txt:801,搜「答案与标准答案⼀致性越⾼」)。「只比完全不同的那个高约 6%」这个比值是我们算的(1.2706 ÷ 1.1935 ≈ 1.065),书没有算过。 2

  20. 出处:「大模型评估方法」第 755 至 766 段(text/07-p121-140.txt:765,搜「sentence_bleu」)。「错在第一个参数的类型」这个诊断是我们的,书没有发现这处问题。 补充(不在书里,来自通用知识):nltk 这个库里 sentence_bleu(references, hypothesis) 的第一个位置要的是「参考答案的列表」,每份参考答案自己是一个词的列表;传一维列表进去,库会把每个词各当成一份参考。这一点你可以自己验:把那一行改成 sentence_bleu([true_answers], generate_answers) 重跑,一字不差的那个答案会拿到接近 1 的分。

  21. 出处:「大模型评估方法」第 804 至 808 段(text/07-p121-140.txt:804,搜「需要⼈⼯构造标准答案」)。四条局限全部照录原文,只把措辞改短了。

  22. 出处:「大模型评估方法」第 814 至 816 段(text/07-p121-140.txt:814,搜「使⽤⼈⼯评估准确度⾼」)。

  23. 出处:「大模型评估方法」第 824 至 866 段(text/07-p121-140.txt:825,搜「个模型回答评估员」;那句严苛的要求见 text/07-p121-140.txt:850,搜「比较严苛的评估员」)。那段提示词把七个维度连同量纲逐条抄了进去,长度约是被评回答的三倍。 2

  24. 出处:「大模型评估方法」第 908 段起,跨到下一页(text/08-p141-160.txt:9,搜「智能性: 0.8」)。图说里那两句对照是我们做的,书把两组分印在相隔几页的地方,没有并排比较过。

  25. 出处:「大模型评估方法」第 11 至 33 段(第一条见 text/08-p141-160.txt:14,搜「GPT-4 来进」;五条对策见 text/08-p141-160.txt:23,搜「拆分评估维度」)。「这条不满足,评估就是自证」这句判断是我们的措辞,书说的是「所选用的评估大模型需要有优于我们所使用的大模型基座的性能」。 2 3

  26. 出处:「大模型评估方法」第 35 至 56 段(text/08-p141-160.txt:42,搜「客观正确性」;那条幻觉推论见 text/08-p141-160.txt:53,搜「则说明产⽣了模型幻觉」;那句坦白见 text/08-p141-160.txt:55,搜「限于时间与⼈⼒」)。 2 3 4

  27. 出处:「评估并优化检索部分」第 62 至 64 段(text/08-p141-160.txt:64,搜「更⼤程度影响了应⽤的整体性能」)。原文还说明了为什么这一章不写代码:检索部分的优化是一个更工程也更深入的命题,往往要用很多源于搜索的进阶技巧,所以只讨论思路。

  28. 出处:「评估并优化检索部分」第 78 至 93 段(公式见 text/08-p141-160.txt:87,搜「M 是成功检索的 query 数」;那个前提见 text/08-p141-160.txt:92,搜「归因到知识库构建部分」)。

  29. 出处:「评估并优化检索部分」第 95 至 103 段(text/08-p141-160.txt:97,搜「联合多个知识片段」)。原文最后一句是:上述问题都不存在标准答案,需要针对项目实际针对的业务、评估的成本来综合考虑。 2

  30. 出处:「评估并优化检索部分」第 121 至 131 段(text/08-p141-160.txt:121,搜「知识片段被割裂导致答案丢失」;治法见 text/08-p141-160.txt:127,搜「优化文本切割」)。这一类正是第 05 章那笔账的兑现处。

  31. 出处:「评估并优化检索部分」第 133 至 142 段(text/08-p141-160.txt:133,搜「query 提问需要」;治法见 text/08-p141-160.txt:141,搜「预设提问让 LLM 做出回答」)。

  32. 出处:「评估并优化检索部分」第 144 至 153 段(text/08-p141-160.txt:144,搜「关键词误导」;治法见 text/08-p141-160.txt:151,搜「query 改写成」)。「和第 08 章形状一样」这个对照是我们做的。

  33. 出处:「评估并优化检索部分」第 155 至 166 段(text/08-p141-160.txt:155,搜「匹配关系不合理」;治法见 text/08-p141-160.txt:163,搜「优化向量模型或是构建倒排索引」)。本组拆解第 06 章第 7 节已经把这一类提前讲过。

  34. 出处:「评估并优化检索部分」第 109 至 112 段(text/08-p141-160.txt:109,搜「相对更强调召回」)。原文这一段共四行,「召回率」和「重排」都只以名词形式各出现一次,没有定义、没有例子、没有公式,末句是「这部分就不再赘述了,欢迎有兴趣的读者进行深入研究和分享」。

  35. 出处:「项目简介」第 127 至 150 段(text/01-p1-20.txt:127,搜「架构概览」;最后一项见 text/01-p1-20.txt:150,搜「程化评估」)。这张表照目录原样列出,合并了同级层次但没有添也没有漏。 那份目录标着「正在创作」,负责人署名高立业(text/01-p1-20.txt:124,搜「立业」)。