跳到主要内容

动手学大模型应用开发(Datawhale llm-universe)— 全书拆解

30 秒导读: 你问它一件它没学过的事,它不会说「我不知道」,而是编一段像样的。 这门课整本书在治这一个毛病,而且用的是最便宜的那条路:不动那台机器,只改问题。

做法朴素得出奇——提问之前先去你自己的资料里搜一遍,把搜到的段落连同问题一起递过去, 让它照着这段材料回答。全书就是把这句话拆成八个步骤,一步一步做出来。

它的落点是一次真实的失败。 书里那条链第一次跑,问「什么是南瓜书?」, 答的是「抱歉,我不知道南瓜书是什么。谢谢你的提问!」。 而不接资料库时,同一台机器编了一整段关于南瓜种植的书。 本组拆解认为这次失败是全书最有价值的一页: 「我不知道」是一个你能处理的答案,一段编造的介绍不是。

1. 先说清这本书在治什么

这一节只讲一件事:全书的起点是一个很具体的现象。

ChatGPT 背后那台机器,全名叫大语言模型(LLM)——读进一段文字、再一个字一个字往下续写的机器; 大模型就是它的简称,本组拆解两个名字混着用。

它干的事从头到尾只有一件:接着你的话往下写。 所以你问一件它没学过的事,这个模型没有一个「查一下我到底知不知道」的动作可以做—— 接在「南瓜书是」后面最顺的续写,就是「一种关于南瓜的书籍」。

这个毛病有个正式名字:幻觉——指的就是它一本正经地说出没有依据的内容你出门到处会撞见这个词。

注意这不是「它笨」,是它的工作方式决定的。 这一点决定了后面所有做法的方向:你没法让它变得诚实,你只能把答案递到它手边。

2. 这是谁在什么时候写的

是什么Datawhale 免费公开在网上的教程 llm-universe,面向零基础开发者1
谁写的项目负责人邹雨衡;第一部分由高立业、毛雨、娄天奥、徐虎等人分章执笔2
什么时候内容里最晚的时间点是 2024 年 3 月;第三部分那个项目的版本记录写着 2024-03-173
面向谁只要求会写基本的 Python,不要求任何人工智能方面的底子,也不需要显卡4

三件事必须先说,否则会误读这本书。

第一,它分三部分,而第二部分至今只有目录。 第一部分「LLM 开发入门」是完整的教程; 第二部分「LLM 开发技巧」印了一份七大类二十来项的目录,正文一个字都没有; 第三部分「LLM 应用实例」是两篇项目解读,正文是全的5

注意最后半句,因为书自己在首页写反了。 书首那句「第二、三部分正在创作中」是它自己的过期说法—— 写那句话的时候第三部分确实还没写完,而在这一版里它已经在了6

第二,第三部分换了作者、也换了体例。 它更像项目文档而不是教程:有版本号、有环境要求、有申报式的「项目意义」小节。 本组拆解把这两篇单独放在第 12、13 两章,并在那里标明了它们和前面十一章的差异。

第三,凡是带价格、带长度上限、带版本号的地方,都当历史读。 书里的价目表、免费额度、产品清单全部停在 2024 年一季度做法没过期,数字全过期了。

3. 全书一条主线

只读这一节,不看任何拆解章,你也能把这本书讲给别人听。 下面这条链从头贯到尾,每一步都是被上一步逼出来的

① 它会编,而且编得很像样

上一节那个现象就是起点。关键在于它编得通顺、有条理、格式规整—— 你一眼看不出它错了。

② 治它有两条路,一条贵一条便宜

先钉一个词:训练指的是拿海量文本反复喂给它、 把它内部那一大堆数往「下一个字猜得更准」的方向挪的那个过程。

第一条路叫微调:拿你自己的资料在别人训好的模型上再训一小段,把知识写进模型内部。 这条路要显卡、要数据、要会训的人。

第二条不动模型,只改问题:提问之前先去你的资料里查一遍,把查到的段落连同问题一起递过去。 它的正式名字叫检索增强生成(RAG)——先查一遍,再拿查到的东西去问这门课整本走第二条,理由就是门槛:不要显卡、不要数学功底、资料改了不用重训。

③ 「递过去」具体是一段留了两个空的普通中文

这一步是这门课全部手法的核心,而它长这样——一段普通的话,两个空:

使用以下上下文来回答最后的问题。如果你不知道答案,就说你不知道,不要试图编造答案。
{context} ← 填从你自己的资料里查出来的段落
问题: {question} ← 填用户那句话

图说:这一段里没有一行代码,全是自然语言。

发给模型的整段输入叫提示词——它就是你写给模型的那段话,这个名字你出门到处会撞见。

这就是这门课与传统做法的分界线: 过去要把业务拆成一堆子任务、每个子任务单独训一个小模型; 现在是一个通用大模型 + 若干段写好的话。 所以书才说:大模型开发更多是一个工程问题。 你要学的不是怎么造那台机器,是怎么给它下指令、怎么给它备料。

④ 但「查一遍」这件事,普通数据库干不了

因为用户问「南瓜书怎么用」,而资料里写的是「南瓜书的最佳使用方法是……」—— 按关键词找,这两句一个字都不重合。

办法是把文字变成一串数:同一句话在三家分别变成 1536 个、384 个、1024 个小数, 而这些数被安排成「意思近的挨得近」。两串数能比较,两段文字不能。 (代价是一条硬约束:建库用哪家算的数,提问就必须用同一家。第 04 章讲。)

⑤ 而且整本书塞不进去,得先剁碎

模型一次能读进去的字数有上限,而一本三十万字符的资料是那个上限的十几倍。 所以要按长度切:这门课切出来是 720 块、308931 个字符

书自己在这里说了一句很坦白的话:怎么切决定了检索系统的下限,而它只做了最简单的一种。 这句坦白后来在第 11 章变成了一条真实的失败归因。

⑥ 串起来,第一次跑就失败了

把「取块 → 填模板 → 问模型」包成一条链,只要一句代码、四个设定。 然后书跑了第一次,问「什么是南瓜书?」,答:「抱歉,我不知道南瓜书是什么。谢谢你的提问!」

链是通的——那句「谢谢你的提问!」就是模板里写的。 失败的账只有一笔: 书为了跑得快只把切出来的前 20 块放进了库, 而那 20 块全是资料堆里另一份材料,南瓜书一个字都没进去。调它取几块没用,得改库。

这里要顺带记住另一条更根本的性质,它这次还没派上用场、但很快就会咬人: 这类模型学的是「哪两句话经常一起出现」,不是「哪一句是哪一句的答案」。 (这条性质第 06 章会用一个例子讲透,第 11 章会把它列成检索出错的一类归因。)

⑦ 但这次失败比成功更值钱

同样两个问题,不接资料库直接问: 「什么是南瓜书?」它编了一段南瓜种植的书; 「王阳明是谁?」它答对了。接了资料库之后,两句都说「不知道」。

左上那一格最危险:它错了,而且你看不出它错了。 「我不知道」是一个你能处理的答案,一段编造的介绍不是。 代价也要认:接了之后它连王阳明都不肯答了——因为你自己在模板里写了「不知道就说不知道」。

⑧ 让它记得上一句,再让别人能打开它

模型不记得你上一句说过什么。治法朴素:把之前说过的原样再发一遍。 但光塞回去不够——「为什么这门课需要教这方面的知识?」里那个代词指不到任何东西, 所以要先用历史把问题补全,再拿补全后的句子去取块。

然后做个网页,让别人也能用。这一步只有一个坑值得记: 每次交互,整个脚本从第一行重跑一遍,所以你程序里临时存着的东西活不过一次点击,对话历史会消失。

⑨ 到这里东西才刚做完,真正的工作现在开始

书的做法是:先拿一到三个例子把提示词调通,再去收坏例子。 它示范了四版演进,每一版只加一句话: 太简略 → 加「尽可能详细具体」;没重点 → 加「有几点就分点标号」;信不过 → 加「请附上来源原文」。

改完还剩两种提示词治不了的错: 一种是拿资料里的碎片拼出一段没人说过的话(每一句都像对的,错在连接处); 一种是用户提的格式要求被模板整个吃掉。前者靠让它自己回头查一遍,后者靠在链前面再加一层。

⑩ 改多了就必须有一个数

因为「改一版就要把之前对的全部重跑一遍」,而这是个乘法。 书自己算过:10 个案例 × 2 个版本 × 7 个角度 = 140 次; 验证集扩到几百、版本几十个,就是上万次

于是有五种打分办法:人工按七个角度打、改造成选择题、和标准答案算相似度、 让另一台更强的模型当裁判、以及按角度混着用。 书自己那段算相似度的代码把参考答案传错了类型, 导致一字不差的答案和完全不同的答案得分都掉到 10 的负 231 次方、彼此几乎没差别

回答那一半评完,还得单独评取块那一半: N 个问题里有 M 个的答案落在取回的块里,准确率 = M/N。 而取块出错有四类归因,第一类正是第 ⑤ 步那句坦白的兑现处。

⑪ 最后两个真项目,给出一张成本阶梯

第一个项目告诉你一件教程没教的事:资料进库之前可以先让模型压一遍。 它爬来一个组织下所有仓库的说明文件,删掉网址、删掉可能触发审核的词, 再让模型把每一份压成 200 字以内的摘要——只有摘要进库。

第二个项目把同一件事用四条路各做了一遍,于是有了这张阶梯:

只写一段话 → 一个密钥
加一个资料库 → 一个密钥 + 一台普通电脑 + 建库那一次的时间
加多台模型协作 → 一个密钥 + 更多次调用(每一步都要花钱)
训一个自己的模型 → 显卡 + 大量数据 + 会训练的人

图说:每一层比上一层贵一个量级,不是贵一点。
这就是第 ② 步那个选择的全部理由。
(这张阶梯是本组拆解排的,书没有把四条路的成本这样并排比较过。)

4. 十三章地图

这张表不用记任何行话——每一章后面写的是「读完你能回答什么问题」。

读完你就能回答
01 这门课要造的到底是什么它为什么会编?两条治法各要付出什么?整件事被拆成了哪八步?全书那些代码是靠哪套现成零件写的?
02 调一次模型一次调用发过去的是什么、回来的是什么?这一次花了多少钱?
03 把话说对它为什么会对一道算错的题点头?怎么让一句用户输入顶不掉你的指令?
04 把一句话变成一串数为什么按关键词找不够?挑这类模型该看什么?
05 从一份文件到一堆块一份 PDF 读进来长什么样?为什么必须剁碎?按什么剁?
06 建库、落盘、取回来取回来有哪两种取法?为什么「最像的」不等于「是答案」?
07 串成一条链那几个设定分别管什么?第一次跑为什么失败,而这次失败凭什么值钱?
08 让它记得上一句它为什么不记得?把历史塞回去为什么还不够?
09 让别人也能打开它不会写网页怎么做界面?为什么第一版只能问一句就断?
10 一个坏例子改一次提示词四版提示词各改了什么?接了资料库之后它还怎么编?
11 五种打分办法一个回答该从几个角度打分?没有标准答案的题怎么自动判?
12 项目一:个人知识库助手资料进库之前还能做什么?(这一章最值得抄走的一条)
13 项目二:天机同一件事四条路各要付出什么?什么时候该停在第一条?

最短路径(想尽快造出一个能跑的东西): 02 → 04 → 05 → 06 → 07,这五章缺一不可。 02 教你调模型;04、05、06 把资料变成可查的库;07 把它们串起来。 跳过其中任何一章,你手里都拼不出一个完整的东西。

造完之后再读: 03(把话说对)、08(记住上一句)、09(做个界面), 然后是 10、11(找坏例子、打分),最后 12、13(两个真项目)。

只想拿结论的话:本页第 3 节 + 第 07 章第 6 节那张四格表。

5. 这本书覆盖什么、不覆盖什么

覆盖(而且讲得比一般教程实在):

  • 一条完整的实现路径:调模型 → 写提示词 → 处理资料 → 建库 → 取块 → 串链 → 让它记住上一句 → 上线 → 找坏例子 → 打分;
  • 这条路上用的那套现成零件(LangChain):它是什么、备了哪六类零件、当时刚出第一个稳定版、它那一家子五件东西各干什么——本组拆解在第 01 章第 7 节整章交代;
  • 每一步都有真实跑出来的输出,包括失败的那次——这是它最难得的地方;
  • 四家模型在调用上的三处差异:那个控制发散程度的旋钮不许设成 0、人设要从另一处传、有一家要走长连接;
  • 五种评估办法,以及它们各自的适用范围与失效方式;
  • 两个开放源码项目的完整拆解,其中「资料进库前先让模型压成摘要」这一招教程本身没教。

不覆盖(别指望在这本里找):

缺什么说明
模型内部长什么样书第一章讲了各家模型的家谱与几处内部改进,但后面一次都没用到;本组拆解在第 01 章第 5 节把这件事整体交代掉,不展开
检索增强生成的四阶段术语划分书在简介里列了「数据处理 / 检索 / 增强 / 生成」四阶段,它自己后面也没再用这套划分;本组拆解同样不用
进阶的取块技巧那份没有正文的第二部分目录里列了一大串,全部没有兑现;本组拆解第 11 章第 9 节把这份目录原样列了出来
召回率(「库里所有该取回的,实际取回了几成」)书只提了名字,没有定义、没有例子、没有公式;本组拆解照实说明,不替它补
怎么训练一个模型全书明确不教;第 13 章那条路书自己也只做出了一个功能
视频资料怎么变成文字第三部分那个项目的资料库里有一份视频,书没有交代它是怎么处理的
怎么装环境书有一章专讲怎么去云厂商那儿领一台机器、怎么装 Python 那套家伙、怎么把写代码的环境起起来。本组拆解整章跳过,理由是它全部依赖 2024 年初那几家厂商的界面与免费额度,今天照着点已经对不上;真要装,直接看那几家当时的官方说明更靠谱

6. 我们的判断

判断(我们的,不是书里的): 这本书最值钱的一页,是它印出来的那次失败。 「抱歉,我不知道南瓜书是什么」和「南瓜书是一种关于南瓜的书籍」摆在一起, 才说清了接资料库到底换来了什么。 而书本身只用一句「加上本地知识就可以帮助它做出更好的回答」带过, 读者很容易把那次失败读成模型的问题。 如果错,会错在: 如果你照书跑时把那个只取前 20 块的限制去掉、让南瓜书也进库, 那次实验会成功,这条判断对你就不成立——但书里印出来的那次是失败的。

判断(我们的,不是书里的): 这本书的教学顺序有一处系统性的偏斜—— 它九章都在改「怎么问」和「怎么找」,直到第三部分那个项目才出现「改被找的那一侧」。 而那一招(进库前先让模型把每份资料压成 200 字的摘要)同时解决了三个问题: 无关内容变少、块不被切碎、摘要的句式和提问的句式天然接近。 如果错,会错在: 摘要是有损的——用户问细节时,细节已经在压缩那一步被丢掉了。 判据是:你的用户问的是「这是什么」还是「具体怎么做」。

判断(我们的,不是书里的): 这本书今天的价值排序是三档,从高到低—— ① 那条实现路径与它印出来的真实输出(仍然成立); ② 五种评估办法的适用边界(仍然成立); ③ 具体的库版本、函数名、价目与代码(已经过期)。 引用它的时候引 ① 和 ②,别引 ③ 里的任何一个数。 如果错,会错在: 如果这套框架的调用方式在未来几年保持稳定(而不是像书里那样满屏「将要移除」的警告), 那么 ③ 也仍然可用。判据是:你照书跑时有没有看到那种「这个写法将被移除」的警告——书自己印出来的那次是有的。

7. 许诺兑现表

正文里每一处往后指的话都记在这里,全书写完逐行核过—— 核两件事:那一节真的讲了吗?讲的是不是许诺的那件事,而不是同名的另一件事。

左栏是许诺的意思,不是逐字原文。 本页一律用大白话, 而章节里用的是它们的行话名字,照抄过来会让这一页凭空多出一堆没解释的词。

许诺在哪应兑现在哪核过了
index.md §3 ④「建库用哪家算的数,提问就必须用同一家。第 04 章讲」04 第 4 节:三家给的长度不一样,由此得出那条硬约束
index.md §3 ⑤「书那句『怎么切决定了下限』的坦白,后来在第 11 章变成一条真实的失败归因」11 第 8 节第 ① 类:知识片段被割裂导致答案丢失
index.md §3 ⑥「这条性质第 06 章会用一个例子讲透」06 第 7 节:「今天天气怎么样」那个例子
index.md §3 ⑥「第 11 章会把它列成检索出错的一类归因」11 第 8 节第 ④ 类:匹配关系不合理
01 §1「第 03 章讲把话说清楚也治不了它」03 第 6 节:三篇不存在的论文
01 §1「第 10 章讲它还有一种更难发现的形态」10 第 5 节:拿资料里的碎片拼出一段没人说过的话
01 §5 表「只在第 02 章挑一家来调时用到」02 第 6 节:换一家的三处差异
01 §6 八步图右侧那一列章号逐格核过:③→07、④→04/05/06、⑤→02/03、⑥→10/11、⑦→08/09、⑧→12/13
01 §6「填那个空需要的资料库要到第 06 章才建起来」06 第 1 节:建库、落盘、重开
01 §6「第 07 章那条走查会失败,那一章会把这笔账当场结掉」07 第 5 节:跑一次,它答不上来
01 脚注 12「那件事的名字挪到第 03 章讲「给它两个例子」时挂出来」03 第 5 节末尾把那个名字挂了出来
01 §7 那张六类零件表右侧那一列章号逐格核过:统一入口→02 §5 那个 get_completion07 §2、跟资料打交道→05 全章与 06 §1/§4、串成一步→07 §4、记住上一轮→08 §3、自己决定调什么→10 §7;最后一类「运行流水」标的是「书里没用到」,核过全书确实没有
01 §7「这六类各自的名字,留到真正用到它的那一章再挂出来」逐个核过:串成一步那一类的名字挂在 07 §1,记住上一轮那一类挂在 08 §3,自己决定调什么那一类挂在 10 §4
01 §7「第 07 章会看到书自己印出来的结果里夹着『这个写法将被移除』的警告」07 第 8 节第一条:满屏都是这类提醒
01 §8「本组拆解第 11 章会把这张目录原样列出来」11 第 9 节那张第二部分目录表
02 §3「把提示词从 v1 改到 v4,是第 10 章的主线」10 第 2 至 4 节:v1→v2→v3→v4
02 §5「第 08 章要让助手记住上一轮,那时这个函数就不够了」08 第 3 节:把之前说过的原样再发一遍
02 §6「第 05 章要处理的那本南瓜书有 30 万字符,是这个上限的十几倍」05 第 4 节:同一句对照,以及第 6 节那个 308931
03 章首「第 10 章会拿真实的坏例子把同一套手法再走一遍」10 全章
03 §4「第 09 章要做一个网页界面,那时这道墙就是你唯一的防线」09 第 8 节末尾:这个页面没有任何过滤
03 §6「「外部知识」就是接下来四章要做的事」04(算成一串数)、05(切块)、06(建库)、07(取出来塞进那段话)
04 §3 图说「第 06 章取资料时用的就是这个量法」06 第 4 节:按这个量法排序,取最像的前 k 个
04 §4「这条约束会在第 06 章变成一行具体的代码」06 第 1 节那段重开代码的第二行
04 §5「「两路合起来用」的正式名字,第 06 章挂牌」06 第 6 节把那个名字挂了出来
04 §7 判断块「第 06 章会把那个坑提前挑明」06 第 7 节
05 §2「第 07 章要把「答案从哪一页来」还给用户,靠的就是这张卡片」07 第 7 节:把用到的原文块连同来源与页码要回来
05 §6「第 06 章要用这三个数算账」06 第 2 节:全库要调 720 次
05 §7「切坏的块的后果会在第 11 章被兑现」11 第 8 节第 ① 类:知识片段被割裂导致答案丢失
05 §7「第 12 章会把这处切分设定不一致再点一次」12 第 4 节与第 7 节第二条
06 章首与 §2「第 07 章会把那个空填上,并且当场失败一次」07 第 5 节
06 §2「本章第 4 节马上会看到取回来的三块,没有一块出自南瓜书」06 第 4 节那张三块表下面第一段(章内)
06 §4 末「这不是巧合,第 7 节会解释为什么」06 第 7 节(章内)
07 §1 末「这三样对应三个设定,第 4 节会逐个对上」07 第 4 节(章内)
07 §5「配对不是因果那条性质,要到第 11 章评检索时才真正派上用场」11 第 8 节第 ④ 类:匹配关系不合理
07 §7「这正是第 11 章那七个打分角度里的头一个」11 第 2 节表里第 ① 行
07 §7「第 11 章会把这四块真的打印出来」11 第 2 节那张四块的表(页码 1、1、0、1)
07 §7「第 10 章还有一种「标来源」的做法,和这个不是一回事」10 第 4 节:让它把来源原文附上
08 脚注 7「第 10 章那次「标明知识来源」的实验」10 第 4 节那次回答,末尾附了【来源:蘑菇书……】
09 §3 末「这是唯一一处安全考虑,第 8 节会说为什么不够」09 第 8 节后半
10 §1 末「收例子收多了怎么办,是第 11 章的事」11 第 1 节
10 §4「「自己决定下一步调什么」这个词,本章第 7 节还会正式用到它」10 第 7 节(章内):在链前面加的那一层拆指令的做法,正是它的雏形
10 §8 末「下一章要解决的正是这个乘法」11 第 2 节那笔 140 次的账,加第 3 至 5 节三种换法
11 §7「最后那一条失败正是下一节第 ① 类」11 第 8 节第 ① 类(章内)
12 §2 图说「为什么不能用,下一节说」12 第 3 节:先删网址与那串词,再压成 200 字
12 §2 走查图说「那四行下一节会被逐条删掉」12 第 3 节那笔「257 → 77」的账(章内)
12 §3 图说「摘要那个句式,下面第三张表会用到」12 第 3 节末那张表第三行(章内)

逐行核过之后改掉的三处:

  1. 原先第 05 章许诺「切坏的块的后果会在第 06 章和第 11 章各撞见一次」—— 第 06 章七节里没有一节讲块被切坏(第 2 节讲的是只放 20 块,第 7 节讲的是配对不是因果,都不是这件事), 所以那半句已经删掉,只许诺给第 11 章;
  2. 原先第 05 章许诺「第 10 章要让助手把出处标出来,靠的就是这张卡片」—— 第 10 章那个做法是在提示词里让模型自己抄一段原文,和那张卡片无关; 真正吃这张卡片的是第 07 章那个把原文块还给你的开关,已改指到那里, 并在第 07 章第 7 节末尾专门澄清了两者的区别;
  3. 原先总纲说「书里算相似度的那段代码把两个位置写反了」—— 其实位置没写反,错的是类型(把切碎后的那一串词当成「一组参考答案」传了进去), 已改成与第 11 章第 4 节完全一致的说法。

回头重核原文之后又改掉的一处(这一处更严重,是事实错误):

原先第 06、07 两章都写着「那 20 块覆盖了南瓜书的前几页,南瓜书的介绍确实在库里」—— 这是错的。 回去核原文才发现:建库那一步重新读了资料目录下的全部文件再切一次, 而书印出来的每一次检索结果(第 06 章那三块、原书下一章那三块)全部出自另一份讲怎么写提示词的教程, 没有一块出自南瓜书

所以那次「抱歉,我不知道南瓜书是什么」是库里根本没有答案的直接结果。 两章相关段落、图说、判断块与可带走的都已重写,并把「调 k 就能解决」这条错误的「怎样才算它错了」 改成了「调 k 没用,必须动库」


拆解写于 2026-08-25,依据主人手上那一版 PDF(转码后 20.4 万字符、10 个页桶)。

原始书籍文件不入库,本组文档是我们自己的重写;每条书内引用都可用 node scripts/book-verify.mjs dong-shou-xue-da-mo-xing-ying-yong-kai-fa 回核。

这本书没有可用的章节书签,所以出处只能指到页桶 + 段号 + 搜索短语。 凡标「补充(不在书里)」的说法,来源写在该处脚注里。

Footnotes

  1. 出处:「项目简介」第 4 段(text/01-p1-20.txt:4,搜「⾯向⼩⽩开发者的⼤模型应⽤开发教程」)。在线阅读地址见第 82 段(text/01-p1-20.txt:82,搜「llm-universe」)。

  2. 出处:「项目简介」第 87 至 170 段(text/01-p1-20.txt:87,搜「邹雨衡」;第一部分五章的执笔人分别署在第 89 至 117 段,见 text/01-p1-20.txt:89,搜「立业」与 text/01-p1-20.txt:109,搜「徐虎」)。致谢名单里另有毛雨、娄天奥等人。

  3. 出处:「大型语言模型(LLM)理论简介」第 278 段(text/01-p1-20.txt:278,搜「2024 年 3 月 4 日」)与「个人知识库助手项目」第 267 段(text/08-p141-160.txt:267,搜「0.2.0」)。后者写的是「当前版本:0.2.0(更新于2024.3.17)」。

  4. 出处:「项目简介」第 52 与 57 段(text/01-p1-20.txt:52,搜「算法基础没有任何要求」;text/01-p1-20.txt:57,搜「不需要 GPU 环境」)。

  5. 出处:「项目简介」第 18 至 23 段(text/01-p1-20.txt:18,搜「V1 版本的简化版」);第二部分目录见第 122 至 150 段(text/01-p1-20.txt:122,搜「进阶 RAG 技巧」);第三部分两篇的完整正文见「个人知识库助手项目」第 170 段起(text/08-p141-160.txt:170,搜「知识库助」)与「天机」第 198 段起(text/09-p161-180.txt:198,搜「情世故」)。

  6. 出处:「项目简介」第 25 段(text/01-p1-20.txt:25,搜「部分正在创作中」)。这句话与本书自身的实际内容矛盾——第三部分那两篇的完整正文就在书里(见脚注 5)。本组拆解按实际内容写,并把这一句标成书自己的过期说法。