ChatGPT 为何更愿意引用某个页面?140 万条提示词研究
ChatGPT 为回答单个查询会检索数十个 URL,但根据我们的研究,最终只引用其中约 50%。为什么一个页面获得引用,而另一个明明被 AI 检索到,却什么都没得到?
人们早已习惯 ChatGPT 回答里那些带编号的小蓝链接,它们为回答提供外部信息支撑,也就是引用来源。
ChatGPT 为回答单个查询会检索数十个 URL,但根据我们的研究,最终只引用了其中约 50%。
为什么一个页面获得引用,而另一个明明被 AI 检索到,却什么都没得到?
根据 AI 专家 Dan Petrovic 所做的研究,ChatGPT 检索结果时,每一条返回都带有页面标题、一段简短摘要或概括、URL,以及一个 ID 编号。
ChatGPT 用这些数据判断哪些页面值得打开,并最终在回答中引用。
在 ChatGPT 打开并阅读页面实际内容之前,存在一个把关层。这一初步决策中,标题、摘要和 URL 起主要作用。
这项研究想弄清楚:究竟是什么在影响引用?页面的检索数据与用户查询之间的语义相似度越高,是否就越可能被引用?哪些字段最重要?人类可读的 URL 是否比晦涩难懂的 URL 表现更好?
为找出答案,我们在 Ahrefs 数据科学家 Xibeijia Guan 的帮助下,分析了 2025 年 2 月的 140 万条 ChatGPT 5.2 提示词(桌面端)。
在进入研究结果之前,需要先了解 ChatGPT 实际如何收集来源——并非所有 URL 都以相同方式进入系统。
并非所有来源都生而平等:ref_type 层级
ChatGPT 检索结果时,用一个名为 [['Text', 'ref_type']] 的内部字段对来源分类,本质上就是给该 URL 来自哪个检索渠道贴一个标签。
我们发现了五个类别:search(搜索)、news(新闻)、reddit、youtube 和 academia(学术)。
它们的引用率极其不均衡:
通用的“search”索引占据主导,无论数量还是引用率都是如此,最终被 ChatGPT 引用的 URL 中有 88% 直接来自 search。
若想被 ChatGPT 引用,就必须进入那个 search 筛选池,这意味着内容需要有排名。
这并非新信息。如今多数人都已知道排名会起作用,但能有更多数据佐证这一点还是不错的。
另一方面,像 YouTube(例如 youtube.com)和 Academia(例如 arXiv.org)这样的专门垂直领域,虽被大规模引入,却几乎从不作为真正的引用被呈现。
单独的“Reddit”和“YouTube”[['Text', 'ref_types']] 很可能代表额外的结果,即通过专门的 API 集成引入的那些,叠加在网页搜索本已返回的内容之上。
这就是这些渠道数量如此之高的原因:ChatGPT 用一条单独的 Reddit 和 YouTube 内容流来补充搜索结果。
这一点对理解后续分析的其余部分非常关键。
平均而言,ChatGPT 每条提示词会引入约 16.57 个被引用的 URL 和约 16.58 个未被引用的 URL。
但由于 Reddit 占了未引用池的 67.8%,任何对“被引用 vs. 未被引用”的整体比较,实际上都是在把搜索结果与 Reddit API 的输出作比较,并非同类项之间的对比。
因此,这项研究尽可能按 [['Text', 'ref_type']] 拆分分析,以避免这种失真。
67.8% 的未被引用 URL 来自 Reddit
这大概是数据集中最引人注目的发现。
Reddit 在 ChatGPT 的检索系统中拥有专属的 [['Text', 'ref_type']],我们的数据集里它有超过 1600 万个数据点。
然而它的引用率只有 1.93%。
与此同时,所有未被引用的 URL 中有 67.8% 来自 Reddit。
换句话说:ChatGPT 大量借助 Reddit 来理解话题、判断共识、构建上下文,却几乎从不给 Reddit 记功。
它向人群学习,然后引用另一个机构。
未被引用的页面拥有 3 倍的检索数据——但事情没这么简单……
如前所述,ChatGPT 检索搜索结果时,每一条返回都带着一组字段,包括标题、URL,有时还有一段摘要(snippet),即存储在 ChatGPT 检索数据中的一小段页面内容摘录。
我们原本预期,这些字段被填充得越多,引用率就越高。
乍看之下,整体数据似乎讲述了另一个故事:未被引用的页面在 ChatGPT 检索数据中拥有的已填充字段实际上更多。
未被引用的 URL 有 摘要(snippets)的比例为 14.81%,而被引用的 URL 只有 4.36%;它们携带发布日期的可能性也高得多(92.72% vs. 35.98%)。
我们差点就把这当作一个发现写进报告,好在最终没有。
深入探究后发现,这一差异几乎完全是数据构成造成的假象,由 Reddit 和 ChatGPT 检索流程的机制所致。
因为未引用池中绝大多数是 Reddit(67.8%),而通过 API 拉取的 Reddit 内容天然带有 [['Text', 'pub_date']] 元数据,所以那个 92.72% 的数字是 Reddit 造成的假象,而不是关于 ChatGPT 如何评估一般网页的信号。
摘要(snippet)上的差距则有不同解释。根据 David McSweeney 关于 ChatGPT 检索过程的研究,模型一旦决定引用某个 URL,就会放弃摘要字段(那段简短的内容摘录),转而打开完整页面。
因此,这并非 ChatGPT 偏爱没有摘要的页面。被引用页面的摘要比例之所以低,很可能是检索流程运作方式带来的副产品。
把数据仅限定为“search”的 [['Text', 'ref_type']],剔除 Reddit、news、YouTube 等之后,图景就清晰得多:
在 search 垂直领域内,两组数据的摘要数据几乎都不存在,它不是一个可用的信号。发布日期的百分比更接近了,但未被引用的 search 页面仍然比被引用的页面略更可能携带 [['Text', 'pub_date']](49% vs 33.79%)。
我们最初在被引用与未被引用 URL 之间看到的差异,似乎被数据构成和检索机制扭曲了。任何信号,如果确实存在,都埋没在噪声之下。
诚实的结论是:仅凭这些数据,无法就摘要或发布日期字段是否在引用中扮演有意义的角色得出强有力的结论。
有一点值得指出:这个问题很可能也适用于其他引用研究。任何比较“被引用 vs. 未被引用” URL 的研究,如果不考虑这些 URL 来自哪里,就有可能把数据的偶然特性误当成真实的规律。
标题需要与 fan-out 查询语义相关
为判断什么内容“可被引用”,ChatGPT 会估算相关性,这个过程有时被描述为“语义评分”,用来判断某篇文章与某个查询是否相关。
由于 ChatGPT 是闭源模型,无法确切看到它在内部如何判断相关性。
因此,这项研究使用由开源模型生成的向量嵌入来计算余弦相似度,以此量化和近似 ChatGPT 可能的运作方式。
ChatGPT 会把 URL 与它自己的“fanout 查询”匹配,即它(根据用户的种子提示词)在内部生成的、用来搜寻具体事实的子问题。
数据证实,标题与 fanout 查询的相关性是引用中的一个重要因素:
- 提示词 vs. 被引用 URL 的标题:
- 提示词 vs. 未被引用 URL 的标题:
- Fanout 查询 vs. 被引用 URL 的标题(最大匹配*): 0.656
箱线图清楚地说明了问题。在所有 [['Text', 'ref_types']] 中,被引用的 URL 其标题与原始提示词之间的相似度始终更高:
改用 fanout 查询而不是原始提示词来比较时,差距进一步拉大,这进一步印证:创作与 ChatGPT 内部子问题相关的内容,才是真正驱动其筛选的因素:
把范围专门限定到 search 的 [['Text', 'ref_type']] 时,这种规律更加明显。被引用的页面明显更相关,而未被引用的分布则显著下降:
我们还发现,URL 采用自然语言式 slug 的搜索结果,其引用率高达 89.78%,没有采用这类 slug 的为 81.11%。
归根结底,如果 URL 和标题与 AI 内部的 fanout 查询在语义上不一致,就更不可能被引用。
被引用的页面平均已有 500 天历史(而且仍在被选中)
众所周知,更新的内容更容易被 AI 引用,我们针对 1700 万条引用的研究也支持这一点。我们发现,ChatGPT 引用的 URL 比 Google 的自然搜索结果新 458 天,这是我们测试过的所有平台中最强的新鲜度偏好。
这项研究并不与那一结论相矛盾,但确实增加了一层细微差别。
例如,观察 search 索引时,被引用的页面年龄跨度很大,中位数约为 500 天(约 1.3 年),有些被引用的页面甚至超过 2700 天(约 7.4 年)。
年龄中位数实际上远低于上面链接的早期新鲜度研究(7 月时为 958 天,而本数据集为 500 天),这表明 ChatGPT 的引用偏好在向更“年轻”倾斜。
话虽如此,我们也发现未被引用的页面绝大多数都非常年轻。
所以,在单条提示词的检索集合内,倾向于被引用的是那些更老、更“根深蒂固”的页面,而最“新鲜”的内容往往被丢弃。
换句话说,ChatGPT 偏好新鲜内容,但更倾向于引用相对“更老”的内容。听起来有悖直觉,但两件事可以同时成立。
在更广泛的 AI 引用总体中,与 Google 的结果相比,甚至与它自己仅一年前的引用偏好相比,ChatGPT 确实偏向更新。
但在给定的检索集合内,光有新鲜度还不够,相关性仍然承担主要作用。
一个能很好地匹配 fanout 查询的新页面会被引用。一个不能做到这一点的页面会被检索到,却被忽略。
同样值得指出的是,search 的 [['Text', 'ref_type']] 中未被引用的页面池(约 300 万)远小于被引用的组(约 2300 万),这限制了我们解读年龄差距的把握程度。
新鲜度最起作用的地方是“news(新闻)”。
在这个类别中,被引用与未被引用页面的标题相关性得分几乎相同:
AI 无法仅凭相关性做出决定,因此它默认采用一个时间性的决胜因素:页面年龄。被引用的新闻页面更年轻:
对于新闻类查询,即使被引用与未被引用页面之间的相关性得分相近,更年轻的页面仍具有明显优势。
这一切对“可被引用”意味着什么
这 140 万条提示词勾勒出了一幅相当清晰的图景。ChatGPT 是一位激进的编辑。它偏爱自己的通用搜索索引,用语义相似度来挑选和引用来源,并把 Reddit 当作一本它不好意思承认自己读过的教科书。
但数据也给我们上了一堂关于分析需谨慎的课。
如果未被引用池被单一来源类型主导、且该类型有其自身的检索机制,那么“被引用”与“未被引用”URL 之间的整体比较就可能产生误导。
最初看起来像是一个悖论——优化更差的页面反而被更多地引用——结果却是数据集构成的问题。
如果没有按 [['Text', 'ref_type']] 拆分,我们很可能会把这个结论搞得大错特错。
归根结底,获得引用的页面,是那些标题和内容与 ChatGPT 在幕后所提问题相匹配、并通过正确检索渠道浮出水面的页面。