🧠 第一章 AI入门:认识人工智能模型训练
📄 一句话概括

九条搜索结果,衰减系数从 0 拧到 0.005, 排第一的从「45 天前那条最相关的」换成「1 天前那条相关度低 0.09 的」。 联网搜索不改变模型的知识,只改变「哪几条摆到它眼前」。

📝 本节和前面几节的关系

上一节讲模型自己想。 这一节讲它出去查——机制上它和 1.2.4 的 RAG 是同一套结构,只是资料库从企业文档换成了整个互联网。

一、联网搜索不是「模型上网了」

先说清一件事:模型本身没变,权重一个都没动。它不会因为开了联网就「知道」今天发生了什么。 真正的流程是四步。第一步把你的问题改写成查询词,第二步让搜索引擎返回一批结果。 第三步按某个分数排序、取前几条。第四步把这几条塞进提示词,让模型照着这些材料回答。 这个结构你在 1.2.4 见过:切、查、塞。 区别只在第三步——RAG 查的是企业自己的文档,联网搜索查的是公开网页。骨架一模一样。 所以联网搜索的失败方式也和 RAG 一样:搜不到、排错、塞了不看。三个环节各有一套病,修法完全不同。

二、排序里藏着一个必须拧的旋钮

排序要同时满足两个互相打架的指标:相关度(字面和语义贴不贴)和新鲜度(多久以前发的)。 Demo 用的分数是:相关度 × exp(-衰减系数 × 天数)。 括号里那个系数就是旋钮,拧得越紧,「新」越压过「准」。 系数 0 等于纯看相关度, 排第一的是那条 45 天前的旧闻——字面上它跟问题最贴,但它说的已经不是现在的事了。 拧到 0.005,第一名换成了一天前那条:相关度只有 0.86,比对手低 0.09,但胜在新鲜。 再拧到 0.02,连第二名都换了。 这个旋钮没有标准答案。 查「XX 是什么」要准,查「XX 多少钱」要新。 同一个产品,两种问法,最优系数不是一个数。

三、三个环节,三种不同的病

搜得到吗(召回):该有的结果在不在候选里。搜不到,后面全是空谈。 病根在查询改写——问法和网页用词对不上,搜索引擎就找不着。 排得对吗(排序):时效和相关性的权重配得合不合适。病根在衰减系数,或者干脆没有时效这一维。 引得准吗(引用):模型有没有真的用这些结果,而不是自己编。病根在提示词约束和模型的服从性。 第三条最容易被忽略,也最难发现:给了资料不看,是另一种幻觉。表现是答案和资料对不上, 但语气一样笃定,还带着引用编号。

四、什么时候别开联网

数学题、写代码、翻译:别开。 联网只会引入噪声,还可能被搜到的错误解法带偏。 这类问题答案不随时间变。 时效性极强的事实:必须开。 价格、人事变动、 版本号——不开就是拿训练截止日期的旧知识答现在的问题。 企业内部问题:开了也没用。 联网搜不到你的内部制度,这种情况要接自己的知识库,回到 1.2.4。 判断标准一句话:这个问题的答案会不会随时间变?会,就开;不会,就关。开了不关, 等于给模型多塞了几段可能不相关的材料。

五、动手 Demo:衰减系数拧到 0.005,第一名从 45 天前换成 1 天前

造九条搜索结果,每条带「字面相关度」和「发布天数」两个属性——相关度从 0.95 到 0.50, 天数从 1 天到 1000 天。用 相关度 × exp(-系数 × 天数) 排序,扫四个系数档,看第一名怎么变。

docs = [
    (u'该模型发布新版本,上下文扩到 100 万 token', 0.95, 45),
    (u'该模型最新版本的官方公告', 0.86, 1),
    (u'该模型上一代版本的详细评测', 0.72, 200),
    # ……共九条
]

for lam in (0.0, 0.002, 0.005, 0.02):
    sc = sorted([(r * np.exp(-lam * d), t) for t, r, d in docs],
                reverse=True)
    print('%.3f' % lam, '%.3f' % sc[0][0], sc[0][1][:20])

实跑输出:

--------------------------------------------------------------------
联网搜索:它改的不是模型,是「把哪几条摆到模型眼前」
--------------------------------------------------------------------
  九条搜索结果,每条有「字面相关度」和「发布天数」两个属性:
  标题(截断)                            相关度   发布天数
  --------------------------------------------------------
  该模型发布新版本,上下文扩到 100 万 t     0.95         45
  该模型最新版本的官方公告                  0.86          1
  该模型上一代版本的详细评测                0.72        200
  模型上下文长度的技术原理                  0.70          2
  长上下文的实际效果测试                    0.68          5
  某云厂商宣布下调推理价格                  0.60          3
  去年同期的模型价格对比                    0.58        380
  如何评估模型的长文本能力                  0.55         30
  三年前的模型选型指南                      0.50       1000

  排序分数 = 相关度 × exp(-衰减系数 × 天数)。**衰减系数是个旋钮**,拧到多紧,决定了「新」和「准」谁更重要:

  衰减系数   最高分   排第一的                              排第二的
  --------------------------------------------------------------------------------------------
     0.000   0.950    该模型发布新版本,上下文扩到 100 万   该模型最新版本的官方公告
     0.002   0.868    该模型发布新版本,上下文扩到 100 万   该模型最新版本的官方公告
     0.005   0.856    该模型最新版本的官方公告              该模型发布新版本,上下文扩到 100 万
     0.020   0.843    该模型最新版本的官方公告              模型上下文长度的技术原理

  衰减系数 0 就是纯看相关度,排第一的是那条 45 天前的旧闻——**字面上它跟问题最贴,但它说的已经不是现在的事了。**
  系数拧到 0.005,第一名换成了一天前那条——它相关度低了 0.09,但胜在新鲜。
  再往上拧,30 天、200 天、1000 天的条目按天数成比例往下掉。
  这就是「联网搜索」的全部机制:**它不改变模型的知识,只改变「哪几条摆到模型眼前」。** 排序错了,模型再强也只能照着错的念。

  所以判断一个联网搜索做得好不好,要问三个问题,一个都不能省:
  ① 搜得到吗               召回——该有的结果在不在候选里
  ② 排得对吗               时效与相关性的权重配得合不合适
  ③ 引得准吗               模型回答时有没有真的用了这些结果,而不是自己编
  第三条最容易被忽略:**给了资料不看,是另一种幻觉。**

四个系数、四次排序,最高分从 0.950 一路掉到 0.843。 分数在掉,但第一名换了人——这就是旋钮在起作用。 系数 0 时第一名是那条 45 天前的旧闻,分数 0.950。 它是字面最贴的,但「上下文扩到 100 万 token」这件事,45 天前说的可能就是上一代。 准和旧可以同时成立。 系数 0.005 时第一名换成一天前那条,分数 0.856——比原来低了 0.094,但它说的是现在。 系数 0.02 时连第二名都换了:30 天那条挤进来,200 天、380 天、1000 天的按天数成比例往下掉。 这就是「时效优先」的极端形态。 最后那三条问题(搜得到、排得对、引得准)不是凑数的。 这个 Demo 只验证了第二条—— 召回和引用这两条,在沙箱里没有真实搜索引擎,量不了。我能算的是「给定一批候选,排序怎么变」, 不是「搜索引擎会不会给我这批候选」。

30 秒实验

  1. 把系数继续加大到 0.05、0.1,看 1000 天那条会不会彻底掉出前几名。 注意它不会消失——只是分数趋近 0,还在列表里。
  2. 造一条「相关度 0.99、但 900 天前」的假数据,看哪个系数下它能被 1 天前的挤掉。 这条线就是你能容忍的「最旧还可用」的边界。
  3. 把天数改成小时(同一天的新闻按小时排),看同一天的结果怎么排。 时效粒度越细,旋钮越敏感——这也是为什么快讯类搜索必须单独调参。

常见误区

  1. 「开了联网模型就知道今天的事了」。 它只拿到几条搜索结果,搜不到、被墙、或者没人写过,它还是不知道。
  2. 「联网一定能减少幻觉」。 搜索结果错、排序错、模型不看,三种情况都能产生新的幻觉,而且因为带着引用,看起来更可信。
  3. 「衰减系数越大越好」。查定义、查原理时,把旧但准确的资料挤掉是负优化。 系数要按问题类型分,不是一个全局值。
自测三问(点开对答案) 1. 联网搜索改变了模型的什么? —— 什么都没改。模型的权重没动,改的是提示词里塞了哪几条外部资料。 所以它和 RAG 是同一套东西,只是资料来源不同。 2. 衰减系数调大,会牺牲什么? —— 牺牲相关度。旧但准确的资料会被新但不够贴的资料挤下去。 系数是「新」与「准」之间的一个交换比例,不是越大越好。 3. 「给了资料不看」为什么也算幻觉? —— 因为输出看起来有依据(甚至带引用编号),实际是模型自己编的。 它比明说「不知道」更难被发现,危害更大。

能力讲完,最后一节把它放进生意里算一遍——不算准确率,算几个月能回本。

相关笔记