新闻
模型
产品
keyboard_arrow_down
读取器
读取URL或搜索为大模型提供更好的依据。
向量模型
世界一流的多模态多语言向量模型。
重排器
世界一流的重排器,最大限度地提高搜索相关性。
深度搜索
搜索、读取并推理直到找到最佳答案。
更多的
keyboard_arrow_down
分类器
图片和文本的零样本和少样本分类。
切分器
将长文本切分成块或词元。

API 文档
为您的AI 编程助手 IDE 或大模型自动生成代码
open_in_new


公司
keyboard_arrow_down
关于我们
联系销售
实习生计划
加入我们
open_in_new
下载Logo
open_in_new
条款及条件


登录
login
写作动机
实验设置
方法论
实现
结果
发现
最终思考
技术文章
七月 18, 2024

不,你不能用 Reranker 来提升 SEO

但如果你从事 SEO 工作,了解另一个维度的视角会很有趣:理解 embeddings(嵌入)和 rerankers(重排序器)在现代搜索系统中扮演的角色。
Abstract background with dynamic green particles and lines on a black backdrop, emitting a sense of motion and energy.
Han Xiao
Han Xiao • 11 分钟的读取量

随着最近发布的 jina-reranker-v2-multilingual,在我参加 ICML 之前有一些空闲时间,所以我决定写一篇关于我们的重排模型的文章。在网上搜索灵感时,我发现在搜索结果顶部出现了一篇文章,声称重排器可以提升 SEO。听起来很有趣,对吧?我也这么觉得,因为在 Jina AI,我们研究重排器,而且作为公司网站的管理员,我一直对提升我们的 SEO 很感兴趣。

Screenshot of Google search results for "reranker seo" showing articles on enhancing search with reranking models.
一篇由 ChatGPT 生成的文章声称 Reranker 可以提升 SEO。像"in the realm of"这样的短语立即暴露了它的本质。

然而,在阅读完整篇文章后,我发现这完全是由 ChatGPT 生成的。整篇文章只是反复强调"重排对你的业务/网站很重要"这一观点,却从未解释如何实现、背后的数学原理,或如何实施。这完全是浪费时间。

你不能把 Reranker 和 SEO 强行结合在一起。搜索系统的开发者(或者通常是内容消费者)关心重排器,而内容创作者关心 SEO 以及他们的内容在系统中的排名是否更高。他们基本上站在桌子的对立面,很少交流想法。让重排器提升 SEO 就像让铁匠升级你的火球术,或者在中餐馆点寿司一样。它们并非完全不相关,但显然是错误的目标。

想象一下,如果 Google 邀请我去他们的办公室,询问我对他们的重排器是否将 jina.ai 排名足够高的意见。或者如果我完全控制 Google 的重排算法,每当有人搜索 "information retrieval" 时,就将 jina.ai 硬编码到顶部。这两种情况都毫无意义。那么为什么我们会有这样的文章呢?好吧,如果你问 ChatGPT,就很容易明白这个想法最初是从哪里来的。

Informational content on improving SEO using reranker, highlighting content optimization, keyword relevance, and content qual

tag写作动机

如果那篇 AI 生成的文章在 Google 上排名第一,我想写一篇更好、质量更高的文章来取代它。我不想误导人类或 ChatGPT,所以我在这篇文章中的观点很明确:

不,你不能使用重排器来提升 SEO。但是,如果你从事 SEO 工作,从另一个角度来看并了解嵌入模型和重排器在现代搜索系统中的作用可能会很有趣。这些知识可能会帮助你更有策略地优化内容。

具体来说,在这篇文章中,我们将查看从 Google Search Console 导出的真实搜索查询,看看它们与文章的语义关系是否能说明它们在 Google 搜索中的展示次数和点击次数。我们将通过三种不同的方式来评分语义关系:词频、嵌入模型(jina-embeddings-v2-base-en)和重排模型(jina-reranker-v2-multilingual)。像任何学术研究一样,让我们先列出我们要研究的问题:

  1. 语义分数(查询,文档)是否与文章的展示次数或点击次数相关?
  2. 更复杂的模型是否能更好地预测这种关系?或者词频就足够了?

tag实验设置

在这个实验中,我们使用来自 jina.ai/news 网站的真实数据,这些数据从 Google Search Console (GSC) 导出。GSC 是一个网站管理员工具,可让你分析来自 Google 用户的自然搜索流量,比如有多少人通过 Google 搜索打开你的博客文章以及搜索查询是什么。从 GSC 可以提取许多指标,但在这个实验中,我们专注于三个:查询、展示次数和点击次数。查询是用户在 Google 搜索框中输入的内容。展示次数衡量 Google 在搜索结果中显示你的链接的次数,让用户有机会看到它。点击次数衡量用户实际打开它的次数。请注意,如果 Google 的"检索模型"给你的文章相对于用户查询分配了高相关性分数,你可能会获得很多展示次数。但是,如果用户发现结果列表中的其他项目更有趣,你的页面可能仍然得不到点击。

Google Search Console dashboard interface displaying performance graphs and various analytics overviews, such as queries and
GSC 界面和我们 ColBERT 博客文章的查询、点击、展示数据。注意右上角的"导出"按钮,点击它会给你一个 zip 文件。这个文件就是我们实验需要的。另外,由于我们对排名前 7 的博客文章感兴趣,我们需要重复这个导出操作 7 次。

我导出了 jina.ai/news 中搜索量最大的 7 篇博客文章最近 4 个月的 GSC 指标。每篇文章大约有 1,000 到 5,000 次点击和 10,000 到 90,000 次展示。因为我们想查看每个搜索查询相对于其对应文章的查询-文章语义关系,你需要在 GSC 中点击每篇文章并通过点击右上角的 Export 按钮导出数据。它会给你一个 zip 文件,当你解压它时,你会找到一个 Queries.csv 文件。这就是我们需要的文件。

作为例子,导出的 Queries.csv 对于我们的 ColBERT 博客文章看起来如下:

Analytical table displaying website query metrics sorted by position with columns for clicks, impressions, and CTR.
我们 ColBERT 博客文章的一些点击量最高的 Google 搜索查询。根据 GSC,在过去 4 个月中,与这篇博客文章相关的查询总共有 481 个。

tag方法论

好的,数据都准备好了,我们想要做什么呢?

我们想检查查询和文章之间的语义关系(表示为 Q(q,d)Q(q,d)Q(q,d))是否与它们的展示次数和点击次数相关。展示次数可以被视为 Google 的秘密检索模型 G(q,d)G(q,d)G(q,d)。换句话说,我们想使用公开的方法,如词频、嵌入模型和重排模型来建模 Q(q,d)Q(q,d)Q(q,d),看看它是否能近似这个私有的 G(q,d)G(q,d)G(q,d)。

点击次数呢?点击次数也可以被视为 Google 秘密检索模型的一部分,但受到不确定的人为因素影响。直观上来说,点击次数更难建模。

但无论如何,让 Q(q,d)Q(q,d)Q(q,d) 与 G(q,d)G(q,d)G(q,d) 对齐都是我们的目标。这意味着当 G(q,d)G(q,d)G(q,d) 值高时我们的 Q(q,d)Q(q,d)Q(q,d) 应该得分高,当 G(q,d)G(q,d)G(q,d) 值低时得分应该低。这可以通过散点图更好地可视化,将 Q(q,d)Q(q,d)Q(q,d) 放在 X 轴,G(q,d)G(q,d)G(q,d) 放在 Y 轴。通过绘制每个查询的 QQQ 和 GGG 值,我们可以直观地看出我们的检索模型与 Google 的检索模型的对齐程度。叠加一条趋势线可以帮助揭示任何可靠的模式。

在展示结果之前,让我先总结一下这个方法:

  • 我们想要检查查询和文章之间的语义关系是否与 Google 搜索上的文章展示量和点击量相关。
  • Google 用来确定文档与查询相关性的算法(G(q,d)G(q,d)G(q,d))是未知的,点击背后的因素也是未知的。但是,我们可以从 GSC 观察到这些 GGG 值,即每个查询的展示量和点击量。
  • 我们的目标是看看公开的检索方法(Q(q,d)Q(q,d)Q(q,d)),如词频、嵌入模型和重排序模型是否是 G(q,d)G(q,d)G(q,d) 的良好近似。这些方法都提供了独特的方式来对查询-文档相关性进行评分。从某种程度上说,我们已经知道它们不是很好的近似;否则,每个人都可以成为 Google。但我们想了解它们差距有多大。
  • 我们将在散点图中可视化结果以进行定性分析。

tag实现

完整的实现可以在下面的 Google Colab 中找到。

Google Colab

我们首先使用 Jina Reader API 爬取博客文章的内容。通过基本的大小写不敏感计数来确定查询的词频。对于嵌入模型,我们将博客文章内容和所有搜索查询打包成一个大请求,像这样:[[blog1_content], [q1], [q2], [q3], ..., [q481]],并将其发送到 Embedding API。在获得响应后,我们计算第一个嵌入与所有其他嵌入之间的基于余弦的相似度,以获得每个查询的语义分数。

对于重排序模型,我们以一种略微特殊的方式构建请求:{query: [blog1_content], documents: [[q1], [q2], [q3], ..., [q481]]} 并将这个大请求发送到 Reranker API。返回的分数可以直接用作语义相关性。我称这种构建方式特殊,是因为通常重排序器用于给定查询对文档进行排序。在这种情况下,我们颠倒了文档和查询的角色,使用重排序器对给定文档的查询进行排序。

请注意,在 Embedding 和 Reranker API 中,你不必担心文章的长度(查询总是很短,所以没什么问题),因为这两个 API 都支持最多 8K 的输入长度(实际上,我们的 Reranker API 支持"无限"长度)。所有操作都可以在几秒钟内完成,你可以从我们的网站获得一个免费的 1M token API 密钥来进行这个实验。

tag结果

最后是结果。但在展示之前,我想先演示基准图是什么样子。由于我们将要使用散点图和 Y 轴上的对数刻度,可能很难想象完美的好和非常糟糕的 Q(q,d)Q(q,d)Q(q,d) 会是什么样子。我构建了两个简单的基准:一个是 Q(q,d)Q(q,d)Q(q,d) 等于 G(q,d)G(q,d)G(q,d)(真实值),另一个是 Q(q,d)∼Uniform(0,1)Q(q,d) \sim \mathrm{Uniform}(0,1)Q(q,d)∼Uniform(0,1)(随机)。让我们看看它们的可视化结果。

tag基准

Blue curve graph on black background, plotting "Impressions (Log Scale)" vs "Groundtruth" from 0.0 to 1.0.
真实值基准,其中语义分数 Q(q,d)Q(q,d)Q(q,d) 是基于展示量值的最小-最大归一化。这被视为 G(q,d)G(q,d)G(q,d) 的完美预测器。
Black scatter plot with purple dots, logarithmic axes labeled "Impressions (Log Scale)" and "10º," and a horizontal line labe
随机基准,其中语义分数 Q(q,d)Q(q,d)Q(q,d) 是从 (0,1) 的均匀分布中随机抽取的数字。多次运行会得到略微不同的结果。这被视为 G(q,d)G(q,d)G(q,d) 的非常糟糕的预测器。

现在我们对"完美好"和"非常糟糕"的预测器有了直观认识。记住这两个图,以及以下对视觉检查非常有用的要点:

  • 好的预测器的散点图应该从左下到右上遵循对数趋势线。
  • 好的预测器的趋势线应该完全跨越 X 轴和 Y 轴(我们稍后会看到一些预测器并不是这样的)。
  • 好的预测器的方差区域应该较小(表现为趋势线周围的不透明区域)。

接下来,我将一起展示所有图表,每个预测器有两个图:一个显示它对展示量的预测效果,一个显示它对点击量的预测效果。注意,我汇总了所有 7 篇博客文章的数据,所以总共有 3620 个查询,即每个散点图中有 3620 个数据点。

请花几分钟时间上下滚动并仔细查看这些图表,比较它们并注意细节。让这些信息沉淀一下,在下一节中,我将总结发现。

tag词频作为预测器

Graph showing relationship between 'Term Frequency' and 'Impressions' on a log scale, with values and a visible trend curve o
Black background graph with a curved line, plotting Term Frequency on x-axis and Clicks on a logarithmic y-axis.

tag嵌入模型作为预测器

Scatterplot with logarithmic Impressions vs. Embedding Score, points in shades of purple, and a labeled axis.
Scatter plot graph with an x-axis labeled 'Embedding Score' and a y-axis as 'Clicks (Log Scale)', displaying a power-law dist

tag重排序模型作为预测器

Scatterplot with a black background, labeled axes 'Reranker Score' and 'Impressions (Log Scale)', and lines of best fit among
Graph with black background, 'Reranker Score' on x-axis, 'Clicks (log scale)' on y-axis, and scattered data points.

tag发现

让我们将所有图表放在一起以便比较。以下是一些观察和解释:

不同预测器对展示量的预测。每个点代表一个查询,X 轴代表查询-文章语义分数;Y 轴是从 GSC 导出的展示次数。

展示了不同预测器对点击量的影响。每个点代表一个查询,X 轴表示查询与文章的语义相似度得分;Y 轴是从 GSC 导出的点击次数。

  • 总的来说,所有点击量的散点图比它们对应的展示量散点图都更稀疏,尽管它们基于相同的数据。这是因为,如前所述,高展示量并不能保证获得点击。
  • 词频图比其他图更稀疏。这是因为来自 Google 的大多数真实搜索查询在文章中并不会完全出现,所以它们的 X 值为零。然而,它们仍然有展示量和点击量。这就是为什么你会看到词频趋势线的起点不是从 Y 轴零点开始。人们可能会认为当某些查询在文章中多次出现时,展示量和点击量可能会增加。趋势线证实了这一点,但趋势线的方差也在增加,表明缺乏支持数据。总的来说,词频不是一个好的预测指标。
  • 将词频预测器与嵌入模型和重排序模型的散点图相比,后者看起来好得多:数据点分布更好,趋势线的方差看起来也比较合理。但是,如果你将它们与上面显示的真实趋势线相比,你会注意到一个显著的差异——两条趋势线都不是从 X 轴零点开始的。这意味着即使你从模型获得很高的语义相似度,Google 也很可能给你零展示量/点击量。在点击散点图中这一点变得更加明显,其起点比相应的展示量图更靠右。简而言之,Google 并没有使用我们的嵌入模型和重排序模型——这并不令人惊讶!
  • 最后,如果我必须在这三个预测器中选择最好的,我会选择重排序模型。原因有两个:
    • 与嵌入模型的趋势线相比,重排序模型在展示量和点击量上的趋势线在 X 轴上分布更广,具有更大的"动态范围",这使它更接近真实趋势线。
    • 分数在 0 到 1 之间分布良好。需要注意的是,这主要是因为我们最新的 Reranker v2 模型经过了校准,而我们在 2023 年 10 月发布的早期 jina-embeddings-v2-base-en 没有经过校准,所以你可以看到它的值分布在 0.60 到 0.90 之间。话说回来,这第二个原因与其对 G(q,d)G(q,d)G(q,d) 的近似程度无关;只是因为一个经过校准的、介于 0 和 1 之间的语义分数更容易理解和比较。

tag最终思考

那么,这对 SEO 有什么启示呢?这会如何影响你的 SEO 策略?老实说,影响不大。

上面这些花哨的图表说明了一个你可能已经知道的基本 SEO 原则:写用户在搜索的内容,并确保它与热门查询相关。如果你有一个像 Reranker V2 这样好的预测器,也许你可以把它作为某种"SEO 副驾驶"来指导你的写作。

或者不要这样。也许只是为了知识而写作,为了提升自己而写作,而不是为了取悦 Google 或任何人。因为如果你不写作就只是思考,你只是以为自己在思考而已。

类别:
技术文章
rss_feed
办公室
location_on
加利福尼亚州桑尼维尔
710 Lakeway Dr, Ste 200, 桑尼维尔, CA 94085, 美国
location_on
德国柏林(总部)
Prinzessinnenstraße 19-20,10969 柏林,德国
location_on
中国北京
中国北京市海淀区西大街48号6号楼5层
location_on
中国深圳
中国深圳市赋安科技大厦4楼402
搜索底座
读取器
向量模型
重排器
深度搜索
分类器
切分器
API 文档
获取 Jina API 密钥
速率限制
API 状态
公司
关于我们
联系销售
新闻
实习生计划
加入我们
open_in_new
下载Logo
open_in_new
条款
安全
条款及条件
隐私
管理 Cookie
email
Jina AI © 2020-2025.