跳到主要内容

把意思变成坐标 — 嵌入,以及为什么这一步决定检索的成败

这一章讲三件事: 一段文字被算成的那串数到底是什么、凭什么「意思近」就「数也近」; 「两段话有多近」怎么变成一个你能手算出来的分;以及选这个模型要看哪四个轴。

它在全书链条里的位置: 第 05 章建索引的第 ③ 步「转成一串数」,在那里只用了一段话带过。 这一步是整条检索链的地基——第 07 章讲它为什么还会失败、第 08 章讲它规模化之后的问题、 第 09 章讲怎么评它。这四章都建在这一章上,别跳。

1. 顶层全景:一次失败的检索,和它的根子

这一章的主走查是一家医疗公司的保险问答机器人。

用户问:「手术后的物理治疗报销吗?」


它答:「这个我不太确定。」 ← 而答案就白纸黑字写在它能读到的文档里

├─ 是模型不够好吗? 不是。换更强的模型,一样答不出
├─ 是文档不全吗? 不是。那句话就在里面
└─ 是「取」这一步没把那段文字捞出来


为什么捞不出来?因为用户那句话和文档里那句话
「术后康复治疗的理赔流程」——**一个共同的词都没有**


而系统判断「像不像」,靠的是把两句话各算成一串数,再比这两串数近不近


**所以根子在:算这串数的那个模型,不认得医疗领域的说法**

图说:一路排除下来,问题落在一个大多数人不会去看的地方。
**书的原话是:问题不在模型,也不在内容,在检索;而检索失败的根子在嵌入模型。**

走查第 ① 步就是上面这张图:它答不出来的那一次,以及一路排除下来问题落在哪儿。 后面几步挂在哪一节:

走查在哪一节这一步看什么
第 ②③ 步第 3 节那两句话各算成一串数,再把「近不近」算成一个具体的分

其余几节不占走查的步: 第 2 节讲那串数到底是什么(这条链的地基), 第 4–5 节讲换一个认得医疗说法的模型为什么就能修好它, 第 6 节另起一条走查——一个真正跑在生产上的百万条房源的例子。

2. 那串数到底是什么

这一节把第 05 章那一段话展开成一节。它是这一整条链的地基。

先看现象:两句话一个共同的词都没有,意思却完全一样

书给的例子很干净1:

句 A:「我怎么报销心理治疗费?」
句 B:「提交心理健康理赔的流程是什么?」

共同的词: 几乎没有(「心理」勉强算半个)
意思: **一模一样**

图说:任何一个「数共同词有几个」的办法,在这两句上都会判它们不相关。

这就是全部问题:字面不像,意思一样。 而机器只会算数,它凭什么知道这两句是一回事?

做法:给每段文字算出一串数

做法是:把一段文字(一句话、一段、或者一整篇)交给一个专门的模型,它输出一串数字。 书里的原样长这样:[0.12, -0.87, 0.56, ...]——常见是 384 个数或者 768 个数排成一列2

这样一串按顺序排好的数,在数学上就叫向量。

而这串数一共有多少个,就叫维度——384 个数排成一列,就说它是 384 维的。

而这串数,就是第 05 章说过的那个名字:嵌入。

关键不在于「它是一串数」,在于它落在哪儿

随便给每段文字编个号也是一串数,但那没有任何用——3542 号和 3543 号之间没有任何关系。

嵌入的全部本事在于位置:意思相近的文字,算出来的那串数也彼此靠近。3 上面那两句关于心理治疗的话,一个好的嵌入模型会把它们放到彼此很近的地方

这一步做成了,「意思」就变成了「距离」——机器终于有东西可算了。

一个可以用来记住它的画面

书给了一个心智模型:把这个模型想成一位地图绘制员。 你喂给它任何一句话,它就把这句话放到一张巨大的「人类想法地图」上的某个位置4:

讲休假政策的句子 → 聚成一团
问医疗报销的句子 → 落在健康类文档旁边
问辞职、解雇的句子 → 飘向人事和法务那一片

检索这个动作 = 把用户的问题也放上这张图,然后看它附近有什么。

图说:这张图是书给的比方,**它只解释「为什么可以按远近来找」**。
它解释不了「这位绘图员凭什么知道该把句子放在哪儿」——那属于这个模型是怎么训出来的,
书没有讲,我们在本节末尾补了取材路径。

这个比方到此为止,后文一律说「嵌入」和「向量」。

补充(不在书里,依据我们自己的书架): 「为什么经常出现在同类句子里的词, 这串数就会更接近」——这背后的道理原书一句没讲。 我们已经写完并验收过的另一本书的拆解里有完整的一章讲它5

3. 「近不近」怎么变成一个具体的分

这一节是这一章唯一需要动笔算的地方,而它值得动笔——因为算完你就再也不会觉得它玄。

两种量法

书给了两个,先各用一句话说清6

第一种量的是两个向量之间的夹角——夹角越小、方向越一致,就判它们越像。 夹角这个量在数学上用一个叫余弦的函数来表示,所以这种量法就叫余弦相似度它和向量有多长完全无关。

第二种做法是把两个向量对应位置的数相乘、再全部加起来,得到一个数; 这个运算叫点积它把向量的长度也算进去了——长的向量天然得分高。

量法它量什么一句话
余弦相似度夹角,也就是方向和长度无关——只看「指向像不像」
点积对应位置相乘再相加把长度也算进去了

书的结论:实际上多数检索系统用余弦相似度,因为它只看语义方向。7

手算一遍,用两维的向量

真实的向量有几百个数,没法在纸上画。但道理在两维上一模一样,而且你能自己核对。

向量 A = (3, 4) 向量 B = (4, 3) 向量 C = (5, 0) 向量 D = (6, 8)

第一步:算长度(勾股定理)
|A| = √(3² + 4²) = √25 = 5
|B| = √(4² + 3²) = 5
|C| = √(5² + 0²) = 5
|D| = √(6² + 8²) = √100 = 10 ← D 和 A 方向完全相同,只是长了一倍

第二步:算点积(对应位置相乘再相加)
A·B = 3×4 + 4×3 = 24
A·C = 3×5 + 4×0 = 15
A·D = 3×6 + 4×8 = 18 + 32 = 50

第三步:余弦相似度 = 点积 ÷ (两个长度相乘)
A 和 B:24 ÷ (5×5) = 24/25 = **0.96** ← 方向很接近
A 和 C:15 ÷ (5×5) = 15/25 = **0.60** ← 方向差得多
A 和 D:50 ÷ (5×10) = 50/50 = **1.00** ← 方向完全相同

图说:看最后两行的对比——**A 和 D 的点积是 50,比 A 和 B 的 24 大一倍多;
可按余弦算,A 和 D 是完全相同的方向,A 和 B 只是很接近。**
点积把「D 比 A 长一倍」也算进了分数里,余弦把这一层除掉了。
**这就是「与长度无关」的确切含义,你可以自己把这几个数验一遍。**

为什么检索要「与长度无关」: 一段文字的向量长度,往往和它有多长、写得多啰嗦有关, 而不是和它讲的是什么有关你要找的是「说的是同一件事」,不是「同样啰嗦」。

走查第 ②③ 步:回到那个保险机器人

用户问: 「手术后的物理治疗报销吗?」 → 算成向量 Q
文档里: 「术后康复治疗的理赔流程」 → 算成向量 P

用一个通用嵌入模型算: 余弦相似度 = **0.62**
系统的取回门槛是: 前 5 条,而这一条排在第 11 位 → **没被取到**

换成一个在医疗文本上训练过的模型再算: 余弦相似度 = **0.88**
这一次它排到了第 2 位 → **取到了**

图说:**0.62、0.88、第 11 位、第 2 位这四个数是为演示编的**,书没有给具体分数;
但「换成领域模型之后同一条就能被取到」这个因果是书里的。
**注意两次比较里,问题和文档一个字都没改——变的只有算这串数的模型。**

4. 三类嵌入模型,各有各的取舍

这一节回答:那该选哪个模型。

书把它们分成三类8:

类别强在哪弱在哪什么时候用
别人的服务(按次收费)上手快、开箱质量高你不知道它是拿什么训的;不能改造它;按用量收费;有等待和限流;受监管行业还有数据出境的顾虑通用聊天机器人、公司内部搜索
能下载下来自己跑的免费、可以拿自己的数据改造它、能在自己机房里跑要自己养机器、自己运维数据敏感、或者需要定制
某一行专用的在本行里准得多,常常大幅超过通用模型出了这一行就差法律工具、医疗问答

第三行那句「出了这一行就差」是有代价的,不是白拿的好处。

书给的那句理由,是这一节最该记住的

如果你的检索系统认不出「termination」在合同里和在医疗报告里完全是两回事, 结果就会很差。9

这个例子好在它一句话说清了「领域」到底是什么: 同一个词,在合同里指「合同终止」,在医疗报告里指「妊娠终止」—— 通用模型见过的两种用法都不少,于是它把这个词放在两者中间的某处,结果哪一边都不够近。

还有一件必须说的事:换供应商的代价

如果你用的是别人的服务,有一天想换一家,代价不是改几行代码。

你必须把整个资料库重新算一遍。 因为不同模型算出来的向量根本不在同一个空间里 ——新模型算出的问题向量,和旧模型算出的文档向量比大小,得到的是一个毫无意义的数10

这条在第 08 章会以另一种面目再出现一次,那里它是一种「漂移」。

5. 选模型不只看榜单,还有四个轴

这一节给出四条实际会咬人的约束。

具体是什么书给的数与结论
一串数有多长768–1536 个数抓得住更细的语义,但更占存储、更费计算;384 个以下省开销、换来准头下降百万级文档时,长度砍到四分之一就是可观的省钱;而且有一种训练法让你训完之后才决定砍到多少(1536 砍到 256,质量掉得很少)11
一次能吃多长的文档老一些的模型只吃 512 个词元,新的支持 8000 以上超出的部分会被直接截掉——长合同、长论文因此会丢关键信息,所以长文档必须配第 05 章那套切块
多语言有专门的多语言模型,不必每种语言配一个但在单一语言里,它通常不如那门语言的专用模型
跑得动什么硬件一类常见模型要 500MB 以上的显卡内存把模型内部那些数从「每个数占很多位」压成「每个数占很少位」来存,这个动作叫量化;压过之后模型能在普通处理器上跑,质量掉得很少12

第一行那个「训完之后才决定砍到多少」值得单独说一句: 它意味着同一份向量可以按不同的长度部署——预算紧就砍短,追求质量就用全长, 不必重新训练、也不必重新算一遍全库。

6. 一个真正跑在生产上的例子:百万条房源

这一节看同一套东西在规模上长什么样,以及它带来的两个新问题。

问题:房东写的话和房客搜的话对不上

一家民宿平台有几百万条房源。房客搜的是 「安静的、能看到山、走路能到餐厅的地方」; 而房源上写的是**「俯瞰阿尔卑斯的静谧藏身处,靠近镇中心」**13

纯按关键词匹配,这条完全合适的房源会被整个漏掉。

做法:两个编码器,各管一边

他们的做法是用两个独立的模型:一个专门把「查询」算成向量,一个专门把「房源」算成向量。

「把一段文字变成一串数」的这种模型,行内就叫编码器——把文字编成码,所以得名。 一边一个、各自独立,所以这个结构叫双编码器

这个结构决定的关键收益,是一笔计算量的账:

房源侧: 几百万条房源的向量,**离线预先算好一次,存起来**
查询侧: 用户每搜一次,**只需要实时算查询那一个向量**

所以每次搜索的实时计算量 = 1 个向量,而不是几百万个。

图说:这个「一侧预先算好」的性质,是这类系统能在规模上跑起来的全部原因。
**它同时也带来一个后果:两侧从不直接互相看**——这一点在第 07 章会变成一个真实的短板。

分开还有第二个好处:两边可以各自往自己擅长的方向改。 查询那一侧专门对付又短又含糊的搜索短语;房源那一侧对付又长又细的描述14

训练数据从哪来:不靠人工打标签,靠点击

这是这个案例最有教益的一点。 训练这类模型通常要人一条条打上「这两个相关 / 不相关」的标签 ——给数据人工打标签这件事叫标注,又慢又贵。

他们没有走这条路,而是用了用户的点击: 用户搜完点了哪条,就构成一对「查询—房源」的相关样本15

这解决了「哪来那么多训练数据」的问题,而且数据源源不断、反映真实意图。

但它自带一个偏差,书如实点了出来

点击数据有内建的偏差:排在前面的房源天然更容易被点,不管它相不相关。16

所以他们不得不做去偏处理,否则模型学到的就成了「什么东西排在前面」, 而不是「什么东西和这个查询真的相关」。

判断(我们的,不是书里的): 这个偏差不是这个案例特有的,它是所有拿用户行为当训练信号 的系统都会有的:你的排序影响用户点什么,用户点什么又拿去训练你的排序。 这是一个闭环,而闭环会自我强化。 同样的形状在第 20 章会以更严重的面目再出现一次(那里是人的偏见被喂回模型)。 如果错,会错在: 如果某个系统的展示顺序是随机的(比如做 A/B 实验时随机打乱), 点击信号就没有这层位置偏差,不必去偏。判据是:被点的那一条,是不是因为排在前面才被看到。

线上是怎么跑的,以及三个生产难题

线上四步17:

① 实时算出用户查询的向量
② 用一种「不和每一条都比、只快速找出大概最近的那几条」的搜法找出语义相近的房源
(这种搜法叫近似最近邻,它怎么做到的是第 08 章的内容)
③ 把语义相近的结果和传统的硬条件合并(价格区间、日期能不能订)
④ 最后一次排序:综合语义相似度和其他因素

图说:**这是一个普遍模式:嵌入负责「懂意思」,传统方法负责「守规矩」。**
语义相似度不会替你检查「这套房子那几天有没有被订走」。

三个生产难题,每一个都有普遍性18。(下表第二行会用到一个词:一台机器能提供多少计算能力, 行话叫算力。)

难题具体是什么他们的解法
新东西没有历史新上架的房源一次点击都没有,拿什么算向量先用内容本身(描述和属性)算一个初始向量,等点击和预订信号攒起来了再频繁重算
算力预算几百万条要算,而搜索又要快房源侧离线预先算好,查询侧专门把速度做上去
质量会随时间退化用词习惯和用户行为会变持续监控 + 定期重训

第三条是第 08 章一整节的主题。

关于那个 16%,我们要如实说一件事

书报告说他们的排序错误减少了 16%,但没有给出任何参照物: 16% 是相对什么基线、在什么规模的流量上、用什么口径量的,一概没说。 所以这个数字不构成论据,我们不建议转引。

书自己最后那句话反而更值钱:

嵌入模型的最终检验不是学术榜单,而是它有没有改善真实的用户体验和业务指标。19

7. 作者的判断与证据

书里给了证据的:

说法证据是什么
检索失败的根子可能在嵌入模型一个具体的失败案例(医疗保险问答),有排除法:不是模型、不是内容
意思相近的文字向量也相近两个句子的例子(心理治疗那对),没有量化数据
领域模型在本行里大幅超过通用模型一句断言 + 一个极好的例子(termination),没有对照实验数据
双编码器让百万级房源可行一个真实案例的架构描述
点击信号自带位置偏差案例里的真实困难 + 他们的应对

作者的推测或未给证据的说法:

说法它是什么
「多数系统用余弦相似度」一句行业观察。 没有给来源
「维度砍到四分之一是可观的省钱」一句判断。 「可观」没有量化
「排序错误减少 16%」一个没有参照物的数字(见上节)
那位「地图绘制员」一个比方,书自己也说了是心智模型,不是机制

8. 边界与局限

  • 这一章完全没讲嵌入模型是怎么训出来的。 「为什么它知道该把句子放在哪儿」这个最根本的问题, 书一个字没讲(我们在第 2 节末尾给了取材路径);
  • 没有讲怎么评一个嵌入模型好不好。 书列了三类模型和四个轴, 但没有给出「拿你自己的数据怎么比一比」的办法——而这才是真正该做的事;
  • 中文和其他非英语场景只有一行。 「多语言模型在单一语言里通常不如专用模型」—— 这一句之后再无下文;
  • Airbnb 案例的引用有一处对不上。 书正文描述的是「双编码器 + 点击信号训练」这套架构, 而它给的参考文献是一篇 2018 年的博客文章,那篇讲的是另一种做法我们没有核到与正文描述匹配的一手来源,如实写在这里;
  • 没有讲「一次算多少段合适」。 几百万段文字不会一条一条地送进模型,而是几十条几十条一起送 ——这种做法叫批量处理。一次送多少条、怎么排队、失败了怎么重来,书都没提。

9. 可带走的

全章那条走查,一行写完: 保险机器人答不出「术后物理治疗报不报销」→ 排除模型、排除内容 → 问题在「取」这一步 → 用户那句话和文档里那句「术后康复治疗的理赔流程」 一个共同的词都没有 → 两句各算成一串数,通用模型算出余弦相似度 0.62,排第 11,没取到 → 换成医疗领域训过的模型,算出 0.88,排第 2,取到了。 (0.62、0.88、第 11、第 2 是为演示编的;因果是书里的。)

  1. 嵌入 = 一段文字对应的一串数(常见 384 或 768 个),这串数叫向量,个数叫维度;
  2. 关键不在「是一串数」,在「落在哪儿」:意思相近的文字,数也相近;
  3. 意思因此变成了距离,机器才有东西可算;
  4. 余弦相似度量的是方向、与长度无关;点积把长度也算进去。检索多用前者;
  5. 手算口诀:余弦 = 点积 ÷ (两个长度相乘)。 方向相同就是 1.00,越不相干越小;
  6. 三类模型:别人的服务(快但不透明)/ 自己跑的(可控但要养机器)/ 某一行专用的(本行准、出行差);
  7. 「termination 在合同和医疗报告里是两回事」——这一句说清了「领域」到底指什么;
  8. 换嵌入模型要把整个资料库重算一遍——不同模型的向量不在同一个空间里;
  9. 四个轴:一串数多长 / 一次吃多长的文档 / 多语言 / 跑得动什么硬件;
  10. 双编码器的关键收益是一笔账:文档侧预先算好,查询侧每次只算一个;
  11. 拿用户点击当训练信号很好用,但它自带位置偏差——排在前面的天然更容易被点;
  12. 嵌入负责懂意思,传统条件负责守规矩——这是生产系统的通用模式;
  13. 最终检验不是榜单,是真实的业务结果。

10. 原文地图

主题原书章原文位置
保险机器人答不出的问题Chapter 4: Embeddings and Vector Searchtext/07-ch04-chapter-4-embeddings-and-vector-search.txt:25(搜「physical」) · text/07-ch04-chapter-4-embeddings-and-vector-search.txt:29(搜「The problem wasn’t the LLM」)
嵌入的定义与维度Chapter 4: Embeddings and Vector Searchtext/07-ch04-chapter-4-embeddings-and-vector-search.txt:72(搜「numerical representation of text」) · text/07-ch04-chapter-4-embeddings-and-vector-search.txt:76(搜「384 or 768 dimensions」)
心理治疗那两句Chapter 4: Embeddings and Vector Searchtext/07-ch04-chapter-4-embeddings-and-vector-search.txt:80(搜「reimbursed for therapy」) · text/07-ch04-chapter-4-embeddings-and-vector-search.txt:82(搜「may not share many words」)
余弦相似度与点积Chapter 4: Embeddings and Vector Searchtext/07-ch04-chapter-4-embeddings-and-vector-search.txt:86(搜「Cosine similarity measures the angle」)
地图绘制员Chapter 4: Embeddings and Vector Searchtext/07-ch04-chapter-4-embeddings-and-vector-search.txt:93(搜「smart mapmaker」) · text/07-ch04-chapter-4-embeddings-and-vector-search.txt:101(搜「The closer two points are」)
别人的服务:代价与换供应商Chapter 4: Embeddings and Vector Searchtext/07-ch04-chapter-4-embeddings-and-vector-search.txt:169(搜「You don’t know what data they were trained on」)
领域专用与 terminationChapter 4: Embeddings and Vector Searchtext/07-ch04-chapter-4-embeddings-and-vector-search.txt:205(搜「termination」) · text/07-ch04-chapter-4-embeddings-and-vector-search.txt:209(搜「only within their domain」)
维度取舍与训完再截断Chapter 4: Embeddings and Vector Searchtext/07-ch04-chapter-4-embeddings-and-vector-search.txt:258(搜「4x reduction in dimensions」) · text/07-ch04-chapter-4-embeddings-and-vector-search.txt:260(搜「minimal quality loss」)
上下文长度与截断Chapter 4: Embeddings and Vector Searchtext/07-ch04-chapter-4-embeddings-and-vector-search.txt:265(搜「512 tokens」)
多语言与硬件Chapter 4: Embeddings and Vector Searchtext/07-ch04-chapter-4-embeddings-and-vector-search.txt:273(搜「underperform compared to language-specific」) · text/07-ch04-chapter-4-embeddings-and-vector-search.txt:278(搜「quantized」)
民宿平台的搜索难题Chapter 4: Embeddings and Vector Searchtext/07-ch04-chapter-4-embeddings-and-vector-search.txt:317(搜「peaceful retreat with mountain views」)
双编码器的算力账Chapter 4: Embeddings and Vector Searchtext/07-ch04-chapter-4-embeddings-and-vector-search.txt:338(搜「pre-compute embeddings for millions」) · text/07-ch04-chapter-4-embeddings-and-vector-search.txt:342(搜「optimize each encoder」)
点击信号与它的偏差Chapter 4: Embeddings and Vector Searchtext/07-ch04-chapter-4-embeddings-and-vector-search.txt:349(搜「implicit」) · text/07-ch04-chapter-4-embeddings-and-vector-search.txt:359(搜「shown at the top of search results」)
线上四步与「嵌入懂意思、传统守规矩」Chapter 4: Embeddings and Vector Searchtext/07-ch04-chapter-4-embeddings-and-vector-search.txt:371(搜「Generates an embedding for the user's query」) · text/07-ch04-chapter-4-embeddings-and-vector-search.txt:381(搜「embeddings provide the semantic understanding」)
三个生产难题Chapter 4: Embeddings and Vector Searchtext/07-ch04-chapter-4-embeddings-and-vector-search.txt:400(搜「cold start」) · text/07-ch04-chapter-4-embeddings-and-vector-search.txt:405(搜「manage computational resources」)
最终检验不是榜单Chapter 4: Embeddings and Vector Searchtext/07-ch04-chapter-4-embeddings-and-vector-search.txt:386(搜「16%」)

Footnotes

  1. 出处:「Chapter 4: Embeddings and Vector Search」第 80 段(text/07-ch04-chapter-4-embeddings-and-vector-search.txt:80,搜「reimbursed for therapy」)与第 82 段(同文件 :82,搜「may not share many words」)。

  2. 出处:「Chapter 4: Embeddings and Vector Search」第 72 段(text/07-ch04-chapter-4-embeddings-and-vector-search.txt:72,搜「numerical representation of text」)与第 76 段(同文件 :76,搜「384 or 768 dimensions」)。原文用的英文词是 vector 和 dimensions。

  3. 出处:「Chapter 4: Embeddings and Vector Search」第 77 段(text/07-ch04-chapter-4-embeddings-and-vector-search.txt:77,搜「not just any point」)。原文:嵌入的妙处在于它们被摆在什么位置——语义相近的文本在这个空间里彼此靠近。

  4. 出处:「Chapter 4: Embeddings and Vector Search」第 93 段(text/07-ch04-chapter-4-embeddings-and-vector-search.txt:93,搜「smart mapmaker」)与第 101 段(同文件 :101,搜「The closer two points are」)。书还提醒:书里那张二维的图只是投影,384 或 768 个数没法直接画出来

  5. 补充(不在书里,依据我们自己的书架):原书从头到尾没有解释「这个模型凭什么知道该把一句话放在地图的哪个位置」。依据: shelf=ai-book-reference/what-is-chatgpt-doing#03-embeddings.md 事实=那一章从「给每个词编号为什么不行」讲起,给出了这个做法的来历——靠一条朴素的观察:经常出现在同类句子里的词,意思就相近;并说明了「意思变成距离」这件事为什么是整台机器成立的前提。

  6. 出处:「Chapter 4: Embeddings and Vector Search」第 86 段(text/07-ch04-chapter-4-embeddings-and-vector-search.txt:86,搜「Cosine similarity measures the angle」)。上面那段手算是我们补的,书只给了一句定义,没有任何算例。

  7. 出处:「Chapter 4: Embeddings and Vector Search」第 87 段(text/07-ch04-chapter-4-embeddings-and-vector-search.txt:87,搜「most RAG」)。

  8. 出处:「Chapter 4: Embeddings and Vector Search」第 169 段(text/07-ch04-chapter-4-embeddings-and-vector-search.txt:169,搜「You don’t know what data they were trained on」)、第 180 段(同文件 :180,搜「Open-source embedding models give you full control」)与第 207 段(同文件 :207,搜「domain-specific models shine」)。书还列了第四类「按指令调过的」模型,它更懂自然语言式的提问,代价是更大更慢;我们把它并进了「能下载下来自己跑的」那一类,因为书举的例子本来就都在那一类里。

  9. 出处:「Chapter 4: Embeddings and Vector Search」第 205 段(text/07-ch04-chapter-4-embeddings-and-vector-search.txt:205,搜「termination」)。补充(不在书里,来自通用知识):termination 在雇佣合同里指解雇或合同终止,在医疗报告里常指妊娠终止;这是我们为读者补的具体含义,书只说了「完全是两回事」。

  10. 出处:「Chapter 4: Embeddings and Vector Search」第 93 段(text/07-ch04-chapter-4-embeddings-and-vector-search.txt:93,搜「You can’t」)。原文提到换供应商要把整个语料重新嵌入一遍。「不同模型的向量不在同一个空间里、比出来的数没有意义」这句解释是我们补的,书只说了要重算。

  11. 出处:「Chapter 4: Embeddings and Vector Search」第 258 段(text/07-ch04-chapter-4-embeddings-and-vector-search.txt:258,搜「4x reduction in dimensions」)与第 260 段(同文件 :260,搜「minimal quality loss」)。书给这种「训完之后再截断」的训练法起了名字(Matryoshka Representation Learning,俄罗斯套娃式表示学习),但只给了效果、没讲原理——这是书的一处缺口,我们也没有补到一手来源。

  12. 出处:「Chapter 4: Embeddings and Vector Search」第 278 段(text/07-ch04-chapter-4-embeddings-and-vector-search.txt:278,搜「quantized」)。「量化」这个动作在第 08 章会再用一次,那里作用的对象从模型换成向量——同一个动作、同一个定义,不再重讲。

  13. 出处:「Chapter 4: Embeddings and Vector Search」第 317 段(text/07-ch04-chapter-4-embeddings-and-vector-search.txt:317,搜「peaceful retreat with mountain views」)。

  14. 出处:「Chapter 4: Embeddings and Vector Search」第 338 段(text/07-ch04-chapter-4-embeddings-and-vector-search.txt:338,搜「pre-compute embeddings for millions」)与第 342 段(同文件 :342,搜「optimize each encoder」)。

  15. 出处:「Chapter 4: Embeddings and Vector Search」第 349 段(text/07-ch04-chapter-4-embeddings-and-vector-search.txt:349,搜「implicit」)。

  16. 出处:「Chapter 4: Embeddings and Vector Search」第 359 段(text/07-ch04-chapter-4-embeddings-and-vector-search.txt:359,搜「shown at the top of search results」)。

  17. 出处:「Chapter 4: Embeddings and Vector Search」第 371 段(text/07-ch04-chapter-4-embeddings-and-vector-search.txt:371,搜「Generates an embedding for the user's query」)起的四步,以及第 381 段(同文件 :381,搜「embeddings provide the semantic understanding」)。

  18. 出处:「Chapter 4: Embeddings and Vector Search」第 400 段(text/07-ch04-chapter-4-embeddings-and-vector-search.txt:400,搜「cold start」)、第 405 段(同文件 :405,搜「manage computational resources」)与第 409 段(同文件 :409,搜「ongoing monitoring」)。

  19. 出处:「Chapter 4: Embeddings and Vector Search」第 386 段(text/07-ch04-chapter-4-embeddings-and-vector-search.txt:386,搜「16%」)。那句「最终检验不是学术基准,而是真实的用户体验和业务指标」在同一节末尾。至于那个 16%,书没有给任何参照物,我们也没有核到一手来源。