跳到主要内容

这门课要造的到底是什么 — 从一句它答不上来的话说起

这一章讲三件事: 这门课要治的是什么毛病;为什么它选了两条治法里更便宜的那一条; 以及这条路被拆成的八个步骤长什么样、那八步的零件是谁替你备好的。

它在全书链条里的位置: 这是地基。后面每一章都是这八步里的某一步或某半步, 你在任何一章迷路时,回到本章第 6 节那张图就能定位。

本章主走查的输入:一句提问——「什么是南瓜书?」 这句话会在第 1 节被问一次(拿到一个编造的答案)、在第 3 节被塞进一段模板、 在第 6 节被标到八步图上。下面出现的所有回答原文,都是原书里真实跑出来的输出。

1. 你问它一件它没学过的事,它会编一段像样的

这一节是全书的起点,请先看一次真实输出。

原书拿 GPT(OpenAI 那一系列产品的名字)的 3.5 版问了一句「什么是南瓜书?」, 不给它任何资料。它答1:

南瓜书是指一种关于南瓜的书籍,通常是指介绍南瓜的种植、养护、烹饪等方面知识的书籍。 南瓜书也可以指一种以南瓜为主题的文学作品。

这段话通顺、有条理、格式规整,而且完全是编的。 机器学习(让程序从大量例子里自己总结规律,而不是由人把规则一条条写死)有一本很有名的 中文教材,作者是周志华;南瓜书是 Datawhale 免费放在网上的一本书,专门把那本教材里省掉的公式推导补出来2

它为什么不说「我不知道」? 因为它干的事从头到尾只有一件:接着你的话往下写。 它的全名叫大语言模型(LLM)——读进一段文字、再一个字一个字往下续写的那台机器; 大模型就是它的简称,本组拆解两个名字混着用。

「南瓜书是」这四个字后面,按它读过的中文里的规律,最顺的续写就是「一种关于……的书籍」。 它没有一个「查一下我到底知不知道」的动作可以做。

原书对这件事说得很直白:它在海量文本上练过一遍、掌握了丰富知识, 但实际上并没有完全记住所见的信息,难以准确判断自己的知识边界, 于是就会自行构造出似是而非的细节3

这个毛病有个正式名字,写代码时到处会撞见:幻觉——指的就是它一本正经地说出没有依据的内容3。 本组拆解后面还会两次回到它:第 03 章讲把话说清楚也治不了它,第 10 章讲它还有一种更难发现的形态。

2. 治它有两条路,这门课整本走便宜的那一条

这一节回答「为什么这门课不教你自己去训一个模型」。

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

第一条路叫微调——拿一批你自己的资料,在别人训好的模型上再训一小段, 把这些知识写进模型内部4。训完之后它就「记住」南瓜书是什么了。

第二条路:不动模型,改问题。 提问之前先去你自己的资料里搜一遍, 把搜到的段落连同问题一起递给它,让它照着这段材料回答。 这条路的正式名字叫检索增强生成(RAG)——先查一遍,再拿查到的东西去问5

原书为这两条路列了一张对照表,下面是其中最影响选择的五行4:

比什么检索增强生成微调
资料更新直接改知识库,不用重训通常要重新训练一遍
对资料的要求极低依赖高质量数据集,数据不够就没效果
能不能说出处能追溯到具体来源黑盒子,说不出
要多少机器只多一次查找要求较高
每次回答的耗时多了查找那一下和直接问一样

算法就是一串写死的计算步骤(比如「把一列数从小到大排好」该按什么次序比)。 这门课选第二条路的第一个理由写在书的第一页: 它对你的人工智能基础、算法基础没有任何要求,只要会写基本的 Python6

第二个理由是硬件。显卡(GPU)就是专门用来同时做成千上万次同类计算的那块硬件, 训练模型全靠它,一块能用的通常要上万元。而书写明: 本地硬件基本没有要求,不需要 GPU 环境7

3. 「把资料塞进问题里」具体长什么样

这一节是主走查的中段:同一句提问,被塞进一段模板之后变成了什么。

「塞进问题里」不是比喻。原书真正发给模型的那段话长这样,一字不改8:

使用以下上下文来回答最后的问题。如果你不知道答案,就说你不知道,不要试图编造答案。
最多使用三句话。尽量使答案简明扼要。总是在回答的最后说"谢谢你的提问!"。
{context}
问题: {question}

图说:这段话有两个空。{context} 等着填从你自己的资料里搜出来的段落,
{question} 等着填用户那句「什么是南瓜书?」。其余的字每次都一样。

发给模型的整段输入有个名字:提示词(Prompt)——它就是你写给模型的那段话; 围绕这段话的设计与调试叫提示工程。这两个名字你出门到处会撞见—— 别人的文档里、报错信息里、招聘启事里,全是它们。

注意这段模板里其实藏着三条指令:「不知道就说不知道」是防它编的, 「最多三句话」是控制长度的,「总是说谢谢你的提问」是定语气的。 它们全部只是自然语言,没有一行代码。 这就是这门课的全部手法。

原书把这件事拔到了方法论的高度:过去做一个 AI 应用,要把业务拆成一堆子任务、 每个子任务单独造训练数据、单独训一个小模型,最后串成一条链; 现在是用一个通用大模型 + 若干业务提示词来解决任务9

所以书才说:大模型开发更多是一个工程问题10你要学的不是怎么造那台机器,是怎么给它下指令、怎么给它备料。

4. 为什么这条路直到最近才走得通

这一节回答一个很容易被跳过的问题:既然这么简单,为什么不是一直如此?

参数就是模型内部那一大堆可以调的数,训练调的就是它们。 原书举的对照很干净:GPT-3 有 1750 亿个参数,而上一代 GPT-2 只有 15 亿—— 同一个架构、同样的训练方式,规模差了一百多倍11

结果不是「大的那个准一点」,而是大的那个会做小的那个完全不会的事: GPT-3 能在你提问时看两个例子,就把一件没专门为它训练过的任务做出来, GPT-2 在这方面表现较差12

原书管这种「小模型身上不明显、大模型身上突然冒出来」的能力叫涌现能力, 并且拿物理学里的相变打了个比方:量变引起质变13(这个比方就到这里为止,后面一律说涌现。)

涌现带来的直接后果是一个新说法:2021 年斯坦福等高校提出了基座模型(foundation model)—— 拿海量没人整理过的原始文本训出一个大模型,大量下游应用只依赖这一个或少数几个,不必各训各的14

这就是你不必自己训模型的全部理由: 那台机器已经有人训好了, 你的活是接上去、备好料、把话说对。后面十二章讲的就是这三件事。

5. 这门课不教什么,以及为什么不教

这一节是提前替你省掉半章书。

原书第一章有大半篇幅在讲模型的家谱与内部改进:各家产品的发布时间与价目、 某一家把网络里的几个零件换成了什么、另一家一次能读进去的字数翻了一倍。

这些内容在这门课后面一次都没有被用到。 下面这张表是我们逐项核过的:

书第一章讲了后面用得上吗
GPT / Claude / PaLM-Gemini / 文心 / 星火的谱系与价目只在第 02 章挑一家来调时用到「有哪几家」,细节用不上
LLaMA 的三处内部改进、LLaMA2 的两万亿字训练量一次都没用到
通义千问 / GLM / 百川各自把代码公开出来的节奏与尺寸一次都没用到
大模型的七条特点(规模大、多语言、能处理图片声音、伦理风险……)只有「幻觉」那一条被后面反复用到
检索增强生成的四阶段术语划分(数据处理 / 检索 / 增强 / 生成)书自己后面也没再用这套划分

为什么不用: 因为这门课全程通过网络去用别人家的模型。 API 就是给程序用的那个入口:你的程序按规定格式发一条请求过去,对方把答案发回来。 你能碰到的只有三样——发过去的话、随请求带的几个数、拿回来的字; 那台机器内部的零件你看不到,也碰不到。

判断(我们的,不是书里的): 书第一章那份谱系表是这本书里最先过期的部分—— 它停在 2024 年 3 月,今天读到的每一个价格、每一个长度上限都已经不对了。 但它不影响这门课其余部分成立,因为后面的做法完全不依赖具体是哪一家的模型。 如果错,会错在: 如果你要做的是选型或成本测算,那这一章就不是「用不上」而是「必须重查」。

6. 从一句话到一个能用的东西,中间有八步

这一节是全书地图,也是主走查的终点。

原书把大模型开发拆成八步15。下面这张图把这八步和本组拆解的章号对上了:

① 确定目标(做个什么) ← 本章
② 设计功能(核心功能 + 上下游) ← 本章
③ 搭建整体架构 ← 第 07 章
④ 搭建数据库(收资料 → 切 → 算成数) ← 第 04、05、06 章
⑤ 把话说对(设计提示词) ← 第 02、03 章
⑥ 验证迭代(找坏例子、改提示词) ← 第 10、11 章
⑦ 前后端搭建(做个界面) ← 第 08、09 章
⑧ 体验优化(上线之后接着改) ← 第 12、13 章

图说:章号不是按 ① 到 ⑧ 排的。原因很实在——
你得先会调一次模型(第 02 章),才谈得上设计提示词或者搭架构。

现在回到那句「什么是南瓜书?」。 它此刻卡在第 ⑤ 步和第 ④ 步之间: 第 3 节那段模板是第 ⑤ 步的产物,而 {context} 那个空还没有东西可填—— 填它需要的资料库要到第 06 章才建起来。

这正是本组拆解第 07 章那条走查会失败的原因,那一章会把这笔账当场结掉。

7. 这八步不用你从零搭:有人把零件备好了

这一节交代一件后面十二章都默认你已经知道的事:那些代码不是从空白开始写的。

上面那八步,每一步都要写代码:读一份 PDF、把它剁成小块、把块存进一个能按意思查的地方、 把查到的段落填进那段模板、再把整段话发给模型。 你要是从零写,光「怎么读 PDF」「怎么调模型」就得各查一遍各家的说明, 而各家的写法互不相同——换一家模型,这一段就得重写一遍。

有人把这些活预先写好了:读文件、切块、存库、取块、拼模板、发请求, 每一样都备好一个现成的零件,并且给同类零件统一了写法—— 换一家模型只要改一个名字,别的一个字不用动。

这样一套备好的零件叫开发框架,而这门课用的这一个,名字叫 LangChain16本组拆解后面凡是说「框架」,指的都是它。

书讲它的来历也很实在:大模型本身调起来不难,难的是把它做成一个完整应用—— 跟别人家的服务怎么对接、交互逻辑怎么写、数据存哪儿,全都要自己定制。

2022 年起陆续有许多机构和个人把这些活做成了公开项目 (开源就是把代码公开放在网上,谁都可以拿去看、拿去用), LangChain 是其中最受关注的那一个16

它备好的零件分成六类,这门课真正动手用的是前四类17:

框架备好的一类零件干什么这门课在哪儿用到
跟模型说话的统一入口发一段话、收一段话,四家模型同一种写法第 02、07 章
跟你的资料打交道的一整套读文件、剁块、连上那个按意思查的库、取块第 05、06 章
把好几步串成一步「取块 → 填模板 → 问模型」一次调用跑完第 07 章
让它记得上一轮说了什么把之前的对话存下来,下次一起发过去第 08 章
让模型自己决定下一步调什么复杂任务拆成多次调用第 10 章顺带提到
每一步的运行流水记下中间过程,便于排查书里没用到

这六类各自的名字,本组拆解留到真正用到它的那一章再挂出来—— 一次摆六个名字,你一个也记不住,而它们分开来看每一个都很好懂。

再交代两件出门就会撞见的事。

第一,它 2024 年 1 月 9 日才有第一个稳定版 v0.1.0,而这本书就是照着那一版写的18换句话说:你在书里读到的每一个函数名,都来自一个当时刚满月的版本。 第 07 章会看到书自己印出来的运行结果里就夹着「这个写法将被移除」的警告。

第二,它不是一个库,是一家子。 书列了五件19:

名字是什么
LangChain Core核心库:处理文档、拼模板、把模型吐出来的东西整理成程序能用的格式,都在这儿
LangChain Community第三方接入的集散地
LangChain CLI命令行工具:建项目、跑测试、部署
LangServe把应用推到云上跑的那一套
LangSmith调试与测试平台,能看清每一步的输入和输出

这门课只用到前两件,后三件一次都没出现。 书还提到它当时接了近 700 家外部服务18—— 而这门课从头到尾只用到其中四五家(OpenAI、智谱、文心、Chroma、那个读 PDF 的工具)。

8. 边界:这本书自己是什么状态

这一节交代三件影响你怎么读它的事。

第一,它是三部分中的第一部分。 书自己写明:第一部分 LLM 开发入门、 第二部分 LLM 开发技巧、第三部分 LLM 应用实例20

第二,第二部分至今只有目录,没有正文。 那份目录印在书里,列了七大类二十来项, 正文一个字都没有21。本组拆解第 11 章会把这张目录原样列出来,让你知道它欠着什么。

第三,第三部分的正文是全的,但换了作者、也换了体例。 它是两篇项目解读(个人知识库助手、天机),写法上更像项目文档而不是教程, 本组拆解把它们放在第 12、13 两章22

所以书首那句「第二、三部分正在创作中」是书自己的过期说法23—— 写那句话的时候第三部分确实还没写完,而在你手上这一版里它已经在了。

顺带一条:书里那份产品清单停在 2024 年 3 月(最晚提到的是 2024 年 3 月 4 日发布的 Claude-3)24凡是带价格、带长度上限、带版本号的地方,都当历史读。

9. 可带走的

  1. 它答不上来时不会说「不知道」,会编一段像样的——因为它只会接着往下写,没有「查一下自己知不知道」这个动作;这个毛病叫幻觉;
  2. 治幻觉有两条路:重训模型(微调)、或者把资料塞进问题里(检索增强生成);这门课整本走后者;
  3. 选后者的实际理由是门槛:不需要显卡、不需要算法功底、资料改了不用重训;
  4. 「塞进问题里」就是一段留了两个空的普通中文:一个空填搜到的资料,一个空填用户的问题;
  5. 这段话叫提示词,围绕它的设计叫提示工程——这两个名字你出门到处会撞见;
  6. 过去是「一个子任务训一个小模型」,现在是「一个通用大模型 + 若干段写好的话」——所以这是个工程问题,不是算法问题;
  7. 这条路成立的前提是涌现:模型大到某个规模,会做它没专门被训练过的事(GPT-3 的 1750 亿个参数对 GPT-2 的 15 亿,差一百多倍);
  8. 一个基座模型撑起大量应用,所以你不必自己训;
  9. 书第一章讲的家谱与内部改进,后面一次都用不上,而且已经过期,可以整章跳过;
  10. 整件事是八步:定目标 → 设计功能 → 搭架构 → 搭数据库 → 设计提示词 → 找坏例子改提示词 → 做界面 → 上线后接着改;
  11. 这八步的零件有人备好了,那套零件叫 LangChain——全书凡说「框架」都是指它;它 2024 年 1 月才出第一个稳定版,所以书里的函数名很快就被标了「将被移除」。

10. 原文地图

主题原书章原文位置
「什么是南瓜书」的编造答案构建检索问答链text/06-p101-120.txt:211(搜「南瓜书是指」)
南瓜书到底是什么数据处理text/04-p61-80.txt:749(搜「较难理解的公式加以解析」)
幻觉的定义Prompt Engineeringtext/04-p61-80.txt:456(搜「似是而非的细节」)
检索增强生成的定义检索增强生成 RAG 简介text/01-p1-20.txt:438(搜「Retrieval-Augmented Generation」)
与微调的对照表检索增强生成 RAG 简介text/01-p1-20.txt:471(搜「通过在特定数据集上进一步训练」)
不需要显卡、不要求算法基础项目简介text/01-p1-20.txt:57(搜「不需要 GPU 环境」) · text/01-p1-20.txt:52(搜「算法基础没有任何要求」)
那段提示词模板构建检索问答链text/06-p101-120.txt:140(搜「不要试图编」)
一个通用大模型 + 若干业务提示词开发 LLM 应用的整体流程text/02-p21-40.txt:63(搜「若干业务 Prompt 来解决」)
大模型开发是个工程问题开发 LLM 应用的整体流程text/02-p21-40.txt:54(搜「大模型开发却更多是一个工程问题」)
GPT-3 与 GPT-2 的规模对照大型语言模型(LLM)理论简介text/01-p1-20.txt:198(搜「1750 亿 参数的 GPT-3」)
涌现能力大型语言模型(LLM)理论简介text/01-p1-20.txt:387(搜「涌现能力是一种令人惊讶的能力」)
基座模型大型语言模型(LLM)理论简介text/01-p1-20.txt:399(搜「基座模型(foundation model)」)
开发八步开发 LLM 应用的整体流程text/02-p21-40.txt:78(搜「确定目标」) · text/02-p21-40.txt:99(搜「前后端搭建」)
三部分的划分与第二部分目录项目简介text/01-p1-20.txt:122(搜「进阶 RAG 技巧」) · text/01-p1-20.txt:25(搜「部分正在创作中」)
框架是什么、它的来历LangChaintext/01-p1-20.txt:513(搜「大量的定制开发工作」) · text/01-p1-20.txt:515(搜「其中一个备受关注的项目」) · text/01-p1-20.txt:516(搜「LangChain 框架是一个开源工具」)
六类核心零件LangChaintext/02-p21-40.txt:4(搜「6 个核心组件组成」) · text/02-p21-40.txt:10(搜「回调」)
稳定版 v0.1.0 与近 700 家接入LangChaintext/02-p21-40.txt:13(搜「2024 年 1 月 9 日」) · text/02-p21-40.txt:23(搜「近 700 个集成」)
生态五件LangChaintext/02-p21-40.txt:35(搜「LangChain Community」) · text/02-p21-40.txt:45(搜「LangSmith」)

Footnotes

  1. 出处:「构建检索问答链」第 211 段(text/06-p101-120.txt:211,搜「南瓜书是指」)。这是原书 4.2 节里「大模型自己回答的效果」那一组对照实验的输出,用的是 gpt-3.5-turbo、温度设为 0。同一组里它对「王阳明是谁」倒是答对了(text/06-p101-120.txt:220,搜「王阳明(1472年-1529年)」)——书由此得出的结论是:它对近几年的知识以及非常识性的专业问题回答得并不好(text/06-p101-120.txt:225,搜「加上我们的本地知识」)。

  2. 出处:「数据处理」第 749 段(text/04-p61-80.txt:749,搜「较难理解的公式加以解析」)。这段话是南瓜书自己的前言,它在原书里是作为「被读进知识库的那份 PDF」出现的。编委会与版权声明见同页(text/04-p61-80.txt:777,搜「archwalker」)。

  3. 出处:「Prompt Engineering」第 453 与 456 段(text/04-p61-80.txt:453,搜「虚假信息的风险」;text/04-p61-80.txt:456,搜「似是而非的细节」)。原文给「幻觉」下的定语是「语言模型的一大缺陷」,并说它事关应用的可靠性与安全性。 2

  4. 出处:「检索增强生成 RAG 简介」第 471 段(text/01-p1-20.txt:471,搜「通过在特定数据集上进一步训练」),对照表在第 474 至 494 段。表里一共九行,本章只摘了最影响选择的五行;没摘的四行讲的是「外部知识」「模型定制」「伦理隐私」和知识更新成本的细分说法。书注明这张表转引自两篇综述,不是它自己做的实验。 2

  5. 出处:「检索增强生成 RAG 简介」第 438 段(text/01-p1-20.txt:438,搜「Retrieval-Augmented Generation」)。原文把它称作「一种新的模型架构」——这个说法要小心:它并不是一种新的网络结构,而是一套外部流程,模型本身一个数都没改。本组拆解一律按「一套流程」讲。

  6. 出处:「项目简介」第 52 段(text/01-p1-20.txt:52,搜「算法基础没有任何要求」)。原文的要求只有一条:掌握基本的 Python 写法、具备初级开发技能。

  7. 出处:「项目简介」第 57 段(text/01-p1-20.txt:57,搜「不需要 GPU 环境」)。书给的替代方案是免费领一台云服务器(text/02-p21-40.txt:199,搜「云服务器 ECS」)。补充(不在书里,来自通用知识):GPU 的全称是 graphics processing unit,原本是画图形用的芯片,因为擅长同时做成千上万次同类计算而被拿来训练模型。

  8. 出处:「构建检索问答链」第 140 至 145 段(text/06-p101-120.txt:140,搜「不要试图编」)。这段模板在原书里出现过五次以上,后面几章一直拿它当基准版本改。本组拆解第 10 章会把它改成 v2、v3、v4 三个版本。

  9. 出处:「开发 LLM 应用的整体流程」第 63 段(text/02-p21-40.txt:63,搜「若干业务 Prompt 来解决」)。原文对照的另一半在第 61 段:传统做法要「将非常复杂的业务逻辑依次拆解,对于每一个子业务构造训练数据与验证数据,对于每一个子业务训练优化模型」。

  10. 出处:「开发 LLM 应用的整体流程」第 54 段(text/02-p21-40.txt:54,搜「大模型开发却更多是一个工程问题」)。原文紧接着说:我们并不需要深研大模型内部原理,而更需要掌握使用大模型的实践技巧。

  11. 出处:「大型语言模型(LLM)理论简介」第 198 至 199 段(text/01-p1-20.txt:198,搜「1750 亿 参数的 GPT-3」)。原文同时给了另外两个对照:5400 亿参数的 PaLM、3.3 亿参数的 BERT。原文强调这几个模型「使用相似的架构和预训练任务」——变的只有规模,这正是「涌现」这个说法能成立的前提。

  12. 出处:「大型语言模型(LLM)理论简介」第 200 段(text/01-p1-20.txt:200,搜「学习上下文来解决少样本任务」)。这件事在原书里有一个名字,本组拆解把它挪到第 03 章讲「给它两个例子」时才挂出来——在那里它才真的被用到。

  13. 出处:「大型语言模型(LLM)理论简介」第 387 至 389 段(text/01-p1-20.txt:387,搜「涌现能力是一种令人惊讶的能力」)。原文列了三种典型的涌现能力:在提问里看例子就会做、按自然语言指令做没见过的任务、以及分步推理。

  14. 出处:「大型语言模型(LLM)理论简介」第 399 段(text/01-p1-20.txt:399,搜「基座模型(foundation model)」)。原文说这是 2021 年斯坦福大学等多所高校的研究人员提出的概念,并称它为「一种全新的 AI 技术范式」。

  15. 出处:「开发 LLM 应用的整体流程」第 78 至 100 段(text/02-p21-40.txt:78,搜「确定目标」;末步见 text/02-p21-40.txt:99,搜「前后端搭建」)。原文八步的名字依次是:确定目标、设计功能、搭建整体架构、搭建数据库、Prompt Engineering、验证迭代、前后端搭建、体验优化。那张图右侧的章号对应关系是本组拆解排的,不是书排的。

  16. 出处:「LangChain」第 511 至 518 段(那句「要创建完整的应用程序仍然需要大量定制开发」见 text/01-p1-20.txt:513,搜「大量的定制开发工作」;「其中一个备受关注的项目就是 LangChain 框架」见 text/01-p1-20.txt:515,搜「其中一个备受关注的项目」;定义见 text/01-p1-20.txt:516,搜「LangChain 框架是一个开源工具」)。原文对它的定位是「为各种大型语言模型应用提供通用接口,从而简化应用程序的开发流程」。「换一家模型只要改一个名字」这句效果描述是我们的——它是本组拆解从后面第 02、07 两章那几段代码归纳的,书在这一章没有这么说。 2

  17. 出处:「LangChain」第 1 至 11 段(text/02-p21-40.txt:4,搜「6 个核心组件组成」;最后一类见 text/02-p21-40.txt:10,搜「回调」)。书给这六类起的名字依次是:模型输入/输出、数据连接、链、记忆、代理、回调——本组拆解在这里只用大白话,名字留到第 07(链)、08(记忆)、10(代理)章各自用到时再挂;至于第一类和最后一类,前者在第 02 章就是那个统一的 get_completion,后者这门课一次都没用。原文对「代理」和「回调」给的说明是同一句话(「扩展模型的推理能力。用于复杂的应用的调用序列」),这是书里的复制粘贴疏漏。

  18. 出处:「LangChain」第 12 至 33 段(text/02-p21-40.txt:13,搜「2024 年 1 月 9 日」;近 700 家见 text/02-p21-40.txt:23,搜「近 700 个集成」)。原文在这一节还列了九条 v0.1.0 的卖点(兼容性、架构改进、可观察性、广泛集成、可组合性、流式处理、输出解析、检索能力、工具与智能体),这门课后面一条都没有展开「刚满月的版本」这句时间对照是我们算的:v0.1.0 发布于 2024-01-09,而这本书内容里最晚的时间点是 2024 年 3 月(见脚注 20)。 2

  19. 出处:「LangChain」第 34 至 47 段(text/02-p21-40.txt:35,搜「LangChain Community」;末件见 text/02-p21-40.txt:45,搜「LangSmith」)。「这门课只用到前两件」是我们逐章核过的结论:后面十二章里没有一处出现 CLI、LangServe 或 LangSmith。

  20. 出处:「项目简介」第 18 段(text/01-p1-20.txt:18,搜「V1 版本的简化版」)。三部分的名字依次是 LLM 开发入门、LLM 开发技巧、LLM 应用实例。

  21. 出处:「项目简介」第 122 至 150 段(text/01-p1-20.txt:122,搜「进阶 RAG 技巧」;末项见 text/01-p1-20.txt:150,搜「程化评估」)。目录七大类是:背景、数据处理、索引层面、检索阶段、生成阶段、增强阶段、RAG 工程化评估。

  22. 出处:「个人知识库助手项目」第 170 段起(text/08-p141-160.txt:170,搜「知识库助」)与「天机」第 198 段起(text/09-p161-180.txt:198,搜「情世故」)。两篇的负责人在目录里都署了名(text/01-p1-20.txt:154,搜「徐虎」)。

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

  24. 出处:「大型语言模型(LLM)理论简介」第 278 段(text/01-p1-20.txt:278,搜「2024 年 3 月 4 日」)。同一章里其他几个最晚的时间点分别是 2024 年 2 月 1 日(Gemini)、2024 年 2 月 5 日(Qwen1.5)、2024 年 1 月 16 日(ChatGLM4),都在 2024 年一季度内。