跳到主要内容

这一版缺了什么、过时了什么 — 以及接下来去哪儿补

这一章讲三件事: 这一版书自己承认缺的部分有哪些; 书里的示例代码到底错在哪(逐条列出); 以及出版这一年多里,哪些用法已经不该照抄了。 这一章是对账,不是新知识。 前六章是「书讲了什么」,这一章是「书没讲什么、讲错了什么」。

1. 先说清楚我们在对什么账

第 01 章开头说过:我们手上这一版是 2025 年 3 月的抢先版, 书里自己在每章开头就写着:抢先版给你的是作者边写边给的、未经编辑的原始内容, 而且配套代码仓库还没开放1

所以这一章列出来的问题,大部分不是「作者水平不行」,是「这份稿子还没走完编辑流程」。 但对读者来说结果是一样的:照抄会出事。

2. 顶层全景:往下四张表,各管什么

先说清这一章跟前六章是什么关系,不然你会以为自己看重了。

前六章在各自的位置上,只在遇到的地方点一句「这里有个坑」; 把同一类坑收在一起、逐条写清「错在哪、今天该换成什么」的那份清单,只有这一章有一份。 出现分歧时,以这一章为准

这一章往下走,一共四张表,各管一件事:

第 3 节 · 书自己承认没写的 ──── 十二处「详见后文」,后文是空的
第 5 节 · 书里写错的 ──── 九处代码错误【正本】
第 6 节 · 书写完之后变了的 ──── 四处过时用法【正本】
第 7 节 · 书之后新出现的 ──── 三条新做法(前六章各提过一次,这里汇总)

图说:头两张是书自己的毛病(欠着的、写错的),后两张是时间造成的(变了的、新出的)。
中间还夹着第 4 节——那是书连提都没提的两块,没法列表,只能整节讲。

3. 书自己指向的空洞:十二处「详见后文」

抢先版用一个占位符 [Link to Come] 标记「这里本该有个链接指向后面某一章」。 我们全文数了一遍:十二处。 它们指向的章节,在我们这一版里全是空的。

下面十二行就是逐处清单,每一行给出原文位置,可以自己跳回去核。 按去向分组排,组内按原文出现顺序:

#指向什么出现在哪(可回核)有多要命
1怎么把文字变成一串数(嵌入)第 2 章开篇第一段:text/05-ch02-chapter-2-data-preparation.txt:13(搜「for how to create these embeddings」)2最要命。 这是整条链的地基,前两章所有努力都是为它服务的
2同上讲假设性问题那一节:text/05-ch02-chapter-2-data-preparation.txt:285(搜「Generate embeddings for each hypothetical question」)同上
3同上讲按意思切分那一节:text/05-ch02-chapter-2-data-preparation.txt:565(搜「Generate embeddings for each small text piece」)同上
4怎么算两段文字像不像(距离)第 2 章开篇同一段的后半句:text/05-ch02-chapter-2-data-preparation.txt:13(搜「by calculating the distance between them」)3同上。 没有它,「相似」这个词就是空的
5同上按意思切分的第三步:text/05-ch02-chapter-2-data-preparation.txt:567(搜「Measure the semantic similarity between consecutive text pieces」)同上
6同上「距离越小越相似」那个提示框:text/05-ch02-chapter-2-data-preparation.txt:577(搜「for details on calculating these distances」)同上
7怎么生成嵌入、存进 PostgreSQL、并算距离讲数据库那一节的开场:text/04-ch01-chapter-1-loading-data.txt:335(搜「store them in PostgreSQL, and calculate distance metrics」)4中等——是上面两条的一个具体落地
8怎么在 PostgreSQL 里存嵌入、做相似度搜索同一节的「另见」:text/04-ch01-chapter-1-loading-data.txt:341(搜「how to store embeddings in PostgreSQL and perform similarity searches」)中等
9怎么用 PostgreSQL 给问答应用当数据库同上5:text/04-ch01-chapter-1-loading-data.txt:343(搜「will use PostgreSQL as an app database for RAG web apps」)
10会自己反复琢磨、自己调整打法的 RAG讲图片摘要那一节:text/04-ch01-chapter-1-loading-data.txt:621(搜「The most advanced use is the agentic RAG concept」)6中等——只有一句话,连它具体怎么转都没交代
11同上讲表格摘要那一节,几乎是同一句话:text/04-ch01-chapter-1-loading-data.txt:717(搜「The most advanced application is the agentic RAG concept」)同上
12用 CLIP 做图文混合检索讲图片嵌入的提示框:text/04-ch01-chapter-1-loading-data.txt:627(搜「explains how to use CLIP for a multimodal RAG application」)7低——是第 04 章那两条路里的路一

这十二行合计正好覆盖十二处占位符。 注意第 1 行和第 4 行落在同一段原文上—— 那一段里连着放了两个占位符,一个指向「嵌入怎么算」,一个指向「距离怎么算」。

判断(我们的,不是书里的): 前两条缺失的性质和其他不一样。 其余几条是「还有更多做法没讲」,而前两条是「这套系统凭什么成立没讲」。 我们在第 01 章第 6 节把这两块补到了「读得懂后面六章」的程度, 但那是够用,不是够做——真要自己实现一套,这两块得另找材料。 如果错,会错在: 如果你只是要用现成的工具包搭一套(而不是自己实现嵌入和检索), 那这两块知不知道都不影响你把系统跑起来。影响的是出问题时你能不能判断问题出在哪。

4. 书里从头到尾没有的两块

上一节是「书说了会讲但没讲」,这一节是**「书连提都没提」**。

缺口一:检索本身

这本书讲完了「怎么把东西存进去」,然后就停了。 存进去之后怎么找出来——这一整块在两章里是空白。

具体缺什么:

  • 先用关键词粗筛再按意思细排(两种搜法各有各的强项,合起来更好);
  • 搜回来之后再评一次分、重新排先后(行话叫重排);
  • 一个问题拆成几个问法分头去搜;
  • 该取回几块——这是每个人都要设的一个数,书里一次都没提。

缺口二:怎么知道自己做得好不好

这是这本书最大的缺口,而且贯穿始终。

回头数一遍前六章:书里给了十九个配方、几十条建议, 没有任何一条配了效果数据。 语义切分那一节是唯一一次实测,而它是作者自选的单个例子。

没有评测,前面所有的选择都无从判断:

换一种切法 ── 变好了吗?不知道
加上元数据过滤 ── 变好了吗?不知道
加上假设性问题 ── 变好了吗?不知道
块大小从 1000 调到 2000 ── 变好了吗?不知道

图说:这不是吹毛求疵。上面每一条都是需要花钱花时间的改动,而书里没给任何验收办法。

这本书之后已经有专门做这件事的工作。 2023 年 9 月有一篇论文提出了一组指标 (指标就是拿来衡量好坏的那几把尺子,每一把量一个方面、各出一个分数), 而且不需要人先把标准答案一条条写出来

它分三个方面量:检索这一步有没有找到相关且集中的内容; 模型有没有忠实地用上找回来的内容;以及最终答案本身的质量8

判断(我们的,不是书里的): 缺评测这件事,比缺检索严重得多。 缺检索只是「少讲了一块内容」;缺评测是「让读者没法验证前面每一块内容」。 配方书的体裁天然放大了这个问题——十九个「Solution」读下来, 容易产生「这些坑都有现成解法」的错觉,而实际上你无法确认哪一招在你的数据上真的有用。 建议的最小动作:先攒三十个真实问题和它们该命中的块,再动任何一处流水线。 如果错,会错在: 如果你做的只是个小范围、低风险的内部工具, 那「感觉变好了」可能就够了,建一套评测反而是过度投入。 判据是:这套系统答错一次的代价有多大。

5. 代码错误全表

这一节是这一章最实用的部分,也是这份清单的正本。 第 02、04、05 三章在各自的位置上点过其中几条(那里只点名),逐条的说法以这张表为准。

我们逐段核过两章里的全部示例代码,下面这些不是风格问题,是抄进去就跑不通或者行为不对

#在哪一段错在哪
1读 Word变量先被塞进一段空文字,然后对它调用「往列表里加一项」的方法——装文字的那种值没有这个方法,直接报错9
2读 PDF变量叫 file_path,值却是个 .docx 结尾的 Word 文件路径,然后交给 PDF 读取库10
3行转文本的模板模板里有多余的引号,而且最后一句是断的——"……他来自。" 后面什么都没有11
4连数据库正文说结果存进 results_df,代码里那个变量叫 result12
5OCR 读图Image.open(file_path=...)——这个「打开图片」的动作要它认的第一项不叫 file_path,会报错13
6OCR 读 PDF变量叫 file_path,里面装的是个 .png,却交给了「把 PDF 转成图片」的那段代码14
7定长切分正文说分隔符是空格「这样单词不会被切断」,代码里填的是一对空引号——单词真的会被切断15
8认格式切分给 Markdown 的切分器交待了「块大小」和「重叠」,而这个切分器根本不认这两项16
9视频处理用了 moviepy.editorclip.subclip——这两个在该库的 2.0 版本里一个被删了、一个改了名17

还有几处不影响运行、但说明这份稿子没人通读过的痕迹:

  • Tesseract 拼成了 Tesseracst18;
  • 把「本书的仓库」写成了 ook's repo(掉了首字母)19;
  • 一个链接的方括号跑到了单词中间20;
  • 讲多媒体 PDF 时冒出一个 GPT-4V,而全书别处一律写 GPT-4o21;
  • 讲音频时把「语音转文字」写成了「文字转语音」22;
  • 一句「目前还没有成熟的库做这件事」里的 yet 被打成了 yes23

判断(我们的,不是书里的): 这九条错误里,第 1、5、8 三条会当场报错, 你一跑就知道;第 2、6、7 三条更危险——它们不报错,只是行为不对。 第 7 条尤其阴险:切分器照样返回一堆块,你不会发现单词被从中间劈开了, 直到检索质量莫名其妙地差。 所以这本书的代码不能当作可运行的起点,只能当作可读的伪代码。 如果错,会错在: 如果完整版出版时代码经过了编辑和实测,那这条评价只对这一版抢先版成立。 判据是:配套代码仓库开了没有、跑不跑得通。

6. 已被时间冲掉的用法

这张表是「今天该换成什么」的正本。 第 02 章第 8 节、第 04 章第 10 节、第 05 章第 12 节各点过其中一两条,那里只点名、不给替代做法。

书里怎么用今天怎么办依据
PyPDF2 读 PDFpypdf PyPDF2 的 3.0.X 是最后一版,停在 2022 年 12 月 31 日官方页面24
moviepy.editor 处理视频直接 from moviepy import ... 这个命名空间在 2.0 里被整个删掉了;截片段的方法也从 subclip 改名叫 subclipped官方升级说明17
「OpenAI 的文本嵌入模型(Ada-003)」没有这个模型。 第三代叫 text-embedding-3-small / text-embedding-3-large,上一代叫 text-embedding-ada-002官方文档25
langchain_experimental 取语义切分工具别再用了。 这个包已于 2026 年 6 月 24 日封存(转为只读)、停止维护包页面26
GPT-4o / Claude 3.5 Sonnet / Gemini 1.5看角色,别看型号。 这三个在今天都不是各家的最新版本

7. 这一年多里出现的三条新做法

前面几章各自提过一次,这里汇总。它们不推翻这本书,它们补在书的空隙上。

新做法补的是哪一块一句话在哪一章展开
上下文检索第 06 章「让块自解释」入库前让模型给每块生成一段专属说明拼在前面,检索失败率下降 35%~67%第 06 章第 4 节27
后期分块第 05 章「块的嵌入怎么算」先把整篇长文过一遍嵌入模型,再在模型输出那一层切,块的嵌入里就带着全页的上下文第 05 章第 12 节28
专门的文档解析器第 02 章「PDF 怎么读」用专门训练的模型分析版面、识别表格结构,比只抽文字强得多第 02 章第 8 节29

注意这三条改的位置各不相同: 一条改块的内容,一条改块的嵌入怎么算,一条改文档的读法。 它们可以同时用。

8. 接下来读什么

书里自己给了一串延伸阅读,我们把它们和自己核过的一手来源合成一张表。 凡是我们打开原文核对过的,给出网址;书里提到但我们没核对的,只转述书里的说法。

书里指的路(我们没有逐一核对)

  • 各家模型厂商和工具包的博客——书里说更进阶的加载流水线要去那儿找, 并点名了两篇讲怎么为 RAG 解析 PDF 的文章30;
  • Greg Kamradt 的切分教程,书里说它讲了切分的五个层次31;
  • LlamaIndex 的语义切分器,作为 LangChain 的替代32;
  • LangChain 的官方文档,查各类切分器的清单33;
  • 另一篇讲让模型来切分的博客文章34

我们核对过的一手来源

(下表第一行那个英文标题里的 NLP 指的是自然语言处理——研究怎么让机器处理人类语言的 那门学科。这套文档正文里不用这个词,列在这里只因为它出现在论文标题上。)

主题来源
RAG 这个名字的出处《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》(2020-05-22)https://arxiv.org/abs/2005.11401(查阅于 2026-08-25)
把表格行改写成句子《TabLLM》(2022-10-19)https://arxiv.org/abs/2210.10723(查阅于 2026-08-25)
语音转文字《Robust Speech Recognition via Large-Scale Weak Supervision》(2022-12-06)https://arxiv.org/abs/2212.04356(查阅于 2026-08-25)
命题式检索单位《Dense X Retrieval: What Retrieval Granularity Should We Use?》(2023-12-11)https://arxiv.org/abs/2312.06648(查阅于 2026-08-25)
给问题编假答案再检索《Precise Zero-Shot Dense Retrieval without Relevance Labels》(2022-12-20)https://arxiv.org/abs/2212.10496(查阅于 2026-08-25)
给每块补上下文再入库Anthropic「Introducing Contextual Retrieval」(2024-09-19)https://www.anthropic.com/news/contextual-retrieval(查阅于 2026-08-25)
先算嵌入再切块《Late Chunking》(2024-09-07)https://arxiv.org/abs/2409.04701(查阅于 2026-08-25)
文档解析《Docling Technical Report》(2024-08-19)https://arxiv.org/abs/2408.09869(查阅于 2026-08-25)
怎么给 RAG 系统打分《Ragas: Automated Evaluation of Retrieval Augmented Generation》(2023-09-26)https://arxiv.org/abs/2309.15217(查阅于 2026-08-25)

9. 可带走的

  1. 这一版是没编辑过的初稿,大部分问题是流程问题不是水平问题——但照抄一样会出事;
  2. 十二处「详见后文」全是空的;其中两处指向的是整条链的地基(嵌入、相似度);
  3. 书里彻底没有的两块是:检索本身,和怎么评测;
  4. 缺评测比缺检索严重——它让你无法验证前面每一条建议在你的数据上有没有用;
  5. 动任何一处流水线之前,先攒三十个真实问题和它们该命中的块;
  6. 九处代码错误里,三条会当场报错,三条不报错但行为不对——后者更危险;
  7. 最阴险的一条:定长切分的分隔符,正文和代码说的不是一回事,单词会被劈开而你不会发现;
  8. 书里的代码只能当伪代码读,不能当起点用;
  9. 四处已经过时的用法:PyPDF2 停更、moviepy.editor 被删、Ada-003 不存在、 langchain_experimental 已封存;
  10. 模型型号一律看角色不看版本;
  11. 这一年多补上来的三条新做法改的位置各不相同:块的内容、块的嵌入怎么算、文档的读法—— 可以同时用

10. 原文地图

主题原书章原文位置
抢先版声明、仓库未开放Chapter 1. Loading Datatext/04-ch01-chapter-1-loading-data.txt:7(搜「raw and unedited content」) · text/04-ch01-chapter-1-loading-data.txt:9(搜「GitHub repo will be made active later on」)
指向嵌入那一章的占位符Chapter 2. Data Preparationtext/05-ch02-chapter-2-data-preparation.txt:13(搜「see [Link to Come] for how to create these embeddings」) · text/05-ch02-chapter-2-data-preparation.txt:285(搜「Generate embeddings: Generate embeddings for each hypothetical question」)
指向相似度那一章的占位符Chapter 2. Data Preparationtext/05-ch02-chapter-2-data-preparation.txt:567(搜「Measure the semantic similarity between consecutive text pieces」) · text/05-ch02-chapter-2-data-preparation.txt:577(搜「A smaller distance means higher similarity」)
指向数据库存嵌入的占位符Chapter 1. Loading Datatext/04-ch01-chapter-1-loading-data.txt:341(搜「how to store embeddings in PostgreSQL and perform similarity searches」) · text/04-ch01-chapter-1-loading-data.txt:343(搜「will use PostgreSQL as an app database for RAG web apps」)
指向「会自己调整打法的 RAG」与 CLIPChapter 1. Loading Datatext/04-ch01-chapter-1-loading-data.txt:621(搜「The most advanced use is the agentic RAG concept」) · text/04-ch01-chapter-1-loading-data.txt:627(搜「Contrastive Language-Image Pre-training」)
九处代码错误Chapter 1 与 Chapter 2text/04-ch01-chapter-1-loading-data.txt:88(搜「text.append(paragraph.text)」) · text/04-ch01-chapter-1-loading-data.txt:155(搜「pdf_files/2023_Jan_7_Feature_Engineering_Techniques.docx」) · text/04-ch01-chapter-1-loading-data.txt:263(搜「and he is from」) · text/04-ch01-chapter-1-loading-data.txt:329(搜「the retrieved data will be stored in the data frame results_df」) · text/04-ch01-chapter-1-loading-data.txt:426(搜「Image.open(file_path」) · text/04-ch01-chapter-1-loading-data.txt:440(搜「images/Most_Used_Feature_Engineering_Techniques.png」) · text/05-ch02-chapter-2-data-preparation.txt:400(搜「separator=」) · text/05-ch02-chapter-2-data-preparation.txt:531(搜「MarkdownHeaderTextSplitter(chunk_size=500」) · text/04-ch01-chapter-1-loading-data.txt:860(搜「from moviepy.editor import VideoFileClip」)
未校对的痕迹Chapter 1 与 Chapter 2text/04-ch01-chapter-1-loading-data.txt:428(搜「Tesseracst」) · text/04-ch01-chapter-1-loading-data.txt:416(搜「in the ook」) · text/04-ch01-chapter-1-loading-data.txt:390(搜「guide]from OpenAI」) · text/04-ch01-chapter-1-loading-data.txt:735(搜「GPT-4V」) · text/04-ch01-chapter-1-loading-data.txt:359(搜「text-to-speech models」) · text/05-ch02-chapter-2-data-preparation.txt:640(搜「There isn」)
已过时的库与模型名Chapter 1 与 Chapter 2text/04-ch01-chapter-1-loading-data.txt:133(搜「Use the PyPDF2 library to load PDFs」) · text/05-ch02-chapter-2-data-preparation.txt:581(搜「Text Embedding model (Ada-003)」) · text/05-ch02-chapter-2-data-preparation.txt:583(搜「langchain_experimental package」)
书里给的延伸阅读Chapter 1 与 Chapter 2text/04-ch01-chapter-1-loading-data.txt:799(搜「For more advanced loading pipelines for RAG systems, check out the blogs」) · text/05-ch02-chapter-2-data-preparation.txt:626(搜「check out Greg Kamradt」) · text/05-ch02-chapter-2-data-preparation.txt:628(搜「the Llama Index semantic chunker」) · text/05-ch02-chapter-2-data-preparation.txt:729(搜「Thuwarakesh Murallie」)

Footnotes

  1. 出处:「Chapter 1. Loading Data」第 7 段(text/04-ch01-chapter-1-loading-data.txt:7,搜「raw and unedited content」)与第 9 段(text/04-ch01-chapter-1-loading-data.txt:9,搜「GitHub repo will be made active later on」)。

  2. 出处:「Chapter 2. Data Preparation」第 13 段(text/05-ch02-chapter-2-data-preparation.txt:13,搜「see [Link to Come] for how to create these embeddings」)。另一处见第 285 段(text/05-ch02-chapter-2-data-preparation.txt:285,搜「Generate embeddings: Generate embeddings for each hypothetical question」)与第 565 段(text/05-ch02-chapter-2-data-preparation.txt:565,搜「Generate embeddings: Generate embeddings for each small text piece」)。

  3. 出处:「Chapter 2. Data Preparation」第 567 段(text/05-ch02-chapter-2-data-preparation.txt:567,搜「Measure the semantic similarity between consecutive text pieces」)与第 577 段(text/05-ch02-chapter-2-data-preparation.txt:577,搜「A smaller distance means higher similarity」)。两处末尾都跟着占位符。

  4. 出处:「Chapter 1. Loading Data」第 341 段(text/04-ch01-chapter-1-loading-data.txt:341,搜「how to store embeddings in PostgreSQL and perform similarity searches」)。

  5. 出处:「Chapter 1. Loading Data」第 343 段(text/04-ch01-chapter-1-loading-data.txt:343,搜「will use PostgreSQL as an app database for RAG web apps」)。

  6. 出处:「Chapter 1. Loading Data」第 621 段(text/04-ch01-chapter-1-loading-data.txt:621,搜「The most advanced use is the agentic RAG concept」)。几乎同样的句子在讲表格摘要的那一节又出现了一次,见第 717 段(text/04-ch01-chapter-1-loading-data.txt:717,搜「The most advanced application is the agentic RAG concept」)。两处都只说了「让系统像人解决问题那样反复琢磨、一轮轮调整打法」这一句,然后跟一个 [Link to Come]

  7. 出处:「Chapter 1. Loading Data」第 627 段(text/04-ch01-chapter-1-loading-data.txt:627,搜「Contrastive Language-Image Pre-training」)。

  8. 补充(不在书里):这套指标叫 Ragas,论文首次提交于 2023 年 9 月 26 日,作者为 Shahul Es、Jithin James、Luis Espinosa-Anke、Steven Schockaert;它提出一组不依赖人工标注标准答案的指标,分别评估检索出的上下文是否相关且集中、模型是否忠实地利用了检索到的段落、以及最终生成的质量。来源:《Ragas: Automated Evaluation of Retrieval Augmented Generation》https://arxiv.org/abs/2309.15217(查阅于 2026-08-25)。

  9. 出处:「Chapter 1. Loading Data」第 88 段(text/04-ch01-chapter-1-loading-data.txt:88,搜「text.append(paragraph.text)」)。

  10. 出处:「Chapter 1. Loading Data」第 155 段(text/04-ch01-chapter-1-loading-data.txt:155,搜「pdf_files/2023_Jan_7_Feature_Engineering_Techniques.docx」)。

  11. 出处:「Chapter 1. Loading Data」第 263 段(text/04-ch01-chapter-1-loading-data.txt:263,搜「and he is from」)。这一行是那个「把每一行改写成一句话」的模板的最后一句,写到一半就断了;上面几行里还夹着多余的引号。

  12. 出处:「Chapter 1. Loading Data」第 329 段(text/04-ch01-chapter-1-loading-data.txt:329,搜「the retrieved data will be stored in the data frame results_df」)。

  13. 出处:「Chapter 1. Loading Data」第 426 段(text/04-ch01-chapter-1-loading-data.txt:426,搜「Image.open(file_path」)。

  14. 出处:「Chapter 1. Loading Data」第 440 段(text/04-ch01-chapter-1-loading-data.txt:440,搜「images/Most_Used_Feature_Engineering_Techniques.png」)。

  15. 出处:正文说法见「Chapter 2. Data Preparation」第 383 段(text/05-ch02-chapter-2-data-preparation.txt:383,搜「uses a space (' ') as the separator」),代码见第 400 段(text/05-ch02-chapter-2-data-preparation.txt:400,搜「separator=」)。顺带一提,同一段代码最后一行调用了创建文档的方法却没有把结果赋给任何变量(text/05-ch02-chapter-2-data-preparation.txt:404,搜「text_splitter.create_documents」)。

  16. 出处:「Chapter 2. Data Preparation」第 531 段(text/05-ch02-chapter-2-data-preparation.txt:531,搜「MarkdownHeaderTextSplitter(chunk_size=500」)。补充(不在书里,来自通用知识):这个切分器要你交待的是「按哪几级标题切」,而不是块大小与重叠。

  17. 出处:书里的用法见「Chapter 1. Loading Data」第 860 段(text/04-ch01-chapter-1-loading-data.txt:860,搜「from moviepy.editor import VideoFileClip」)与第 899 段(text/04-ch01-chapter-1-loading-data.txt:899,搜「clip.subclip」)。补充(不在书里):官方升级说明写明「到了 2.0 版本,moviepy.editor 这个命名空间已经不复存在」。来源:MoviePy「Updating from v1.X to v2.X」https://zulko.github.io/moviepy/getting_started/updating_to_v2.html(查阅于 2026-08-25);新版文档里截取片段的方法叫 subclipped,来源:MoviePy「MoviePy in 10 Minutes」https://zulko.github.io/moviepy/getting_started/moviepy_10_minutes.html(查阅于 2026-08-25)。 2

  18. 出处:「Chapter 1. Loading Data」第 428 段(text/04-ch01-chapter-1-loading-data.txt:428,搜「Tesseracst」)。这是代码注释里的拼写错误,不影响运行。

  19. 出处:「Chapter 1. Loading Data」第 416 段(text/04-ch01-chapter-1-loading-data.txt:416,搜「in the ook」)。原本应是 the book's repo。

  20. 出处:「Chapter 1. Loading Data」第 390 段(text/04-ch01-chapter-1-loading-data.txt:390,搜「guide]from OpenAI」)。方括号跑进了单词中间,说明这里的链接没有排好。

  21. 出处:「Chapter 1. Loading Data」第 735 段(text/04-ch01-chapter-1-loading-data.txt:735,搜「GPT-4V」)。

  22. 出处:「Chapter 1. Loading Data」第 359 段(text/04-ch01-chapter-1-loading-data.txt:359,搜「text-to-speech models」)。上下文明确在讲把音频转成文字。

  23. 出处:「Chapter 2. Data Preparation」第 640 段(text/05-ch02-chapter-2-data-preparation.txt:640,搜「There isn」)。原句是「目前还没有成熟的库做这件事」,yet 被打成了 yes

  24. 补充(不在书里):PyPDF2 官方页面写明「PyPDF2==3.0.X 将是 PyPDF2 的最后一个版本,开发将以 pypdf==3.1.0 继续」,最后一版 3.0.1 发布于 2022 年 12 月 31 日。来源:PyPI「PyPDF2」https://pypi.org/project/PyPDF2/(查阅于 2026-08-25)。书里用它的地方见「Chapter 1. Loading Data」第 133 段(text/04-ch01-chapter-1-loading-data.txt:133,搜「Use the PyPDF2 library to load PDFs」)。

  25. 补充(不在书里):OpenAI 官方文档列出的嵌入模型是 text-embedding-3-smalltext-embedding-3-large 与上一代的 text-embedding-ada-002,没有任何叫 ada-003 的模型。来源:OpenAI「Embeddings」https://developers.openai.com/api/docs/guides/embeddings(查阅于 2026-08-25)。书里的写法见「Chapter 2. Data Preparation」第 581 段(text/05-ch02-chapter-2-data-preparation.txt:581,搜「Text Embedding model (Ada-003)」)。

  26. 补充(不在书里):langchain-experimental 的包页面写明该包中部分代码「如果没有部署在沙箱环境里可能是危险的」,项目正在停止支持;最新版本 0.4.2 发布于 2026 年 5 月 22 日,项目已于 2026 年 6 月 24 日封存(仓库转为只读,不再接受任何改动)。来源:PyPI「langchain-experimental」https://pypi.org/project/langchain-experimental/(查阅于 2026-08-25)。书里取用它的地方见「Chapter 2. Data Preparation」第 583 段(text/05-ch02-chapter-2-data-preparation.txt:583,搜「langchain_experimental package」)。

  27. 补充(不在书里):Anthropic 于 2024 年 9 月 19 日公布的 Contextual Retrieval,公布的评测结果是检索失败率从 5.7% 依次降到 3.7%、2.9%、1.9%。来源:Anthropic「Introducing Contextual Retrieval」https://www.anthropic.com/news/contextual-retrieval(查阅于 2026-08-25)。

  28. 补充(不在书里):《Late Chunking》,2024 年 9 月 7 日提交,作者为 Michael Günther、Isabelle Mohr 等。来源:https://arxiv.org/abs/2409.04701(查阅于 2026-08-25)。

  29. 补充(不在书里):《Docling Technical Report》,2024 年 8 月 19 日提交,作者为 Christoph Auer、Maksym Lysak 等。来源:https://arxiv.org/abs/2408.09869(查阅于 2026-08-25)。

  30. 出处:「Chapter 1. Loading Data」第 799 段(text/04-ch01-chapter-1-loading-data.txt:799,搜「For more advanced loading pipelines for RAG systems, check out the blogs」)与第 803 段(text/04-ch01-chapter-1-loading-data.txt:803,搜「How to parse PDF docs for RAG」)。书里只给了标题没给网址,我们没有核对,所以不列网址。

  31. 出处:「Chapter 2. Data Preparation」第 626 段(text/05-ch02-chapter-2-data-preparation.txt:626,搜「check out Greg Kamradt」)。

  32. 出处:「Chapter 2. Data Preparation」第 628 段(text/05-ch02-chapter-2-data-preparation.txt:628,搜「the Llama Index semantic chunker」)。

  33. 出处:「Chapter 2. Data Preparation」第 543 段(text/05-ch02-chapter-2-data-preparation.txt:543,搜「refer to the LangChain documentation」)。

  34. 出处:「Chapter 2. Data Preparation」第 729 段(text/05-ch02-chapter-2-data-preparation.txt:729,搜「Thuwarakesh Murallie」)。书里同时提到,你也可以直接用工具包里的标准实现(text/05-ch02-chapter-2-data-preparation.txt:723,搜「the standard implementation in LangChain or LlamaIndex」)。