继 5 月的文件泄露事件后,谷歌的搜索引擎又被掀了个底朝天。不仅 DeepMind 发论文解释了 Vizier 系统的机制,博客作者 Mario Fischer 还对近百份文档做了彻底的调研分析,为我们还原了这个互联网巨兽的全貌。
谷歌发表的论文又开始揭自家技术的老底了。
DeepMind 高级研究科学家 Xingyou (Richard) Song 等人最近发表的论文中,解释了谷歌 Vizier 服务背后的算法秘密。
作为一个运行过数百万次的黑盒优化器,Vizier 帮助谷歌内部优化了很多研究和系统;同时,谷歌云和 Vertex 也上线了 Vizier 服务,帮助研究者和开发人员进行超参数调整或黑盒优化。
Song 表示,与 Ax / BoTorch、HEBO、Optuna、HyperOpt、SkOpt 等其他行业基线相比,Vizier 在很多用户场景中都有更稳健的表现,比如高维度、批查询、多目标问题等。
趁着论文发布,谷歌元老 Jeff Dean 也发推赞扬 Vizier 系统。
他提到的开源版 Vizier 已经托管在 GitHub 仓库上,有非常详细的文档说明,并且最近仍在持续维护更新。
仓库地址:https://github.com/google/vizier
OSS Vizier 的分布式客户端-服务器系统
虽然谷歌研究院早在 2017 年就发文讨论过整个 Vizier 系统,但内容远没有最新的这篇详实。
论文地址:https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/46180.pdf
这篇技术报告包含了大量研究工作的成果和用户反馈,在描述开源 Vizier 算法的实现细节和设计选择的同时,用标准化基准的实验表现了 Vizier 在多种实用模式上的稳健性和多功能性。
论文地址:https://arxiv.org/abs/2408.11527
其中,Vizier 系统迭代过程的经验教训也被一一展示,这对学界和行业都有很大的借鉴意义,值得一观。
Vizier 系统所用贝叶斯算法的核心组件
文章的主要贡献如下:
- 正式确认了 Vizier 当前版本的默认算法并解释其功能、设计选择,以及整个迭代过程中吸取的经验教训
- 在原始的 C++ 实现基础上提供了开源的 Python 和 JAX 框架实现
- 使用行业通用基准进行测试,体现了 Vizier 在高维、分类、批量和多目标优化等模式下的稳健性
- 对零阶进化采集优化器(zeroth-order evolutionary acquisition optimizer)这个非常规的设计选择进行了消融实验,展示并讨论了其中的关键优势
论文作者列表中排名前二的是两个 Richard——
Xingyou (Richard) Song 曾在 OpenAI 担任强化学习泛化方面的研究员,2019 年以高级研究科学家的身份加入 Google Brain,并从 2023 年起担任 DeepMind 高级研究科学家,从事 GenAI 方面的工作。
Qiuyi (Richard) Zhang 目前在 DeepMind Vizier 团队中工作,也是开源版 Vizier 的共同创建者,他的研究主要关注超参数优化、贝叶斯校准和理论机器学习方向,此外在 AI 对齐、反事实 / 公平性等方面也有涉足。
2014 年,Zhang 以优秀毕业生的身份从普林斯顿大学获得学士学位,之后在加州大学伯克利分校获得获得应用数学和计算机科学的博士学位。
搜索引擎机制大起底
作为绝对的行业巨头,谷歌很多未被披露的核心技术都让外界好奇已久,比如,搜索引擎。
十多年来超过 90% 的市场份额,让谷歌搜索成为了或许是整个互联网上最具影响力的系统,它决定了网站的生死存亡及网络内容的呈现形态。
但谷歌究竟是如何对网站进行排名的具体细节,从来都是「黑匣子」。
不像 Vizier 这类产品,搜索引擎既是谷歌的财富密码,也是看家技术,官方发论文披露是不可能的。
虽然也有媒体、研究人员以及从事搜索引擎优化工作的人士进行过种种猜测,但也只是盲人摸象。
旷日持久的谷歌反垄断诉讼最近宣布判决,美国的各级检察官搜罗了约 500 万页的文件,变成公开的呈堂证供。
然而,谷歌内部文档泄露和反垄断听证会的公开文件等等,并没有真正告诉我们排名的具体工作原理。
并且,由于机器学习的使用,自然搜索结果的结构非常复杂,以至于参与排名算法开发的谷歌员工也表示,他们并不能完全理解许多信号权重的相互作用,无法解释为什么某个结果会排在第一或第二。
5 月 27 日,一位匿名消息人士(后证实为搜索引擎优化行业资深从业者 Erfan Azimi)曾向 SparkToro 公司的 CEO Rand Fishkin 提供了一份 2500 页的谷歌搜索 API 泄露文档,揭示了谷歌搜索引擎内部排名算法的详细信息。
但这还不是全部。
专门报道搜索引擎行业的新闻网站 Search Engine Land 最近还发表了一篇博客,根据数千份泄露的谷歌法庭文件进行逆向工程,首次揭秘谷歌网络搜索排名的核心技术原理。
原文链接:https://searchengineland.com/how-google-search-ranking-works-445141
这篇博文是原作者在几周的工作中对近 100 份文档经过多次查看、分析、结构化、丢弃和重组之后才诞生的,虽然并不一定严格准确或面面俱到,但可以说是了解谷歌搜索引擎绝无仅有的全面且详细的资料。
作者的省流版结构示意图如下:
毫无疑问,谷歌搜索引擎是一个庞大而复杂的工程。从爬虫系统、存储库 Alexandria、粗排名 Mustang,再到过滤和细排名系统 Superroot 以及负责最终呈现页面的 GWS,这些都会影响网站页面最终的呈现和曝光。
新文件:等待 Googlebot 访问
当一个新网站发布时,它不会立刻被谷歌索引,谷歌如何通过收集和更新网页信息呢?
第一步就是爬虫和数据收集,谷歌首先需要知道该网站 URL 的存在,网站地图的更新或放置 URL 链接可以让谷歌抓取到新网站。
并且,频繁被访问的页面链接能更快地引起谷歌的注意。
爬虫系统(trawler system)会抓取新内容,并记录何时重新访问 URL 以检查网站更新,这由一个称为调度器的组件管理。
接着,存储服务器决定是否转发该 URL 或是否将其放到沙箱(sandbox)中。
谷歌之前一直否认沙箱的存在,但最近的泄露信息表明,(可疑的)垃圾网站和低价值网站也会被放入沙箱,谷歌显然会转发一些垃圾网站,可能是为了进一步分析内容和训练算法。
然后,图像链接被传输到 ImageBot 中,以便后续的搜索调用,有时会出现延迟的情况,ImageBot 有分类功能,能够将相同或相似的图片放置在一个图像容器中。
爬虫系统似乎使用自己的 PageRank 来调整信息抓取频率,如果一个网站的流量更大,这个抓取频率就会增加(ClientTrafficFraction)。
Alexandria:谷歌索引系统
谷歌的索引系统被称为 Alexandria,为每个网页内容分配唯一的 DocID。如果出现内容重复的情况,则不会创建新的 ID,而是将 URL 链接到已有的 DocID。
谷歌会明确区分 URL 和文档:一个文档可以由多个包含相似内容的 URL 构成,包括不同语言版本,所有这些 URL 都由同一个 DocID 进行调用。
如果碰到不同域名的重复内容,谷歌会选择在搜索排名中会显示规范版本。这也解释了为什么其他的 URL 有时可能会有相似的排名。并且,所谓「规范」版本的 URL 也不是一锤子买卖,而是会随着时间发生变化。
Alexandria 收集文档的 URL
作者的文档在网上只有一个版本,因此它被系统赋予了自己的 DocID。
有了 DocID 之后,文档的各个部分都会搜索出关键词并汇总到搜索索引(search index)中。「热词列表」(hit list)中汇总了每页多次出现的关键词,会先被发送到直接索引(direct index)中。
以作者的网页为例,由于其中多次出现「pencil」一词,在词汇索引(word index)中,DocID 就列在「pencil」条目下。
算法会根据各种文本特征计算出文档中「铅笔」一词的 IR(信息检索)分数并分配给 DocID,稍后用于发布列表(Posting List)。
比如,文档中「pencil」一词被加粗,并包含在一级标题中(存储在 AvrTermWeight 中),这类信号都会增加 IR 得分。
谷歌会将重要的文档移至 HiveMind,即主内存系统,同时使用快速 SSD 和传统 HDD(称为 TeraGoogle)来长期存储不需要快速访问的信息。
值得注意的是,专家估计,在最近的 AI 热潮之前,谷歌掌握了全球约半数的网络服务器。
一个庞大的互联集群网络能够让数百万个主存单元一起工作,一位谷歌工程师曾在一次会议上指出,理论上,谷歌的主存储器可以存储整个网络。
有趣的是,存储在 HiveMind 中的重要文档的链接以及反向链接似乎有更高的权重,而 HDD(TeraGoogle)中的 URL 链接可能权重较低,甚至可能不被考虑。
每个 DocID 的附加信息和信号都以动态方式存储在 PerDocData 中,这个存储库保存了每个文档最近的 20 个版本(通过 CrawlerChangerateURLHistory),许多系统在调整相关性时都会访问这些信息。
并且,谷歌有能力随着时间变化评估不同的版本。如果想要完全更改文档的内容或主题,理论上需要创建 20 个过渡版本来完全覆盖掉旧的版本。
这就是为什么恢复一个过期域名(一个曾经活跃,但之后由于破产或其他原因被放弃或出售的域名)不会保留原来域名的排名优势。
如果一个域名的 Admin-C 和其主题内容同时发生变化,机器可以轻松识别出这一点。
此时,谷歌会将所有信号置零,曾经有流量价值的旧域名不再提供任何优势,与全新注册的域名无异,接手旧域名并不意味着接手原本的流量和排名。
除了泄密事件之外,美国司法机构针对谷歌的听证会和审判的证据文件也是有用的研究来源,甚至包含内部电子邮件
QBST:有人在搜索「pencil」
当有人在谷歌中输入搜索词「pencil」时,QBST(Query Based Salient Terms)开始工作。
QBST 负责分析用户输入的搜索词,根据重要性和相关性为其中包含的各个词语分配不同的权重,并分别进行相关 DocID 的查询。
词汇加权过程相当复杂,涉及 RankBrain、DeepRank(前身为 BERT)和 RankEmbeddedBERT 等系统。
QBST 对于 SEO 很重要,因为它会影响 Google 对搜索结果的排名,从而影响网站可以获得多少流量和可见度。
如果网站包含与用户查询匹配最常用的术语,QBST 就会让网站排名更高。
经过 QBST 后,相关词汇如「pencil」,会被传递给 Ascorer 做进一步处理。
Ascorer:创建「绿环」
Ascorer 从倒排索引(即词汇索引)中提取「pencil」条目下的前 1000 个 DocID,按 IR 得分排名。
根据内部文件,这个列表称为「绿环」。在业内,这被称为发布列表(posting list)。
在我们关于「铅笔」例子中,相应文档在发布列表中排名第 132 位。如果没有其他系统的介入,这将是它的最终位次。
Superroot:「千里挑十」
Superroot 负责对刚刚 Mustang 筛选出的 1000 个候选网页重新排名,将 1000 个 DocID 的「绿环」缩减为 10 个结果的「蓝环」。
这个任务具体由 Twiddlers 和 NavBoost 执行,其他系统可能也有参与,但由于信息不准确,具体细节尚不清楚。
Mustang 生成 1000 个潜在结果,Superroot 将其过滤为 10 个
Twiddlers:层层过滤
各种文件表明,谷歌使用了数百个 Twiddler 系统,我们可以将其视为类似于 WordPress 插件中的过滤器。
每个 Twiddler 都有自己特定的过滤目标,可以调整 IR 分数或者排名位次。
之所以用这种方式设计,是因为 Twiddler 相对容易创建,而且无需修改 Ascorer 中复杂的排名算法。
排名算法的修改非常具有挑战性,因为涉及潜在的副作用,需要大量的规划和编程。相反,多个 Twiddler 并行或顺序操作,并不知道其他 Twiddler 的活动。
Twiddler 基本可以分为两种类型:
-PreDoc Twiddlers 可以处理几百个 DocID 的集合,因为它们几乎不需要额外的信息;
-相反,「Lazy」类型的 Twiddler 需要更多的信息,例如来自 PerDocData 数据库的信息,需要相对更长的时间和更复杂的过程。
因此,PreDocs 先接收发布列表并减少网页条目,然后再使用较慢的「Lazy」类型的过滤器,两者结合使用大大节省了算力和时间。
两种类型的、超过 100 个 Twiddler 负责减少潜在的搜索结果数量并重新排序
经过测试,Twiddler 有多种用途,开发者可以尝试使用新的过滤器、乘数或特定位置限制,甚至可以做到非常精准的操控,将一个特定的搜索结果排名到另一个结果的前面或后面。
谷歌的一份泄露的内部文件显示,某些 Twiddler 功能应仅由专家与核心搜索团队协商后使用。
如果您认为自己了解 Twidder 的工作原理,请相信我们:您不了解。我们也不确定自己是否了解
还有一些 Twiddlers 仅用于创建注释,并将这些注释添加到 DocID 中。
在 COIVD 期间,为什么你所在国家的卫生部门在 COVID-19 搜索中总是排在第一位?
那正是因为 Twiddler 会根据语言和地区,使用 queriesForWhichOfficial 来促进官方资源的精确分配。
虽然开发者无法控制 Twiddler 重新排序的结果,但了解其机制可以更好地解释排名波动和那些「无法解释的排名」。
质量评估员和 RankLab 实验室
全球范围内有数千名质量评估员负责为谷歌评估搜索结果,对新算法或过滤器进行上线前的测试。
谷歌表示,他们的评分仅供参考,不会直接影响排名。
这本质上是正确的,但他们的评分和投标票的确对排名产生了极大的间接影响。
评估员通常在移动设备上进行评估,从系统接收 URL 或搜索短语,并回答预设的问题。
例如,他们会被问到,「这篇内容作者和创作实践是否清晰?作者是否拥有该主题的专业知识?」
这些答案会被存储起来并用于训练机器学习算法,让算法能够更好地识别高质量、值得信赖的页面,和不太可靠的页面。
也就是说,人类评估者提供的结果成为深度学习算法的重要标准,谷歌搜索团队创建的排名标准反而没那么重要。
想象一下,什么样的网页会让人类评估者觉得可信?
如果某个网页包含作者的照片、全名和 LinkedIn 链接,通常会显得令人信服。反之,缺乏这些特征的网页会被判定为不那么可信。
接着,神经网络将识别这一特征为关键因素,经过至少 30 天的积极测试运行,模型可能开始自动将此特征用作排名标准。
因此,具有作者照片、全名和 LinkedIn 链接的页面可能会通过 Twiddler 机制获得排名提升,而缺乏这些特征的页面则会出现排名下降。
另外,根据谷歌泄露的信息,通过 isAuthor 属性和 AuthorVectors 属性(类似于「作者指纹识别」),可以让系统识别并区分出作者的独特用词和表达方式(即个人语言特征)。
评估员的评价被汇总成「信息满意度」(IS)分数。尽管有许多评估员参与,但 IS 评分仅适用于少数 URL。
谷歌指出,许多没有被点击的文档可能也很重要。当系统无法进行推断时,文档会被自动发送给评估员并生成评分。
评估员相关的术语中提到了「黄金」,这表明某些文档可能有一个「黄金标准」,符合人类评估员的预期可能有助于文档达到「黄金」标准。
此外,一个或多个 Twiddler 系统可能会将符合「黄金标准」的 DocID 推进排名前十。
质量评估员通常不是谷歌的全职员工,而是隶属于外包公司。
相比之下,谷歌自己的专家在 RankLab 实验室中工作,负责进行实验、开发新的 Twiddler 以及进行评估和改进,看 Twiddler 能否提高结果质量还是仅仅只能过滤掉垃圾邮件。
经过验证并有效的 Twiddler 随后被集成到 Mustang 系统中,使用了复杂、互连且计算密集型的算法。
NavBoost:用户喜欢什么?
在 Superroot 中,另一个核心系统 NavBoost 在搜索结果排名方面也发挥着重要作用。
Navboost 主要用于收集用户与搜索结果交互的数据,特别是他们对不同查询结果的点击量。
尽管谷歌官方否认将用户点击数据用于排名,但联邦贸易委员会(FTC)披露的一封内部电子邮件指示,点击数据的处理方式必须保密。
谷歌对此进行否认涉及两方面的原因。
首先,站在用户的角度来看,谷歌作为搜索平台无时无刻监视用户的在线活动,这会引起媒体对于隐私问题的愤怒。
但站在谷歌的角度来看,使用点击数据是为了获得具有统计意义的数据指标,而不是监控单个用户。
FTC 文件确认了点击数据将会影响排名,并频繁提到 NavBoost 系统(在 2023 年 4 月 18 日的听证会上提到 54 次),2012 年的一次官方听证会也证明了这一点。
自 2012 年 8 月起,官方明确表示点击数据会影响排名
搜索结果页面上的各种用户行为,包括搜索、点击、重复搜索和重复点击,以及网站或网页的流量都会影响排名。
对用户隐私的担忧只是原因之一。另一种担忧是,通过点击数据和流量进行评估,可能会鼓励垃圾邮件发送者和骗子使用机器人系统伪造流量来操纵排名。
谷歌也有反制这种情况的方法,例如通过多方面的评估将用户点击区分为不良点击和良好点击。
所使用的指标包括在目标页面的停留时间、在什么时间段查看网页、搜索的起始页面、用户搜索历史中最近一次「良好点击」的记录等等。
对于每个在搜索结果页面(SERPs)中的排名,都有一个平均预期点击率(CTR)作为基准线。
例如,根据 Johannes Beus 在今年柏林 CAMPIXX 大会上的分析指出,自然搜索结果的第 1 位平均获得 26.2% 的点击,第 2 位获得 15.5% 的点击。
如果一个 CTR 显著低于预期的比率,NavBoost 系统会记录下这一差距,并相应地调整 DocID 的排名。
如果「expected_CRT」与实际值偏差较大,则排名会相应调整
用户的点击量基本上代表了用户对结果相关性的意见,包括标题、描述和域名。
根据 SEO 专家和数据分析师的报告,当全面监控点击率时,他们注意到了以下现象:
如果一个文档在搜索查询中进入前 10 名,而 CTR 显著低于预期,可以观察到排名将在几天内下降(取决于搜索量)。
相反,如果 CTR 相对于排名来说高得多,排名通常会上升。如果 CTR 较差,网站需要在短时间内调整和优化标题和内容描述,以便获得更多的点击。
计算和更新 PageRank 是耗时且计算密集的,这就是使用 PageRank_NS 指标的原因。NS 代表「最近的种子」,一组相关页面共享一个 PageRank 值,该值暂时或永久地应用于新页面。
谷歌在一次听证会上就如何提供最新信息树立了一个良好典范。例如,当用户搜索「斯坦利杯」时,搜索结果通常会显示一个水杯。
然而,当斯坦利杯冰球比赛正在进行时,NavBoost 会调整结果以优先显示关于比赛的实时信息。
根据最新发现,文档的点击指标包含了 13 个月的数据,有一个月的重叠,以便与前一年进行比较。
出乎意料的是,谷歌实际上并没有提供太多个性化的搜索结果。测试结果已经表明,对用户行为进行建模并调整,比评估单个用户的个人偏好更能带来优质的结果。
然而,个人偏好,例如对搜索和视频内容的偏好,仍然包含在个性化结果中。
GWS:搜索的结尾和开端
谷歌网络服务器(GWS)负责呈现搜索结果页面(SERP),包括 10 个「蓝色链接」,以及广告、图片、Google 地图视图、「People also ask」和其他元素。
FreshnessNode、InstantGlue(在 24 小时内反应,延迟约 10 分钟)和 InstantNavBoost 等这些组件可以在页面显示前的最后时刻调整排名。
FreshnessNode 可以实时监测用户搜索行为的变化,并根据这些变化调整排名,确保搜索结果与最新的搜索意图匹配。
InstantNavBoost 和 InstantGlue 在最终呈现搜索结果之前,对排名进行最后的调整,例如根据突发新闻和热门话题调整排名等。
因此,要想取得高排名,一个优秀的文档内容还得加上正确的 SEO 措施。
排名可能会受到多种因素的影响,包括搜索行为的变化、其他文档的出现和实时信息的更新。因此,必须认识到,拥有高质量的内容和做好 SEO 只是动态排名格局中的一部分。
谷歌的 John Mueller 强调,排名下降通常并不意味着内容质量不佳,用户行为的变化或其他因素可能会改变结果的表现。
例如,如果用户开始偏好更简短的文本,NavBoost 将自动相应地调整排名。然而,Alexandria 系统或 Ascorer 中的 IR 分数是保持不变的。
这告诉我们,必须在更广泛的意义上理解 SEO。如果文档内容与用户搜索意图不一致,仅仅优化标题或内容是无效的。
参考资料:
-
https://searchengineland.com/how-google-search-ranking-works-445141
-
https://arxiv.org/abs/2408.11527
本文来自微信公众号:微信公众号(ID:null),作者:新智元