IT 论文精读 · PAPER 41
Sergey Brin & Lawrence Page · Stanford · WWW7 · 1998
1998 年,斯坦福两个博士生 Sergey Brin 和 Larry Page 写了一篇论文,介绍他们做的一个搜索引擎原型——名字叫 Google(谷歌)。它靠一个关键点子,把当时又慢又难用的网页搜索,一下变得「搜什么都能把最该看的排到最前面」。这篇论文,就是今天这家公司的出生证明。
九十年代中期,网页正在爆炸式变多,可搜索引擎还很笨:你输一个词,它就去找「哪些页面里出现了这个词、出现得多」。问题是,「出现这个词」和「是不是好页面」根本是两回事。一个塞满关键词的垃圾页,能轻松盖过真正权威的页。想搜「大学」,排最前的未必是任何一所名校。那时候大家甚至靠人工编的网站目录(像早期雅虎)来找东西——可网页多到人根本编不过来。
Brin 和 Page 的洞见特别妙:别光看一个页面自己说了什么,去看「别人怎么对待它」。网页之间是用链接连起来的——A 页面上有一个能点到 B 页面的链接,就相当于 A 给 B 投了一票、说「这页值得看」。被越多页面链接的页,多半越靠谱。
但还有更妙的一层:不是每张票都一样重。一张来自权威大页的推荐,比一百张来自无名小页的推荐还管用。于是「重要」就成了一件递归的事——重要的页投的票更重,而它们又是被别的重要页推举出来的。这套「谁重要看谁被谁推荐」的打分,就叫 PageRank。
想象一个人在网上漫无目的地乱点链接:点到一页,随手再点页面上的一个链接,跳到下一页,一直点下去;偶尔点腻了,就直接在地址栏敲个别的网址、随机跳到别处重新开始。这么点上无数次之后,他停留在某一页的时间比例,就是这页的 PageRank——重要的页四通八达、总被点到,冷门页则很少被路过。这个「随机冲浪者」的比喻,正是 PageRank 的真身。
还有一招同样关键:看别人怎么称呼你,往往比你怎么自我介绍更准。大量页面在链接到谷歌时,会把链接的文字写成「搜索引擎」——于是就算目标页自己一个字都没提「搜索引擎」,谷歌也知道该在这个词下把它排出来。这段「链接上的文字」叫锚文本,它让搜索引擎能读懂图片、下载文件这些自己不含文字的东西,也能描述那些还没来得及抓取的页面。
把「投票」和「别人怎么称呼你」这两个信号,叠加到老办法「词有没有出现」之上,搜索结果的质量一下拉开了差距——第一页十条,条条切题。这套东西撑起了后来的谷歌,也重写了整个互联网找信息的方式。当然它也有代价(诚实一句):一旦排名靠链接,就有人专门去刷链接、造假票来骗排名,这场攻防一直打到今天。
别只看一个网页自己说了啥,去看「谁链接了它、谁又链接了那些链接它的页」——把链接当成一票票带权重的推荐(PageRank),再加上「别人用什么词称呼它」(锚文本),就能在爆炸增长的网页里把最该看的排到最前。这就是谷歌的起点。
想看链接投票的示意图、随机冲浪者的公式和谷歌雏形的架构? → 切到精读版
这篇论文介绍了搜索引擎原型 Google(谷歌),核心是两个把「网页超链接结构」变成质量信号的想法:PageRank——用「谁链接了你、那些页又有多重要」递归地给每个网页打一个全局重要性分(等价于一个「随机冲浪者」停留在该页的概率);锚文本(anchor text)——用指向某页的链接上的文字来描述该页。两者叠加到传统的文本匹配之上,第一次让大规模网页搜索的结果「第一页就切题」,并给出了能扩到全网的完整系统架构。
作者是斯坦福两名博士生 Sergey Brin 与 Lawrence(Larry)Page,论文发表于 1998 年第七届国际万维网大会(WWW7)。它的思想源头是学术界的引文分析(一篇论文被越多、越权威的论文引用就越重要);同期还有 Jon Kleinberg 的 HITS(把网页分成「权威页」与「枢纽页」两种角色)作为另一条链接分析路线。往后,这篇论文长成了谷歌公司,也让「用链接结构判断网页质量」成为整个搜索行业的通用范式。
九十年代中后期,网页数量指数级膨胀,但人一天能看的页面没变多——大多数人只看前十条结果。当时的搜索引擎主要靠文本匹配排序:一个词在页面里出现得越多、越靠标题,就排得越前。这套办法有两个致命伤。
其一,「含这个词」不等于「是好页」。作者举例:在某些引擎上搜一家知名公司的名字,它自己的主页都未必排进前列。其二,文本匹配极易被操纵——往页面里疯狂堆关键词就能骗到高位,垃圾结果「淹没掉用户真正想要的结果」。当时另一条路是人工编纂的网站目录(如早期雅虎),质量高但根本追不上网页增长的速度。核心矛盾于是浮现:网页里藏着一个几乎没人用的、极其宝贵的质量信号——超链接本身。一个人愿意在自己页面上放一条指向别人的链接,本身就是一次带成本的「背书」。
PageRank 的直觉一句话:一个页面的重要性,来自「有多少页链接它」,以及「链接它的那些页本身有多重要」。它把每条链接看成一张投票,但票是有权重的——来自重要页的一票,远比来自无名页的一票值钱。这就带来一个递归定义:要知道 A 有多重要,得先知道指向 A 的那些页有多重要,而那又取决于指向它们的页……
怎么把这个「先有鸡还是先有蛋」的递归算出来?论文用了随机冲浪者(random surfer)模型:设想一个人从任意页出发,以概率 d(取 0.85)随机点击当前页上的一个出链跳到下一页;以概率 1−d(0.15)「点腻了」,直接随机跳到全网任意一页重新开始。让他这样走无穷久,他落在某页上的长期概率,就定义为该页的 PageRank。写成公式是
PR(A) = (1−d)/N + d · Σ PR(Tᵢ)/C(Tᵢ)
白话读:A 的分数 = 一份人人有的「随机跳转」保底分,加上所有指向 A 的页 Tᵢ 传过来的分——每个 Tᵢ 把自己的分数 PR(Tᵢ) 平摊给它的 C(Tᵢ) 条出链,A 拿到其中一份。那个 1−d 的保底项还顺手解决了两个麻烦:没有出链的「死胡同」页不会把分数吞光,纯内部互链的小圈子也不会把分数无限攒在自己手里。
数学上,PageRank 就是这张巨大链接矩阵的主特征向量;不用去解天文数字规模的方程,只需幂迭代——先给每页一个初始分,按上式更新一轮,再拿更新后的分再算一轮,反复到分数不再明显变化。论文报告:在一张约 3.22 亿条链接的图上,大约 52 次迭代就收敛,而且图规模翻倍时迭代次数增长很慢——所以它能随网页数扩张。
第二个关键想法是锚文本(anchor text):链接上那段可点击的文字,描述的往往不是链接所在的页,而是它指向的页。作者把这段文字算到被指向的那个页头上。这带来三个好处:其一,别人对一个页的集体称呼,常常比该页的自我描述更准、更简洁(无数页用「搜索引擎」链接到谷歌);其二,可以索引那些本身没有文字的对象——图片、程序、数据库;其三,甚至能描述爬虫还没抓到的页。这在当时是相对少见的做法,却极大提升了召回与相关性。
PageRank 是全局的、与查询无关的重要性分;单靠它会把「重要但跑题」的页排上来。所以真正的排序是多信号融合:对每个词的每次出现,谷歌都记下它的位置、字号、是否大写、是否在标题 / 锚文本 / URL 里(论文称之为 hit list,分「特殊命中 fancy hits」与「普通命中」);再结合多词查询里词与词的邻近度、命中类型的权重,最后乘上 PageRank 得到总排序。下图是从抓取到应答的整条数据流。
论文给出的是一个真跑起来的系统(架在 google.stanford.edu)。规模上:抓取并索引了约 2400 万个网页、发现约 7600 万个 URL,词典约 1400 万个词,压缩后的网页仓库达数十 GB。质量上,作者展示了若干代表性查询,结果比当时几家商业搜索引擎明显更相关——尤其在「一个词能匹配无数页」的宽泛查询上,PageRank 把权威页顶到前面的效果最突出。论文也强调整套系统在存储、索引、查询各环节都为「随全网继续膨胀而扩展」做了工程设计。
这篇论文奠定了现代搜索的底层范式:网页的价值不只写在它自己身上,还写在指向它的链接里。「用链接结构判断质量」从此成为搜索引擎标配,也直接催生了谷歌公司,重塑了整个互联网的信息获取方式。它把一个学术洞见(引文分析)工程化到全网尺度,并证明了「链接分析 + 文本检索 + 可扩展架构」这条组合拳的威力。它同期与 Kleinberg 的 HITS 一起,开创了「网络链接分析」这一持续二十多年的研究方向。
① 一句话:论文介绍了搜索引擎原型「谷歌」,核心是用超链接结构给网页质量打分——PageRank + 锚文本。
② 痛点:九十年代搜索只靠文本匹配,「含这个词」≠「是好页」、且极易被堆关键词操纵;人工目录追不上网页增长。
③ PageRank:把链接当带权投票,重要页的票更重,递归定义;等价于「随机冲浪者」停留在该页的长期概率。
④ 机制:PR(A)=(1−d)/N + d·Σ PR(Tᵢ)/C(Tᵢ),d=0.85;是链接矩阵的主特征向量,用幂迭代算,约 52 次收敛、可扩展。
⑤ 锚文本:用指向某页的链接文字描述该页——常比自我介绍更准,还能索引图片 / 未抓取页。
⑥ 融合排序:PageRank(全局)× 文本命中(位置 / 字号 / 标题 / 邻近度);配一整套爬虫→仓库→索引→检索的可扩展架构。
⑦ 结果与影响:约 2400 万页的原型,结果明显更相关;奠定「链接判质」范式,催生谷歌,重塑互联网找信息的方式。
⑧ 局限:查询无关、易被链接作弊、富者愈富;只是现代排序几百信号中的一块;作者关于广告偏见的告诫尤显讽刺。