diff options
Diffstat (limited to 'content/article/search-engine-problem.md')
| -rw-r--r-- | content/article/search-engine-problem.md | 122 |
1 files changed, 84 insertions, 38 deletions
diff --git a/content/article/search-engine-problem.md b/content/article/search-engine-problem.md index 58c7100b..836e508f 100644 --- a/content/article/search-engine-problem.md +++ b/content/article/search-engine-problem.md @@ -16,7 +16,11 @@ toc = true --- -## 混沌初开 +{{< quotecard >}} +For lunatics who are paranoid about web technologies. +{{</ quotecard >}} + +## 为了人类 世界上第一个搜索引擎出现在万维网诞生之前,甚至最初的类似于搜索系统的想法都和互联网没有关系。1945 年,一个名叫万尼瓦尔·布什的工程师发表了一篇名为《As We May Think》[^1]的文章。这篇文章的标题和副标题都很有意思,As We May Think 的意思是「正如我们可能会认为的」,但另一个含义是「正如我们会思考一样」,这篇文章的副标题是:顶尖的美国科学家提出人造机器会开始思考的未来设想。标题的意思是「正如我们会思考一样,人造机器也可能会思考」。 @@ -44,9 +48,9 @@ toc = true 从 memex 的愿景来看,它的确很接近如今的搜索引擎:全人类的信息被索引,放在同一个地方,用很小的设备就能查阅。不过很可惜,memex 只是个假设,布什描述的机械结构应该造价很高,在他提出这个想法的不久后计算机也问世了。 -*咦?说好的会思考的机器呢?原来那个时候的新闻报纸也已经学会用标题哗众取宠造势了,把信息检索称作思考,和把统计规律也称作思考,都是把黑说成白的广告修辞罢了。关于大语言模型究竟会不会思考,可以阅读《[思考是碳基生物的特权吗?](/essays/thinking-privilege/)》。这篇文章的主题是搜索引擎,就不展开了。* +*咦?说好的会思考的机器呢?原来那个时候的新闻报纸也已经学会用标题哗众取宠造势了,把信息检索称作思考,和把统计规律也称作思考,都是把黑说成白的广告修辞罢了。* 关于大语言模型究竟会不会思考,可以阅读《[思考是碳基生物的特权吗?](/essays/thinking-privilege/)》。这篇文章的主题是搜索引擎,就不展开了。 -## 万维网问世以前 +## 混沌初开的互联网 带着「索引全人类知识」的这个愿景,我们来看看 memex 的后来者,也就是现代搜索引擎,是如何出现的吧。 @@ -56,7 +60,7 @@ Archie(「档案」一词删去字母 v 得到的词)是第一个用来搜ç´ 如今人们觉得搜索文件和搜索网页完全不同,但实际上网页就叫作「万维网文档」,是万维网服务器(或者说 Web 服务器)向用户提供的 HTML 格式的文档,所以把 Archie 称作世界上第一个搜索引擎完全不为过。 -能够搜索文档内容的搜索引擎随着 Gopher 协议的诞生出现了。*不,和 Go 语言没有关系。* Gopher 是服务于互联网的,不再是 FTP 服务器。需要说明的是,Gopher 是一种协议而非具体的软件实现,而且,它和 HTTP(超文本传输协议)是同级的,也就是说它不服务于万维网。它还有 IANA 指定的 TCP 端口号 `70`。 +能够搜索文档内容的搜索引擎随着 Gopher[^2] 协议的诞生出现了。*不,和 Go 语言没有关系。* Gopher 是服务于互联网的,不再是 FTP 服务器。需要说明的是,Gopher 是一种协议而非具体的软件实现,而且,它和 HTTP(超文本传输协议)是同级的,也就是说它不服务于万维网。它还有 IANA 指定的 TCP 端口号 `70`。 ") @@ -82,7 +86,7 @@ echo jacks/jack.exe | nc gopher.example.org 70 > jack.exe 上述命令的作用是:将 `jacks/jack.exe` 这个字符串输入 Netcat,让它用这个标识符获取 `gopher.exmaple.org` 上对应的文件,然后把服务器返回的内容写入本地的 `jack.exe` 文件。 -*这简直太方便优雅了,这下谁还用浏览器下载文件?*——某个终端狂热爱好者此时已经忘记自己身处 Web 的统治之下。 +“这简直太方便优雅了,这下谁还用浏览器下载文件?”,某个终端狂热爱好者此时已经忘记 `wget` 的存在——GNU 开发的 `wget` 意思是 Web Get,可见万维网已经完全实现了 Gopher 的功能,使用统一的 URL 作为标识符也比 Gopher 相对于服务器的选择器方便不少。 Gopher 本身不是搜索引擎而是搜索协议,它催生了名为 Veronica 和 Jughead 的搜索引擎,这两个搜索引擎会搜索一个或多个 Gopher 服务器来查找内容,形式上已经很接近如今的搜索引擎了。可惜 Gopher 只兴盛了不到 10 年的时间,它和万维网在同时期发展,到了 90 年代末的时候,它就被万维网给取代了。 @@ -96,7 +100,7 @@ Gopher 本身不是搜索引擎而是搜索协议,它催生了名为 Veronica 在 1993 年六月,MIT 里一个叫作 Matthew Gray 的人发明了世界上第一个网络爬虫(大概是第一个),编程语言也是 Perl。它的作用是「测量万维网的大小」,一直到 1995 年关闭,它都在记录万维网的增长。它会对万维网进行索引,索引的名字叫作 Wandex(*你们怎么都喜欢用 Index 造词?*)。不过,尽管有潜力,这个名为万维网漫游者(The World Wide Web Wanderer)的网络爬虫并没有成为第一个万维网搜索引擎,它只是在测量而已。 -此后还出现了 Aliweb(和阿里巴巴没有关系)、JumpStation 和 WebCrawler 等大大小小的万维网搜索引擎及爬虫,考古虽然很好玩,但一一列举就显得有些冗长了。我们跳跃到 1995 年,那时雅虎给自家的第一个产品 Yahoo! Directory(雅虎目录)增加了搜索功能,即 Yahoo! Search,成为了在万维网上搜索内容的最流行的方式之一。后来也出现了许多类似的产品,不过它们都是基于目录的,用户只能在他们的目录里搜索,不过除了搜索,还可以直接查看目录,不仅仅只有搜索框。 +此后还出现了 Aliweb(和阿里巴巴没有关系)、JumpStation 和 WebCrawler 等大大小小的万维网搜索引擎及爬虫,考古虽然很好玩,但一一列举就显得有些冗长了。我们跳跃到 1995 年,那时雅虎给自家的第一个产品 Yahoo! Directory(雅虎目录)增加了搜索功能,即 Yahoo! Search,成为了在万维网上搜索内容的最流行的方式之一。后来也出现了许多类似的产品,它们都是基于目录的,除了搜索,还可以直接查看目录,不仅仅只有搜索框。 好玩的是,李彦宏(百度的创始人和 CEO)很快加入了战局,甚至比 Google 还早。他在 1996 年开发了一个名叫 RankDex 的页面排名算法,并提交了美国专利,后来他用这个算法成立了百度,于 2000 年在中国启动。 @@ -119,17 +123,17 @@ Gopher 本身不是搜索引擎而是搜索协议,它催生了名为 Veronica 前文我一直表现得十分中立(*好吧我确实嘲笑了微软*),接下来的内容就会更加观点鲜明了。 -表面上看起来,许多企业都提供做搜索引擎服务,他们看起来好像差不多,都只是在搜索网页而已。尽管不少人声称谷歌得到的结果要比百度好得多(这或许是事实),但我们不觉得搜索引擎之间有什么本质区别,毕竟,它们看起来都是一个搜索框,输入一些文字之后会弹出相关的关键词,按下按钮或者回车之后就会展示搜索结果,仅此而已。 +表面上看起来,许多企业都提供搜索引擎服务,他们看起来好像差不多,都只是在搜索网页而已。尽管不少人声称谷歌得到的结果要比百度好得多(这或许是事实),但我们不觉得搜索引擎之间有什么本质区别,毕竟,它们看起来都是一个搜索框,输入一些文字之后会弹出相关的关键词,按下按钮或者回车之后就会展示搜索结果,仅此而已。 但只要仔细想想,就会发现搜索引擎是非常重要的基础设施。对许多人而言,搜索历史的私密性不亚于日记内容,而这些数据都会流经搜索引擎的服务器。这些企业会怎么对待这些数据?直接把他们删掉吗?当然不可能。尽管不是所有人都会注册和登录 Google 账号,搜索引擎(以及任何网络服务)为了牟取利益,都会跟踪用户,以此投放更精准的广告。 -这是怎么做到的?很简单,如果你使用的设备、浏览器、IP 地址、是否使用暗色模式、安装了什么浏览器拓展,这些信息都基本一致,那网站(以及它们插入的广告)就会把你当作同一个人,并对你的浏览路径和行为进行分析。由于不同的网站会插入同一个提供商的广告(比如 Google Adsense),所以追踪器可以跨站追踪你,进一步挖掘你的喜好。就算不搜索任何东西,仅仅是浏览,都会被收集很多数据,很难想象搜索引擎能掌握的信息有多少了,更可怕的是,无论是广告还是搜索记录,都掌握在一个服务商手里——Google。可以说,如果你经常访问各种插入 Google 广告的网站并且使用 Google 搜索,Google 对你的了解可能已经远超你的亲人了。顺带一提,这些不怀好意的企业还会相互交易这些数据。 +这是怎么做到的?很简单,如果你使用的设备、浏览器、IP 地址、是否使用暗色模式、安装了什么浏览器拓展,这些信息都基本一致,那网站(以及它们插入的广告)就会把你当作同一个人,并对你的浏览路径和行为进行分析。由于不同的网站会插入同一个提供商的广告(比如 Google Adsense),所以追踪器可以跨站追踪你,进一步挖掘你的喜好。就算不搜索任何东西,仅仅是浏览,都会被收集很多数据,很难想象搜索引擎能掌握的信息有多少了,更可怕的是,无论是广告还是搜索记录,都掌握在一个服务商手里——Google。可以说,如果你经常访问各种插入 Google 广告的网站并且使用 Google 搜索,Google 对你的了解可能已经远超亲朋好友了。顺带一提,这些不怀好意的企业还会相互交易这些数据。 广告最可恶的并非对上网体验的负面影响,而是对隐私的极大侵犯。 如果你想说:“我没干什么坏事,只是在网上看点东西而已,为什么在乎隐私?”,可以阅读我在[第 15 期周刊](/weekly/15)分享过的[这篇文章](https://timsh.org/tracking-myself-down-through-in-app-ads/),作者通过应用内的广告,分析网络流量和数据包,成功推导出了自己所处的地理位置。因为被迫观看个性化广告,导致所有人都有办法了解你的地理位置,这难道不是很可怕吗?不要总是想象坏事不会发生在你身上。 -根据 StatCounter[^2] 提供的数据,截止 2026 年二月,Google 占市场份额的 90.01%,Bing 占据 4.98%,第一个流行的万维网搜索引擎 Yahoo! 仅占 1.39%。这个数据无论怎么看都很恐怖。难以想象 Google 这家企业掌握了多少用户数据,而现在还有一群人想尽办法把自己更私密的内容交给他们*善解人意的*大语言模型。 +根据 StatCounter[^3] 提供的数据,截止 2026 年二月,Google 占市场份额的 90.01%,Bing 占据 4.98%,第一个流行的万维网搜索引擎 Yahoo! 仅占 1.39%。这个数据无论怎么看都很恐怖。难以想象 Google 这家企业掌握了多少用户数据,而现在还有一群人想尽办法把自己更私密的内容交给他们*善解人意的*大语言模型。 追踪器的问题或许可以通过拦截器(比如 [uBlock Origin](https://github.com/gorhill/uBlock))或直接屏蔽广告域名的 DNS 服务器(比如 [AdGuard DNS](https://adguard-dns.io/))解决大部分,但在勉强保证隐私的情况下,你也要面对一系列问题。 @@ -147,7 +151,7 @@ Gopher 本身不是搜索引擎而是搜索协议,它催生了名为 Veronica 说回隐私,如今提到「注重隐私的搜索引擎」,不少人都会说 DuckDuckGo。我也使用了这个搜索引擎好几年,它依然是我在大部分时候的备选搜索引擎。不过当我开始对隐私这件事情较真起来时,我把怀疑的目光第一个投向了 DuckDuckGo:你说你完全不收集用户数据,尊重隐私,那你怎么赚钱呢? -DuckDuckGo:我们通过隐私广告和订阅服务盈利。[^3] +DuckDuckGo:我们通过隐私广告和订阅服务盈利。[^4] 嗯?隐私广告?*Well, that just...* @@ -155,7 +159,7 @@ DuckDuckGo:我们通过隐私广告和订阅服务盈利。[^3] 所以这个「Private ads」到底是什么呢?说到底不还是广告吗? -据 DuckDuckGo 自己的说法,他们的广告不跟踪用户,也就没有我们前面讨论的一大堆麻烦的隐私问题,所以被称作隐私广告。他们的广告尽管显示在最前面,但会在页面标题之后标注 `AD`,表示这是广告,而且 DuckDuckGo 鼓励用户举报广告,一旦发现与搜索关键词无关的广告或者其他低质量广告,就可以向他们报告问题。 +据 DuckDuckGo 自己的说法,他们的广告不跟踪用户,也就没有我们前面讨论的一大堆麻烦的隐私问题,所以被称作隐私广告。的广告显示在最前面,但会在页面标题之后标注 `AD`,表示这是广告,而且 DuckDuckGo 鼓励用户举报广告,一旦发现与搜索关键词无关的广告或者其他低质量广告,就可以向他们报告问题。 听起来还不错,如果看点广告意味着能够免费用尊重隐私的搜索引擎,那权衡利弊之后,似乎也不是不能使用。 @@ -173,17 +177,17 @@ DuckDuckGo:我们通过隐私广告和订阅服务盈利。[^3] > unfortunately, our Microsoft search syndication agreement prevents us from doing more to Microsoft-owned properties. However, we have been continually pushing and expect to be doing more soon.<br/> > 不幸的是,我们的微软搜索同步协议组织我们对微软所有的设施做更多的事情。不过,我们正在持续推进,期待能够很快做更多。 -从 2022 年 8 月开始,DuckDuckGo 的浏览器开始屏蔽微软的追踪器了,争议似乎结束了,然而,无法忽略的事实是:**他们和微软的确有协议**。我们不知道这个协议的内容,不知道微软对 DuckDuckGo 限制了多少,他们之间的合作是商业的,那么微软必定能在其他方面影响 DuckDuckGo。比如,DuckDuckGo 浏览器如今仍然通过 MSN(微软的门户网站)打开网络文章。[^4] +从 2022 年 8 月开始,DuckDuckGo 的浏览器开始屏蔽微软的追踪器了,争议似乎结束了,然而,无法忽略的事实是:**他们和微软的确有协议**。许多看起来独立的搜索引擎都依赖微软的 Bing 搜索,微软通过他们展示广告,他们获得广告分成,这种合作当然有协议。我们不知道这个协议的内容,不知道微软对 DuckDuckGo 限制了多少,他们之间的合作是商业的,那么微软必定能在其他方面影响 DuckDuckGo。比如,DuckDuckGo 浏览器如今仍然通过 MSN(微软的门户网站)打开网络文章。[^5] -就算在这方面没什么好担心的,DuckDuckGo 的搜索结果在很大程度上依赖于微软的 Bing 这一事实就足以造成很多问题。前不久,Bing 封锁了 Neocities[^5],导致 DuckDuckGo 也受到牵连。[Neocities](https://neocities.org/) 是很多复古个人网站被托管的地方,整体上是一个社交网络,有很浓厚的社区文化,并且网站托管完全免费,依靠支持者的有偿捐赠维持运行。尽管封锁在不久后解除了,但这难道不值得警醒吗? +就算在这方面没什么好担心的,DuckDuckGo 的搜索结果在很大程度上依赖于微软的 Bing 这一事实就足以造成很多问题。前不久,Bing 封锁了 Neocities[^6],导致 DuckDuckGo 也受到牵连。[Neocities](https://neocities.org/) 是很多复古个人网站被托管的地方,整体上是一个社交网络,有很浓厚的社区文化,并且网站托管完全免费,依靠支持者的有偿捐赠维持运行。尽管封锁在不久后解除了,但这难道不值得警醒吗? -除了可疑的商业牵连,DuckDuckGo 之前陷入过一些争议。在 2022 年,为了回应俄乌战争,Weinberg 发推特表示他们会降级(down-rank)和俄罗斯的错误信息有关的站点。[^6]原推特链接目前已经无法访问。 +除了可疑的商业牵连,DuckDuckGo 之前陷入过一些争议。在 2022 年,为了回应俄乌战争,Weinberg 发推特表示他们会降级(down-rank)和俄罗斯的错误信息有关的站点。[^7]原推特链接目前已经无法访问。 > At DuckDuckGo, we've been rolling out search updates that down-rank sites associated with Russian disinformation. 我不看好这种做法,我认为明智之举是保持沉默,至少不要对搜索引擎做出任何修改。作为搜索引擎,我更希望你在面对政治事件时**客观中立**地呈现**所有来源**的信息。一些开源项目在网站和 README 中添加有关的信息还能理解,但 DuckDuckGo 是**搜索引擎**。还记得 memex 的愿景吗?全人类知识的索引?这样的东西不应该是尽可能减少偏见的吗?从另一个角度来理解,DuckDuckGo 在政治话题上表态也可能是为了赢得美国民众的支持,因此来获得商业上的收益。 -毕竟,DuckDuckGo 是一家要盈利的商业公司,位于美国。在 2008 年创立的一开始,DuckDuckGo 并不是保障隐私的搜索引擎,它是在 2010 年才开始以「隐私」为卖点和其他搜索引擎做出差异化的。[^7] +毕竟,DuckDuckGo 是一家要盈利的商业公司,位于美国。在 2008 年创立的一开始,DuckDuckGo 并不是保障隐私的搜索引擎,它是在 2010 年才开始以「隐私」为卖点和其他搜索引擎做出差异化的。[^8] 别忘了,曾经的 FireFox 也是注重隐私的产品,可现在呢? @@ -193,7 +197,7 @@ DuckDuckGo:我们通过隐私广告和订阅服务盈利。[^3] 我们知道 Google 很坏,Bing 很坏,DuckDuckGo 也有些问题,但…… 我们能做什么呢?我们并不能驱使他们做出改变,毕竟,我们是免费使用的用户。尽管我们的注意力对它们来说是卖给广告投放者的产品,但整体而言,少数用户的离开并不会对他们的业务造成很大冲击。 -这也是使用免费产品的代价:我们似乎无法施展消费者的基本权利。 +这也是使用免费产品的代价之一:我们似乎无法施展消费者的基本权利。 那有没有这样一个搜索引擎,他不投放广告,不把用户的注意力当作产品,而是真的把用户当作用户,直接从用户那里收取使用费?这样一来,如果这个搜索引擎有什么令人不满的地方,我们可以直接向其施压:*你要是不把这个问题给我修好,我下个月就不续费了!* @@ -203,13 +207,13 @@ DuckDuckGo:我们通过隐私广告和订阅服务盈利。[^3] Kagi 是非常观点鲜明的付费搜索引擎,他们最特立独行的一点就是:你必须给钱才能用这个搜索引擎!注册 Kagi 之后,用户会获得 100 次免费限额,搜索 100 次之后就需要续费。最低额度的订阅方案是每个月 5 美元,每月可以搜索 300 次;再者是 10 美元的方案,搜索次数无限额;他们还有 25 每月的方案,但主要的提升点只是增加了更好的 AI 模型,我个人不觉得有什么用处。 -截止我撰写这篇文章的时候,根据 Kagi 官方的[统计数据](https://kagi.com/stats),他们一共有 67875 个付费用户[^8]。六万多的用户的确不多,不过增速还不错,最近半个月增加了一千多个新用户。 +截止我撰写这篇文章的时候,根据 Kagi 官方的[统计数据](https://kagi.com/stats),他们一共有 67875 个付费用户[^9]。六万多的用户的确不多,不过增速还不错,最近半个月增加了一千多个新用户。 Kagi 是很新的搜索引擎,在 2018 年的时候才成立。他们的产品理念是:你给钱,我们提供好的服务,就这么简单。 尽管 Kagi 也是商业软件,仅仅是部分开源,但从盈利模式上来看,Kagi 与用户的关系要健康得多。他不从广告商那里赚钱,而是直接从用户那里赚钱,服务好用户就是他们的最高目的。 -根据 Kagi 的文档[^9],他们有自己的万维网索引,名为 Teclis 和 TinyGem,他们的搜索结果也包括来自其他搜索提供商的内容,这些 API 请求是在他们的服务器上进行的,经过匿名化处理,不会跟踪用户。他们并没有表示自己有没有使用 Bing 或者 Google 的搜索结果,而是声称使用了 Marginalia[^10] 等特殊搜索引擎的 API,还会直接从 Apple、Wikipedia、Yelp 和 TripAdvisor 等垂直信息源直接获取内容。说实在的,我很希望他们能给出详细的列表,让用户了解到他们到底使用了哪些 API。 +根据 Kagi 的文档[^10],他们有自己的万维网索引,名为 Teclis 和 TinyGem,他们的搜索结果也包括来自其他搜索提供商的内容,这些 API 请求是在他们的服务器上进行的,经过匿名化处理,不会跟踪用户。他们并没有表示自己有没有使用 Bing 或者 Google 的搜索结果,而是声称使用了 Marginalia[^11] 等特殊搜索引擎的 API,还会直接从 Apple、Wikipedia、Yelp 和 TripAdvisor 等垂直信息源直接获取内容。说实在的,我很希望他们能给出详细的列表,让用户了解到他们到底使用了哪些 API。 Kagi 的优点是他非常关注来自小互联网的高质量内容,也就是那些不是以盈利为目的撰写的博客文章。他们维护的 [smallweb](https://github.com/kagisearch/smallweb) 列表中的小型个人网站会显示在搜索靠前的位置,并且还有 Small Web 模式,可以只搜索来自这些网站的内容。这个列表是开源的,允许提交自己的网站,不过目前只接受英文内容,而且如果要提交自己的网站,还要同时提交三个其他人的网站。Kagi 还会降级(down-rank)那些使用了大量跟踪器和插入了很多广告的网页,如果某个搜索结果里有太多的跟踪器,Kagi 会显示橙色的感叹号提醒用户。此外,如果一个网页有付费墙(即必须付钱才能继续阅读),Kagi 也会显示显眼的标记提醒用户。 @@ -227,13 +231,11 @@ Kagi 声称自己尊重隐私,毕竟没有付费广告,但隐私和匿名之 Kagi 的确使用大语言模型,主要用在搜索时快速生成答案(被称作 Quick Answer),和专门的 Kagi Assistant 应用。Quick Answer 很克制,只有搜索关键词以 `?` 结尾时才会启动 Quick Answer,至少我没有在搜索时写问号的习惯,如果真的想要快速了解,才会按需写上问号(这种需求非常少),或者按下和搜索结果一起显示的 Quick Answer 按钮。 -至于 Kagi Assistant,它调用的是 OpenAI、Moonshot AI、DeepSeek、Anthropic 和 Google 的模型,还有 Quick 助理,没有写明使用了什么模型。我试过 Assistant,他给出的答案非常简练,不会说「You're absolutely right!」或者试图当你的心理治疗师,尽管响应速度其实并不快。 +至于 Kagi Assistant,它调用的是 OpenAI、Moonshot AI、DeepSeek、Anthropic 和 Google 的模型,还有 Quick 助理,没有写明使用了什么模型。我试过 Assistant,他给出的答案非常简练,不会说「You're absolutely right!」或者试图当你的心理治疗师。我使用搜索助理的主要场景是为某个需求找到合适的现有软件和解决方案,Assistant 很合适,但也不是刚需。 诚然,我更希望 Kagi 没有 AI 功能,但作为商业公司,他总要满足用户的要求,而总有人想要 AI,而这种程度的克制在我眼里已经很好了。我希望他们可以推出一个完全没有 AI 的订阅方案,这样我就可以不用为我不想要的功能付费了。 -总结一下,Kagi 是为数不多的付费搜索引擎,他们不服务于广告商只服务于客户,他们致力于改善搜索体验,让上网体验更加人性化。另一方面,他的确是一家商业公司,核心代码不是开源的,业务不全是公开透明的,在力所能及的范围内做得再好,都不能改变这个事实。 - -说了些好坏参半的话,但整体而言我是很喜欢 Kagi 的服务的,并且愿意付费,它真的让我的上网体验清静了不少,但我还在观望,随时准备退出。 +目前为止,我对 Kagi 的整体印象还不错,并且愿意付费,它真的让我的上网体验清静了不少,但我还在观望,随时准备退出,毕竟订阅费再加两美元就足够[自由软件基金会](https://my.fsf.org/join)会员的会费了,属实不便宜。 目前看来,Kagi 对大多数愿意付费的人来说都是非常好的选择,对非常在意匿名和隐私,并且更偏好自由软件的用户,可能需要再斟酌斟酌。 @@ -267,7 +269,7 @@ Ecosia 是位于德国柏林的非盈利组织,他们提供搜索服务,还æ 你不是非盈利(non-profit)组织吗?所谓的利润(profit)是什么? -广告。 +广告,答案永远都是广告。 实际上 Ecosia 是元搜索引擎,作为把大部分收益都花在环保项目上的组织,他们没有资源维护自己的万维网索引,所以他们使用的是 Bing 的搜索结果,并且和 DuckDuckGo 一样,通过微软的广告来实现营收。*为什么有这么多搜索引擎都是 Bing 的皮肤?* @@ -293,19 +295,19 @@ Marginalia 使用的开源协议是 AGPL,是自由软件。不由科技公司ç 从名字上看,marginal 的意思是「边缘的」「非主流的」,它的搜索结果大多数来自小网站(这也是为什么 Kagi 要使用它的 API 作为来源之一)、博客和一些学术内容。类似的搜索引擎还有 [Mojeek](https://www.mojeek.com/),不过后者位于英国(非欧盟国家),由公司运营。 -Marginalia 的存在和他的理念让我开始思考,我使用搜索引擎究竟是为了什么?难道不是为了获取高质量的内容吗?Marginalia 表示搜索引擎应该更多样化,我想与其使用通用型的搜索引擎,不如使用多个更有针对性的搜索引擎,在搜索高质量的文章时使用 Marginalia,在寻找好的软件产品时使用 ProductHunt 和 AlternativesTo,在寻找开源项目时使用 Codeberg、GitLab 和 Codeberg。这或许没有那么方便,但不失为一种解决方案。 +Marginalia 的存在和它的理念让我开始思考,我使用搜索引擎究竟是为了什么?难道不是为了获取高质量的内容吗?Marginalia 表示搜索引擎应该更多样化,我想与其使用通用型的搜索引擎,不如使用多个更有针对性的搜索引擎,在搜索高质量的文章时使用 Marginalia,在寻找好的软件产品时使用 ProductHunt 和 AlternativesTo,在寻找开源项目时使用 Codeberg、GitLab 和 Codeberg,以此类推。这或许没有那么方便,但不失为一种解决方案。 -## 搜索引擎的终极解决方案 +## 搜索引擎的终极解决方案? -读到这里,关注隐私但不愿意投入太多的人可能已经选择 DuckDuckGo 或者 Qwant,愿意付费获得好的搜索体验的人可能在尝试 Kagi 或者 Brave Search,认同环保理念的可能打开了 Ecosia,认同 Marginalia 理念的人可能开始同时使用多个搜索引擎,但如果你到现在也和我一样悬而未决,就请继续读下去吧。 +读到这里,关注隐私但不愿意投入太多的人可能已经选择 DuckDuckGo 或者 Qwant,愿意付费获得好的搜索体验的人可能在尝试 Kagi 或者 Brave Search,认同环保理念的可能打开了 Ecosia,认同 Marginalia 理念的人可能开始同时使用多个搜索引擎,但如果你和我一样不愿意妥协,就请继续读下去吧。 *是的,一切的终极解决方案都是自托管。* 前文提到,搜索引擎有两种:一种是有网络爬虫,维护万维网索引,拥有基础设施的搜索引擎;另一种是元搜索引擎,他们使用其他搜索引擎的搜索结果。显然第一种搜索引擎所耗费的服务器资源更多,开销更大,后者则更容易负担。 -不过这个所谓的开销究竟有多少呢?如果参考 Marginalia,它只索引和爬取一部分万维网,主要是小网站、博客和学术网站,开销是一个月 200 美元。不 Marginalia 提供 API 并且供所有人使用,所以这个开销也包含网络资源等。如果只考虑计算开销和储存开销,自己管理爬虫和索引究竟容不容易负担呢? +不过这个所谓的开销究竟有多少呢?如果参考 Marginalia,它只索引和爬取一部分万维网,主要是小网站、博客和学术网站,开销是一个月 200 美元。不过 Marginalia 提供 API 并且供所有人使用,所以这个开销也包含网络资源等。如果只考虑计算开销和储存开销,自己管理爬虫和索引究竟容不容易负担呢? -根据 [YaCy Wiki](https://wiki.yacy.net/index.php?title=En:Requirements),自托管一个 YaCy 搜索引擎至少需要 25GB 存储,内存至少需要 256MB——*真的吗?你可是用 Java 写的。* 我在[这个 Reddit 帖子](https://www.reddit.com/r/selfhosted/comments/19eqv5k/google_search_self_hosted_alternative/)下找到了使用 YaCy 一两年的用户的回复,他表示 YaCy 很快就把服务器一两个 TB 的存储吃满了,他不得不用一些优化策略解决问题。 +根据 [YaCy Wiki](https://wiki.yacy.net/index.php?title=En:Requirements),自托管一个 YaCy 搜索引擎至少需要 25GB 存储,内存至少需要 256MB——*真的吗?你可是用 Java 写的。* 我在[这个 Reddit 帖子](https://www.reddit.com/r/selfhosted/comments/19eqv5k/google_search_self_hosted_alternative/)下找到了使用 YaCy 一两年的用户的回复,他表示 YaCy 很快就把服务器一两个 TB 的存储吃满了,他不得不用一些优化策略解决问题,而他只索引了一小部分域名。 如果只是索引一两个网站,YaCy Wiki 给出的数据可能是对的,但如果真的要代替 Google 等搜索引擎,普通人能负担得起的服务器肯定是不行的,就算尽可能减少索引的网站,也会吃掉大量的储存。计算开销可能不必担心,但爬虫又是另一个问题。所有的机器人都应该有 `User-agent` 标识表明自己的身份,比如谷歌爬虫的标识叫作 `Googlebot`。众所周知,几乎所有网站都会提供 `robots.txt`,表示他们欢迎哪些机器人,不欢迎哪些机器人。尽管恶意的 AI 爬虫可能会违反 `robots.txt` 给服务器带来极大负担,但我们是有道德的,自己托管爬虫当然要尽可能遵守 `robots.txt`。 @@ -313,23 +315,67 @@ Marginalia 的存在和他的理念让我开始思考,我使用搜索引擎究 完全自托管搜索引擎的基础设施很困难,有大量资源和精力的人可以尝试。对于其他人,可以选择自托管元搜索引擎,就和 DuckDuckGo 使用 Bing 的搜索结果一样,我们可以从多个搜索引擎聚合搜索结果。 -[SearXNG](https://docs.searxng.org/#) +[SearXNG](https://docs.searxng.org/#) 就是很好的例子,它能够聚合来自最多 250 个搜索服务的内容,不只是 Google 和 DuckDuckGo 这类通用型搜索引擎,还能从 Wikipedia 等信息源直接聚合搜索内容。 + +你可以把 SearXNG 当作聚合型的隐私前端,你可以在不运行不自由的 JavaScript 代码、不被追踪的情况下,使用主流搜索引擎的搜索服务。搜索请求是在服务端发出的,内容聚合完成之后才会显示在前端。尽管用 Python 编写,占用的资源并不算多,毕竟它做的只是向多个服务发送请求,然后把返回的结果聚合在一起而已。自托管的成本很低。 + +听起来很棒,但缺点是什么? + +{{< gallery >}} + + +{{</ gallery >}} + +*请求超时、拒绝服务、暂停访问,以及超时和更多的超时。* + +DuckDuckGo 能使用 Bing 的服务是因为他们形成了商业合作,普通人在不访问 Bing 的前提下使用他们的 API 当然会受到极大的限制,搜索稳定性很难保证。用户先向 SearXNG 实例发送请求,实例再向搜索服务发送请求,搜索服务把搜索结果返回给实例,实例做了处理之后再发送给用户。这个中间人的存在本来就会让搜索速度变慢,如果稳定性还得不到保证,搜索体验就很折磨了。 + +搜索质量也不能说稳定,从 SearXNG 得到什么结果完全取决于配置了哪些搜索服务。有时候我在一个 SearXNG 实例上搜索 `neovim linter` 会得到相关插件的代码仓库,而在另一个 SearXNG 实例上搜索相同的关键词,得到的却是「NeoVim 和 Vim 有什么区别?」的相关讨论。有时候同一个实例的一些服务会超时,另一些服务则能够正常访问,搜索质量也会不一致。 + +SearXNG 有不少[公共实例](https://searx.space/),你可以自己试试看。 + +除了稳定性,SearXNG 几乎可以说是匿名用户的完美解决方案:如果你不信任任何搜索服务,就用尊重隐私、不受利益驱动、运行自由代码的中间人服务帮你搜索;如果你不信任任何人,就自托管 SearXNG,确保数据不会滞留在别人的服务器上。只可惜,稳定性真的很重要,如果真的需要匿名,在 Tor 浏览器上使用 DuckDuckGo 等搜索引擎搜索也能达到很好的效果。 + +## 全都是权衡取舍 + +*说到底,原来你没有一个完美的解决方案吗?* + +是的,完美的解决方案是不存在的,或许搜索引擎也有一个「不可能三角」——搜索质量好、保障隐私和成本低,这三者无法同时达成。比如,使用 Google 或许能做到搜索质量好和成本低(尽管前者有待商榷),但绝对不可能保障隐私;使用 Kagi 或许能做到搜索质量好和保障隐私,但需要支付订阅费;使用 SearXNG 能做到很好的隐私保护,使用公共实例和自托管的成本都不高,但搜索质量不稳定。 + +*等等,DuckDuckGo 好像做到了三者?* + +不过,也可以认为使用 DuckDuckGo 支付的并非是金钱成本,毕竟广告也会消耗心智资源。或者说,这个不可能三角并不是定性的,而是有程度的,比如 SearXNG 和 Kagi 的隐私保护和匿名程度就又很大差别,不能一概而论。总而言之,很难找到在各方面都完美的搜索引擎。 + +所以,使用什么搜索引擎需要各位自己权衡取舍,可以查看 Wikipedia 上的[搜索引擎列表](https://en.wikipedia.org/wiki/List_of_search_engines)自行对比选择。总结下来,我认为选择适合自己的搜索引擎需要考虑一下几点: + +| 要点 | 描述 | 例子 | +| :- | :- | :- | +| 是否收集用户数据、跟踪用户 | 追踪器可以跨站追踪用户,甚至精确到地理位置,是对隐私的极大侵犯 | Google 和 Bing | +| 是否有广告 | 无论有没有追踪器,广告都会影响体验 | 免费的搜索引擎几乎都有广告 | +| 搜索质量如何 | 搜索结果与关键词的相关性,以及内容农场和 AI 废料在搜索结果中的占比等等 | 百度就是极佳的反例 | +| 是否有自己的索引 | 没有自己索引的搜索引擎依赖其他的服务,可能受到大企业的影响 | 包括 DuckDuckGo 在内的大量搜索引擎都使用 Bing 的索引 | +| 对语言模型的态度 | 是否提供、如何提供大模型相关的功能,这要看你自己对 AI 的态度是怎样的,然后再决定这个要素是否重要 | Google 几乎在每次搜索都会显示 AI 总结;而 Kagi 只会在关键词以 `?` 结尾的时候显示 | +| 如何处理用户数据 | 搜索引擎会不会保留搜索历史,会不会对数据做匿名化处理 | Marginalia 会在 24 小时后删除记录 | +| 价格如何 | 付费的搜索引擎可能提供更好的服务 | Kagi 是付费搜索引擎;Brave Search 有付费方案 | +| 能否匿名 | 需要登录的服务对保持匿名的用户来说有风险 | DuckDuckGo 可以不登录使用;Kagi 必须登录,但提供了 Privacy Pass 作为替代方案 | +| 地域 | 考虑公司、组织和服务器所在国家的审查机制、政治氛围和相关法律 | 欧盟地区有 GDPR 法案保护用户数据;瑞士的隐私政策最为严格 | [^1]: 参见:[As We May Think - Wikipedia](https://en.wikipedia.org/wiki/As_We_May_Think) -[^2]: 来源:[Search Engine Market Share Worldwide](https://gs.statcounter.com/search-engine-market-share3) -[^3]: 来源:[How does DuckDuckGo make money?](https://duckduckgo.com/duckduckgo-help-pages/company/how-duckduckgo-makes-money) -[^4]: 来源:[DuckDuckGo - Wikipedia](https://en.wikipedia.org/wiki/DuckDuckGo#Associations_with_Microsoft:~:text=Today%2C%20DuckDuckGo%20continues%20to%20open%20articles%20through%20MSN%2C%20similar%20to%20how%20Google%20utilizes%20AMP.) +[^2]: 参见:[Gopher (protocol) - Wikipedia](https://en.wikipedia.org/wiki/Gopher_(protocol)) +[^3]: 来源:[Search Engine Market Share Worldwide](https://gs.statcounter.com/search-engine-market-share3) +[^4]: 来源:[How does DuckDuckGo make money?](https://duckduckgo.com/duckduckgo-help-pages/company/how-duckduckgo-makes-money) -[^5]: 来源:[Neocities Is Blocked by Bing](https://blog.neocities.org/blog/2026/01/27/bing-block) +[^5]: 来源:[DuckDuckGo - Wikipedia](https://en.wikipedia.org/wiki/DuckDuckGo#Associations_with_Microsoft:~:text=Today%2C%20DuckDuckGo%20continues%20to%20open%20articles%20through%20MSN%2C%20similar%20to%20how%20Google%20utilizes%20AMP.) -[^6]: 参见:[DuckDuckGo to Down-Rank Sites Associated With Russian Disinformation](https://www.pcmag.com/news/duckduckgo-to-down-rank-sites-associated-with-russian-disinformation) +[^6]: 来源:[Neocities Is Blocked by Bing](https://blog.neocities.org/blog/2026/01/27/bing-block) -[^7]: 来源:[DuckDuckGo #Early_year - Wikipedia](https://en.wikipedia.org/wiki/Duckduckgo#Early_years) +[^7]: 参见:[DuckDuckGo to Down-Rank Sites Associated With Russian Disinformation](https://www.pcmag.com/news/duckduckgo-to-down-rank-sites-associated-with-russian-disinformation) -[^8]: 顺带一提,他们似乎还表示会在成员数量达到十万时公布一个小惊喜,他们之前达到两万用户的时候还给前两万个用户发了免费的 T 恤和贴纸。 +[^8]: 来源:[DuckDuckGo #Early_year - Wikipedia](https://en.wikipedia.org/wiki/Duckduckgo#Early_years) -[^9]: 参见:[Search Sources - Kagi's Docs](https://help.kagi.com/kagi/search-details/search-sources.html) +[^9]: 顺带一提,他们似乎表示会在成员数量达到十万时公布一个小惊喜,他们之前达到两万用户的时候给前两万个用户发了免费的 T 恤和贴纸。 -[^10]: Marginalia 是由个人开发和维护的关注小网站的开源搜索引擎,我不知道 Kagi 有没有因为使用他们的 API 给 Marginalia 捐赠。大概率没有,因为我没有在 Marginalia 的赞助者名单里找到 Kagi;Kagi 在[文档](https://help.kagi.com/common/company/donations.html)里表示自己给 Crystal 和 Python 编程语言捐赠,但没有提到 Marginalia。 +[^10]: 参见:[Search Sources - Kagi's Docs](https://help.kagi.com/kagi/search-details/search-sources.html) +[^11]: Marginalia 是由个人开发和维护的关注小网站的开源搜索引擎,我不知道 Kagi 有没有因为使用他们的 API 给 Marginalia 捐赠。大概率没有,因为我没有在 Marginalia 的赞助者名单里找到 Kagi;Kagi 在[文档](https://help.kagi.com/common/company/donations.html)里表示自己给 Crystal 和 Python 编程语言捐赠,但没有提到 Marginalia。 |
